定义:HTTP 超文本传输协议,是一个属于应用层的面向对象的协议,HTTP 协议运行在TCP之上。
特点:
-
明文传输
-
客户端与服务器端都无法验证对方的身份;
-
无连接:协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。
-
无状态:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
发展史:
-
http1.0:
-
对比0.9,添加了put、post等命令;
-
每次请求都要建立重新建立TCP连接。
-
-
http1.1:
-
默认建立持久连接,并使用流水线的方式(在响应之前发送请求);
-
新增缓存(强缓存、协商缓存);
-
错误状态码(410:某个资源被永久删除;409:请求的资源与资源的当前状态存在冲突)
-
允许请求部分资源,添加range头部,返回码为206 ---> 断点续传的基础
-
-
http2.0:
-
以二进制进行传输,相比1.1中的以明文文本传输更高效;为什么??---> 为了TCP二进制分帧
-
头部信息部分进行压缩;
-
主动push (请求html时,可以并行的将其中的脚本文件返回到客户端,触发浏览器的缓存机制,再次请求资源时,根据浏览器的缓存策略取资源);
-
多路复用(在响应之前发送请求)
-
状态码:
-
1XX:服务器正在处理,还未响应
-
2xx 成功,200
-
3xx重定向
-
301永久重定向
-
302临时重定向
-
304资源未改变 协商缓存
-
-
4xx客户端错误
-
404资源没找到
-
403没有权限被拒绝
-
401未授权
-
-
5xx服务端错误
-
500:服务器遇到了不知道如何处理的情况
-
503:服务器没有准备好处理请求。 常见原因是服务器因维护或重载而停机。
-
常用字段:
-
请求:Accept系列(Accept-charset、Accept-encoding、Accept-language、Authorization、Host、User-Agent、Content-type)
-
响应:Content系列(Content-charset、Content-encoding、Content-language、Content-type、Expires、Etag、Last-Modified、Etag)