HTTP/1.1(1997):文本协议,默认长连接(Keep-Alive)、支持管道化(实际基本未启用)。主要问题是队头阻塞——一个连接同一时刻只能处理一个请求-响应,浏览器被迫开 6 个并发连接,且头部重复、无压缩。

HTTP/2(2015):基于 SPDY,核心改进:

  • 二进制分帧:报文拆成帧,帧可交错传输
  • 多路复用:单连接上并发多个流,解决了应用层队头阻塞
  • HPACK 头部压缩服务器推送(实践中已少用)、流优先级

HTTP/3(2022):改用基于 UDP 的 QUIC 协议:

  • 解决 HTTP/2 遗留的 TCP 层队头阻塞(TCP 丢包会卡住所有流,QUIC 的流相互独立)
  • 握手更快(1-RTT 甚至 0-RTT),TLS 1.3 内建于协议
  • 连接迁移:以连接 ID 标识连接,Wi-Fi 切蜂窝网络不断连

易错点:HTTP/2 多路复用只解决 HTTP 层队头阻塞,TCP 层仍在;HTTP/3 并非替代而是并存,通过 Alt-Svc 协商升级。

追问方向:QUIC 为什么自己实现可靠传输、HTTP/2 推送为何被弃用。