HTTP/3 与 QUIC 协议详解

· 1 分钟阅读

译自: HTTP/3 From A To Z: Core Concepts · 作者:Robin Marx

为什么需要 HTTP/3?

HTTP/2 已经解决了 HTTP/1.1 的队头阻塞问题(Head-of-Line Blocking),但仍遗留一个根本性瓶颈:TCP 层的队头阻塞

HTTP/2 在单条 TCP 连接上复用多个流(stream),但一旦某个 TCP 数据包丢失,所有流都必须等待该包重传,即便其他流的数据已经就绪。

QUIC 的解决思路

QUIC(Quick UDP Internet Connections)是 Google 设计、IETF 标准化的传输层协议,运行在 UDP 之上。它在传输层实现了流的独立性:

  • 独立流:每条流的丢包只阻塞该流本身,其他流不受影响
  • 连接迁移:使用连接 ID(Connection ID)而非四元组标识连接,网络切换(如 Wi-Fi → 4G)时连接不中断
  • 0-RTT / 1-RTT 握手:内置 TLS 1.3,首次握手 1-RTT,再次连接可达 0-RTT

HTTP/3 = HTTP over QUIC

HTTP/3 将 HTTP 语义直接映射到 QUIC 流,彻底消除了 TCP 层的队头阻塞。主要变化:

HTTP/2HTTP/3
传输层TCPQUIC (UDP)
TLSTLS 1.2/1.3 (独立)TLS 1.3 (内置)
队头阻塞存在(TCP 层)消除
连接迁移不支持支持

部署现状

主流浏览器(Chrome、Firefox、Safari)已全面支持 HTTP/3。Cloudflare、Google、Facebook 等 CDN 和大型平台已广泛部署。

检测方式:

curl --http3 -I https://cloudflare.com

响应头中 alt-svc: h3=":443" 表示服务端支持 HTTP/3。

小结

HTTP/3 不是对 HTTP/2 的小修补,而是从传输层开始的重新设计。对于高丢包率环境(移动网络、卫星网络)收益尤为显著。