这是我参与「第四届青训营 」笔记创作活动的的第3天
本篇文章主要针对HTTP各个版本变化进行复习
HTTP 超文本传输协议(Hyper Text Transfer Protocol)
HTTP位于TCP/IP五层模型(物理层,数据链路层,网络层,传输层,应用层)中的应用层,是一种简单的请求-响应协议,它通常运行在TCP之上。
版本
HTTP 0.9(单行协议)
http0.9比较早期,协议较为简单(GET /xxx.html),现在难以满足现有要求
HTTP 1.0(构建可拓展性)
- 增加了Header,响应含增加了状态码,
- 新增HEAD,POST方法
- 支持传输HTML文件以外其他类型的内容
请求与响应格式如图所示:缺点:采用的是非持久连接,对每一次请求/响应建立并拆除一次连接,效率慢,网络传输负担大
HTTP 1.1(标准化协议)
- 新增PUT,DELETE,CONNECT,OPTIONS,TRACE,PATCHD等方法
上图是应用菜鸟教程上对各个方法的描述
- 连接复用(支持长连接)
- 引入了更多的缓存控制策略
- 引入range,允许值请求资源某个部分
- 引入host,实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点
缺点:传输的是明文,安全性不足,因此而有了HTTPS进行加密,这里就不详细描述了
HTTP 2.0(更优异的表现)
主要是针对http1.1效率方面进行了优化。
- 二进制协议(HTTP2.0基于二进制格式进行解析,原先基于文本格式进行解析)
- 首部压缩(HTTP2.0在客户端和服务器端会跟踪和存储之前发送的键值对,对于相同的数据,不再通过每次请求和响应发送;就是说请求一发送了所有的头部字段,第二个请求则只需要发送差异数据,这样可以减少冗余数据,降低开销)
- 服务器推送(服务器会顺便把一些客户端需要的资源一起推送到客户端,如在响应一个页面请求中,就可以随同页面的其它资源)
- 多路复用(在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应)
HTTP 3.0
个人了解不多,其采用了基于UDP的传输层协议QUIC