HTTP/3 & QUIC(HTTP/3 与 QUIC 传输协议)

Definition

HTTP/3 是应用层 HTTP 协议的第三代官方标准(RFC 9114),构建于全新的传输层协议 QUIC(Quick UDP Internet Connections,RFC 9000) 之上。

它规定 / 它负责:

  • 不直接使用 TCP,而是使用运行在 UDP 之上的 QUIC,以避免 TCP 字节流层面的跨流队头阻塞。
  • 在用户空间实现集成了 TLS 1.3 安全加密、流多路复用、拥塞控制与连接迁移的自包含传输层。

简单理解:

HTTP/2 解决了应用层的流水线队头阻塞,但仍受 TCP 字节流影响;HTTP/3 通过 QUIC 的独立流机制避免跨流的 TCP 队头阻塞,并支持 1-RTT 建连和连接迁移。


系统位置 / 协议栈演进对照表

网络分层 (Layer)HTTP/1.1 协议栈HTTP/2 协议栈HTTP/3 协议栈
应用层 (Application)HTTP/1.1 (文本语法)HTTP/2 (HTTP 语义)HTTP/3 (HTTP 语义)
分帧/控制层 (Framing) (混合在文本中)二进制分帧层 (Binary Framing)内置在 QUIC 内部
安全加密层 (Security)TLS (可选,常见于 HTTPS)TLS (实际 Web 部署通常使用 HTTPS)TLS 1.3 (由 QUIC 集成)
传输层 (Transport)TCP (可靠字节流)TCP (单连接多路复用)QUIC (UDP 上的独立流)
基础网络传输 (Lower)IP (网络层)IP (网络层)UDP (无状态数据报) IP

核心分工:

  • QUIC (传输层):替代 TCP + TLS 1.3。负责在 UDP 之上提供可靠传输、单调递增包序号 (Packet Number)、连接标识 (Connection ID) 与流复用。
  • HTTP/3 (应用层):替代 HTTP/2 语义层。负责 HTTP 请求方法、状态码、QPACK 首部压缩与资源映射。

核心机制与物理优势

1. 避免 TCP 跨流队头阻塞 (Avoiding TCP Cross-Stream HOL)

  • TCP 局限:HTTP/2 中所有流共用单条 TCP 连接,若发生单个 TCP 包丢失,TCP 协议栈会将整条连接挂起等待重传。
  • QUIC 突破:QUIC 在 UDP 之上为每个流(Stream)维护独立的接收队列。流 A 丢包仅阻塞流 A,流 B 数据到达后可立刻交付上层,流与流之间在传输层彻底解耦。

2. 传输层与安全加密极速融合 (1-RTT / 0-RTT)

  • 传统握手:TCP 3 次握手 (1 RTT) + TLS 1.3 握手 (1 RTT) = 2 RTT。
  • QUIC 握手:将传输层建连与 TLS 1.3 加密握手合并为 1 RTT;对于历史复连客户端,支持 0-RTT 极速数据发送。

3. 单调递增 Packet Number(消除重传歧义)

  • 放弃 TCP 易混淆的字节偏移 Seq,使用严格单调递增的 Packet Number(重传包赋予全新 PN)。
  • 使得 RTT 采样与拥塞控制计算极其精准,消除了重传歧义(Retransmission Ambiguity)。

4. 连接迁移 (Connection Migration)

  • 放弃传统的 TCP 四元组 (源 IP, 源端口, 目的 IP, 目的端口) 绑定。
  • 采用传输层自包含的 Connection ID (CID) 标识连接。当手机从 Wi-Fi 切换到 5G 导致 IP 改变时,CID 保持不变,连接无缝延续不中断。

协议全维度对比

维度HTTP/1.1HTTP/2HTTP/3
传输层协议TCPTCPQUIC(运行在 UDP 之上)
应用层队头阻塞有 (按序响应限制)已消除 (二进制分帧)已消除
传输层队头阻塞存在 (TCP 单连接丢包会影响全连接)避免 TCP 跨流阻塞 (各流独立交付,但仍共享连接级拥塞控制)
建连握手时延2~3 RTT2~3 RTT1 RTT 甚至 0-RTT
网络切换/迁移中断重连中断重连无缝迁移 (基于 Connection ID)
解析效率文本扫描 (慢)二进制分帧 (快)二进制 QPACK (极快)

Summary

HTTP/3 将 HTTP 语义映射到 QUIC;QUIC 在 UDP 之上提供加密、可靠的按流交付和连接迁移,从而避免 TCP 字节流造成的跨流队头阻塞,但不意味着所有阻塞和网络故障都被消除。


Related Concepts(关联概念)