QUIC 是什么
QUIC 是基于 UDP 的通用传输协议,它把 TLS 1.3 集成进自身的握手流程,因此建连与加密几乎同步完成。它提供 0-RTT 与 1-RTT 建连、无队头阻塞的多路复用,以及连接迁移能力(切换网络时连接不断)。HTTP/3 就运行在 QUIC 之上。对运维而言最大的变化是它跑在 UDP 上:防火墙与安全组必须放行 UDP,否则客户端会静默回退。
基本信息
| 传输 | UDP,HTTP/3 默认使用 443,同时保留 TCP 443 用于回退 |
|---|---|
| 加密 | 握手即 TLS 1.3,传输层首部也受保护,可观测的明文字段很少 |
| 特性 | 无队头阻塞的多路复用、0-RTT 建连、连接迁移 |
| 部署前置 | 防火墙与安全组放行 UDP,中间设备策略需提前确认 |
| 观测限制 | 抓包看不到明文首部,分析需要协议专用工具 |
| 服务端支持 | 需要较新版本的 Nginx 并配置 QUIC 监听 |
典型使用场景
- 弱网优化:移动端在 WiFi 与蜂窝之间切换时依靠连接迁移避免重连
- 首屏加速:0-RTT 建连减少握手往返,对短请求收益明显
- 高并发页面:无队头阻塞让多路复用真正发挥作用
- 灰度上线:先在部分域名启用,重点观察回退比例与错误率
- 排查未启用:确认 UDP 是否被防火墙或中间设备拦截
检查与测试
检查与测试
# 确认 curl 是否带 HTTP/3 支持
curl -V | grep -i http3
# 用 HTTP/3 发起请求,观察是否成功与响应头
curl --http3 -sI https://example.com | head -5
# 服务端需要较新版本 nginx 并配置 QUIC 监听
# UDP 没有握手过程,端口可达性通常要靠业务请求实测与 TCP 方案对照
| 维度 | QUIC(HTTP/3) | TCP 承载(HTTP/2) |
|---|---|---|
| 传输层 | UDP | TCP |
| 多路复用 | 无队头阻塞 | TCP 层仍可能队头阻塞 |
| 建连 | 0-RTT 与 1-RTT | TCP 与 TLS 需要分别建连 |
| 连接迁移 | 支持,基于连接标识 | 不支持,四元组变化即断连 |
| 部署难点 | 需放行 UDP,中间设备兼容性 | 网络设备普遍支持 |
QUIC 的连接迁移依赖连接标识而不是四元组,负载均衡与日志分析需要能识别对应字段,否则会把同一条连接当成多条。
只放行 TCP 443 时 HTTP/3 会静默回退到 HTTP/2,客户端不报错,现象就是「没启用」,容易在错误方向上反复排查。
云防火墙与安全组对 UDP 的策略通常更严格,上线前把 UDP 443 单独纳管测试一遍,比上线后从回退指标里发现问题更省时间。