QUIC 与 TLS 1.3 的关系
QUIC 把 TLS 1.3 内嵌进传输层:握手与加密协商一体化,密钥在传输层直接可用,因此首次连接约 1 个 RTT、复连可做到 0 RTT。它在用户态实现可靠传输、按流独立重传,某条流丢包不会阻塞其他流,天生没有队头阻塞问题。QUIC 跑在 UDP 443 上,是 HTTP/3 的传输基础。
基本信息
| 承载方式 | UDP 443(也可用其他端口,443 最为常见) |
|---|---|
| 握手开销 | 首次约 1 RTT,会话恢复可做到 0 RTT |
| 加密范围 | 除少数用于路由的字段外全部加密,中间设备可见性更低 |
| 多路复用 | 流之间独立,丢包只影响单条流 |
| 连接迁移 | 用连接 ID 标识,切换网络不断连 |
| 服务端支持 | Nginx 1.25 起支持 QUIC,久经考验的路径是 CDN 边缘 |
典型使用场景
- 移动端弱网优化:减少握手往返并避免队头阻塞
- 切换网络的场景(Wi-Fi 与蜂窝之间来回)依赖连接迁移不断连
- CDN 边缘开启 HTTP/3,让支持的浏览器自动使用 QUIC
- 排查「开了 HTTP/3 但没效果」:确认路径是否放行 UDP 443
- 企业出口做流量治理时,评估加密载荷对监控可见性的影响
- 对比 HTTP/2 与 HTTP/3 在同一链路上的首屏耗时
最小示例
最小示例
curl --http3 -sI https://cloudflare-quic.com | head -3 # 需 curl 编译时启用 HTTP/3
openssl s_client -connect example.com:443 -alpn h3 </dev/null # 用 h3 做 ALPN 协商
curl -sI --http2 https://example.com | head -1 # 对比回落到 HTTP/2 的表现
# 观察协议版本:浏览器开发者工具里看 Protocol 列是否显示 h3要点与影响
| 要点 | 说明 | 实际影响 |
|---|---|---|
| 握手 | 首次 1 RTT,复连可 0 RTT | 连接建立更快,首包延迟更低 |
| 多路复用 | 流级独立,丢包不阻塞其他流 | 弱网与高丢包链路上体验提升明显 |
| 连接迁移 | 连接 ID 支持换网不断连 | 移动网络切换时不中断下载 |
| 全量加密 | 中间设备难以解析载荷 | 防火墙只能按端口与流量特征判断 |
| UDP 依赖 | 被限速或封禁即回落 TCP | 功能正常但性能收益消失 |
排障第一步是确认路径是否放行 UDP 443。企业防火墙常常只放行 TCP 443,结果浏览器静默回落 HTTP/2,用户侧看不出任何异常。