HTTP1.1 / HTTP2.0 / HTTP3.0

139 阅读1分钟

HTTP1.1 — 1997

主要特点:

  • 一次一份:发送一次请求,需要等到请求响应才能发送下一个请求
  • 默认持久连接
  • 明文传输
  • 首部不压缩
  • 支持管线化技术,用以解决队头阻塞问题,但因开发难度大而没有得到很好的应用

缺点:一旦有一份文件丢失,则会造成http队头阻塞。

应对措施

  1. 把 js、css 写入到 html 中。
  2. 把图片编码,以字符的形式嵌入到 html 中
  3. 把多个图片集合在一起,组成一张精灵图(雪碧图)

HTTP2 — 2015

主要特点

  • 实现了多路复用

    • 请求和响应报文分为不同的帧
    • 帧里添加了流标识符,使得帧不必按顺序到达
  • 压缩首部

    • 使用 HPACK 算法
      • 在服务器和浏览器都保存一张静态只读的表,存放状态码等数据
  • HTTP2 的帧不是 ASCII 编码的报文,而是二进制的帧,使得解析方便

  • 支持服务器推送

    • 在响应一个文件后,提前发送可能需要的文件

缺点:没有解决 TCP 层面的队头阻塞

HTTP3 — 2019

特点

  • 把 TCP 握手和 TLS 握手整合成 QUIC 握手
  • 默认加密传输
  • 基于 UDP 协议