HTTP 1.0 / 2.0 / 3.0 演进与对比


HTTP(HyperText Transfer Protocol)协议是互联网的基石。从 1996 年的 HTTP/1.0 到如今逐渐普及的 HTTP/3.0,每一次演进都旨在解决性能瓶颈,提升用户体验。

HTTP/1.x:奠定基础与队头阻塞

HTTP/1.0

  • 短连接:每次请求都需要经历“建立连接 - 传输数据 - 关闭连接”的过程,开销极大。
  • 无状态:服务器不记得之前的请求。

HTTP/1.1 (目前应用最广泛)

  • 长连接 (Keep-Alive):默认开启,允许在同一个 TCP 连接上发送多个请求。
  • 管道化 (Pipelining):理论上可以并行发送请求,但响应必须按顺序返回,这导致了 队头阻塞 (Head-of-Line Blocking):如果第一个请求处理慢,后面的请求都会被阻塞。

HTTP/2.0:二进制时代的到来

2015 年发布的 HTTP/2 极大提升了传输效率,核心改进包括:

  1. 二进制分帧 (Binary Framing):不再是纯文本,而是将数据切分为更小的二进制帧,这是多路复用的基础。
  2. 多路复用 (Multiplexing):在同一个 TCP 连接上,可以交错发送多个请求和响应。彻底解决了 HTTP 层的队头阻塞
  3. 头部压缩 (HPACK):使用索引表压缩 Header,减少冗余数据的传输。
  4. 服务器推送 (Server Push):服务器可以主动向客户端推送资源(如 CSS/JS),无需等待请求。

HTTP/3.0:弃用 TCP,拥抱 QUIC

虽然 HTTP/2 解决了应用层的队头阻塞,但 TCP 层的队头阻塞 依然存在(如果一个 TCP 包丢失,整个连接都会等待重传)。

HTTP/3 放弃了 TCP,转而基于 UDP 协议开发了 QUIC

  1. 解决 TCP 队头阻塞:由于基于 UDP,不同流之间互不影响,单个包丢失只会影响该流,不会阻塞其他数据。
  2. 更快的连接建立 (0-RTT):集成了 TLS 1.3,将握手过程合并,最快可以在 0 毫秒内开始传输数据。
  3. 连接迁移:基于“连接 ID”而非 IP+端口。当你从 Wi-Fi 切换到 4G 时,连接不会断开,实现无缝切换。

核心特性对比表

特性HTTP/1.1HTTP/2.0HTTP/3.0
底层协议TCPTCPUDP (QUIC)
传输形式纯文本二进制帧二进制帧
多路复用无(有队头阻塞)有(解决应用层阻塞)有(解决所有队头阻塞)
头部压缩有 (HPACK)有 (QPACK)
握手延迟高 (TCP + TLS)高 (TCP + TLS)低 (0-RTT / 1-RTT)
连接迁移不支持不支持支持

总结

  • HTTP/1.1 解决了连接复用,但受限于文本协议和队头阻塞。
  • HTTP/2.0 通过二进制分帧实现了多路复用,极大压榨了 TCP 的性能。
  • HTTP/3.0 则通过重构底层传输协议(QUIC),解决了 TCP 固有的延迟和阻塞问题。

随着现代网络对实时性和移动性的要求越来越高,HTTP/3.0 正在成为未来的绝对主流。