Skip to content

http1.0、http1.1、http2.0 协议的区别

http1.0

它的特点是每次请求和响应完毕后都会销毁 TCP 连接,同时规定前一个相应完成后才能发送下一个请求。这样做会有两个问题:

  1. 无法复用连接:每次请求都要创建新的 TCP 请求,完成三次握手和四次挥手,网络利用率低。
  2. 队头阻塞:如果前一个请求被某种原因阻塞了,会导致后续请求无法发送。

http1.1

http1.1http1.0 的改进版,它做出了以下改进:

  1. 长连接http1.1 允许在请求时增加请求头 connection: keep-alive,这样便允许后续的客户端请求在一段时间内复用之前的 TCP 连接
  2. 管道化:基于长连接的基础,管道化可以不等第一个请求响应继续发送后面的请求,但响应的顺序还是按照请求的顺序返回。
  3. 缓存处理:新增响应头 cache-control,用于实现客户端缓存。
  4. 断点传输:在上传/下载资源时,如果资源过大,将其分割为多个部分,分别上传/下载,如果遇到网络故障,可以从已经上传/下载好的地方继续请求,不用从头开始,提高效率

http2.0

http2.0 进一步优化了传输效率,它主要有以下改进:

  1. 二进制分帧:将传输的消息分为更小的二进制帧,每帧有自己的识别序号,即便被随意打乱也能在另一端正常组装
  2. 多路复用:基于二进制分帧,在同一个域名下所有访问都是从同一个 TCP 连接走,并且不再有队头阻塞问题,也无须遵守响应顺序。
  3. 头部压缩http2.0 通过字典的方式,将头部中常见的信息替换为更少的字符,极大的减少了头部的数据量,从而实现更小的传输量。
  4. 服务器推送http2.0 允许服务器直接推送消息给客户端,无须客户端明确的请求。