HTTP/3(QUIC)与 HTTP/2 对比要点¶
HTTP/2 把多路复用带到 TCP 之上,而 HTTP/3 把多路复用与 TLS 直接放到 QUIC(UDP)之上,目标是减少时延并降低丢包带来的队头阻塞。
1. 连接建立与握手¶
- HTTP/2:TCP 三次握手 + TLS 握手(通常 1-2 RTT)
- HTTP/3:QUIC 把传输与 TLS 1.3 结合,可更快完成握手,并支持 0-RTT(有重放风险)
2. 队头阻塞(HoL Blocking)¶
- HTTP/2:应用层多路复用,但底层 TCP 丢一个包会阻塞整个连接上的所有 stream
- HTTP/3:每个 stream 在 QUIC 层独立确认与重传,丢包影响更局部
3. 网络与设备兼容性¶
- 企业网络/防火墙可能对 UDP 更严格
- NAT/负载均衡需要支持 QUIC 相关特性(如连接迁移、四元组变化)
4. 观察与排障¶
建议同时打开:
- 客户端侧:浏览器 netlog / curl 的
--http3 - 服务端侧:QUIC 握手失败原因、TLS 报错、0-RTT 命中率
- 网络侧:UDP 丢包、MTU、路径变更频率