HTTP实用指南复习| 青训营笔记

51 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第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文件以外其他类型的内容
    请求与响应格式如图所示: 批注 2022-08-02 185934.png 缺点:采用的是非持久连接,对每一次请求/响应建立并拆除一次连接,效率慢,网络传输负担大

HTTP 1.1(标准化协议)

  • 新增PUT,DELETE,CONNECT,OPTIONS,TRACE,PATCHD等方法 image.png 上图是应用菜鸟教程上对各个方法的描述
  • 连接复用(支持长连接)
  • 引入了更多的缓存控制策略
  • 引入range,允许值请求资源某个部分
  • 引入host,实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点
    缺点:传输的是明文,安全性不足,因此而有了HTTPS进行加密,这里就不详细描述了

HTTP 2.0(更优异的表现)

主要是针对http1.1效率方面进行了优化。

  • 二进制协议(HTTP2.0基于二进制格式进行解析,原先基于文本格式进行解析)
  • 首部压缩(HTTP2.0在客户端和服务器端会跟踪和存储之前发送的键值对,对于相同的数据,不再通过每次请求和响应发送;就是说请求一发送了所有的头部字段,第二个请求则只需要发送差异数据,这样可以减少冗余数据,降低开销)
  • 服务器推送(服务器会顺便把一些客户端需要的资源一起推送到客户端,如在响应一个页面请求中,就可以随同页面的其它资源)
  • 多路复用(在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应)

HTTP 3.0

个人了解不多,其采用了基于UDP的传输层协议QUIC