HTTP/3(QUIC)代理
什么是 HTTP/3 和 QUIC
HTTP/3 是 HTTP 协议的第三个主要版本,于 2022 年标准化(RFC 9114)。它与 HTTP/2 的关键区别在于用 QUIC 传输协议取代了 TCP。
QUIC(Quick UDP Internet Connections)是 Google 开发的传输协议,运行在 UDP 之上。它把 TCP 与 TLS 的功能合并到同一层,从而加快连接建立速度,并消除队头阻塞(head-of-line blocking)问题。
HTTP/3 对代理的优势
1. 消除队头阻塞
在 HTTP/2 中,丢失一个 TCP 包会阻塞该连接内的所有 stream。在 HTTP/3 中,每个 stream 相互独立 — 某个 stream 丢包不会影响其他 stream。
对代理而言,这意味着:即使某个请求遇到丢包,通过同一代理发出的其他请求仍可无延迟地继续工作。
2. 更快的连接建立(0-RTT)
重新连接到已知服务器时,HTTP/3 可以用 0 次往返建立连接。对于反复访问同一批服务器的代理来说,这会显著降低延迟。
对比:
- TCP + TLS 1.3:新建连接需 2-3 RTT
- QUIC:新建连接 1 RTT,恢复连接 0 RTT
3. 连接迁移
QUIC 使用 Connection ID,而不是绑定 IP:端口。即使 IP 地址或网络接口发生变化,连接依然保持。
对移动代理来说这是革命性的:在 Wi-Fi 与 4G 之间切换时连接不会中断。
4. 内置加密
QUIC 不仅加密数据,还加密协议元数据的大部分内容。这加大了 DPI(Deep Packet Inspection)以及中间方流量分析的难度。
HTTP/3 如何通过代理工作
直接 QUIC 代理
代理直接转发 QUIC 流量(UDP)。这需要 UDP 代理支持,而大多数传统 HTTP 代理并不具备。
CONNECT-UDP(RFC 9298)
一种通过 HTTP 代理隧道传输 UDP 的新方法。它让 QUIC 连接可以穿过不原生支持 QUIC 的 HTTP 代理。
HTTP/3 前端、HTTP/2 后端
代理从客户端接收 HTTP/3,但用 HTTP/2 或 HTTP/1.1 连接服务器。这是目前最常见的方案。
完整 HTTP/3
代理在两个方向上都支持 HTTP/3。目前仍然少见,但正在快速发展。
代理对 HTTP/3 的当前支持情况
| 代理 | HTTP/3 前端 | HTTP/3 后端 | 状态 |
|---|---|---|---|
| Caddy | 支持 | 实验性 | 成熟支持 |
| Nginx | 支持(1.25+) | 不支持 | 仅前端 |
| HAProxy | 开发中 | 开发中 | 已列入计划 |
| Envoy | 支持 | 支持 | 积极开发中 |
| Traefik | 支持(3.0+) | 实验性 | 基础支持 |
| Cloudflare | 支持 | 支持 | 完整支持 |
HTTP/3 与绕过封锁
绕过封锁的优势
- UDP 流量 — 许多 DPI 系统是针对 TCP 设计的,对 UDP 的过滤能力较弱。
- 元数据加密 — 使流量内容更难被判定。
- 伪装成 QUIC — 大量正规服务(Google、YouTube)都在使用 QUIC。
- 连接迁移 — IP 变化时连接仍然保持。
局限
- UDP 封锁 — 有些网络会封锁除 DNS 之外的全部 UDP 流量。
- QUIC 指纹 — 可以通过 QUIC 参数识别客户端。
- SNI — 在初始 QUIC handshake 中,SNI 以明文传输(ECH 可以解决这一点)。
QUIC 指纹识别
与 HTTP/2 指纹类似,反机器人系统开始分析 QUIC 参数:
- Transport Parameters — 连接的初始参数
- Initial DCID Length — 初始 Connection ID 的长度
- Preferred Address — 迁移支持
- Token — 0-RTT 行为
代理必须正确模拟目标浏览器的 QUIC 指纹。
实用建议
面向代理开发者
- 在 TCP 之外增加 UDP 支持。
- 实现 CONNECT-UDP,以兼容 HTTP/3 客户端。
- 使用 quiche(Cloudflare)、Quinn(Rust)、ngtcp2 等库来实现 QUIC。
面向代理用户
- 确认您的服务商是否支持 HTTP/3。
- 在绕过 DPI 方面,QUIC 代理可能比基于 TCP 的方案更有效。
- 注意并非所有目标网站都支持 HTTP/3。
HTTP/3 代理的未来
HTTP/3 正不可避免地成为主流协议。目前已有超过 30% 的网络流量使用 HTTP/3。主要趋势包括:
- 所有主流代理将在 2025-2026 年前加入完整的 HTTP/3 支持。
- MASQUE(RFC 9484)将把基于 HTTP/3 的代理标准化。
- 连接迁移将使移动代理更加稳定。
- 元数据加密(ECH + QUIC)将进一步提升隐私性。
结论
HTTP/3 代理是代理技术的下一个进化步骤。QUIC 协议解决了 TCP 的根本问题(队头阻塞、握手慢),并为移动代理和绕过封锁开辟了新的可能。向 HTTP/3 的迁移已经开始,代理行业正在积极适应。
