Technology

QUIC 不是 TCP 的继任者,而是一次基础设施绕行

如果把 QUIC 只写成“Google 的 TCP 替代品”,就会错过真正值得讨论的产品问题:传输协议的演进,如何被网络基础设施的兼容性约束。Google 并没有让 TCP 消失,也没有证明 UDP 天生更快。真正发生的事情是:当 TCP 的扩展越来越容易被防火墙、NAT、代理和负载均衡器误判时,QUIC 选择把新的传输能力放到 UDP 之上,用一条更容易部署的路径重新实现可靠传输。

这不是对 TCP 的否定,而是对互联网现实的妥协。

TCP 的瓶颈是“改动能否穿过中间设备”

TCP 已经运行了几十年。它的核心机制非常成熟,但互联网的实际拓扑早已不是两台主机直接通信。企业网关、运营商设备、云负载均衡器和安全产品都会观察 TCP 的标志位、选项、序列号和连接状态。久而久之,一些设备不再只转发 TCP,而是依赖它们熟悉的具体形态。

这就是协议僵化。一个新选项即使符合标准,也可能在某条路径上被丢弃、改写或降级。TCP Fast Open 的经验很典型:它能减少建连等待,但实现必须准备 fallback,因为发送端无法预先知道中间设备是否接受特殊选项。SACK、ECN、Multipath TCP 等扩展也都面对类似的部署现实,只是程度不同。

为什么不直接发明新的 IP 传输协议

SCTP 说明了另一条路的困难。它支持多宿主、多流和消息边界,但它使用独立的 IP 协议号,不是 TCP,也不是 UDP。很多防火墙、NAT 和负载均衡器没有为它建立普遍的处理路径,结果是协议设计很漂亮,公网可达性却不稳定。

QUIC 因此选择 UDP 作为外层。UDP 本身不提供可靠性、拥塞控制和连接语义,但它已经是互联网设备普遍认识的传输入口。QUIC 在 UDP 负载内部重新实现确认、重传、流量控制、拥塞控制、多路复用和 TLS 1.3 握手。RFC 9000 定义了 QUIC 的传输协议,HTTP/3 再把 HTTP 映射到 QUIC 流上。

QUIC 解决的不只是握手延迟

QUIC 的价值常被简化成“比 TCP 快”。更准确的说法是,它把几个长期被 TCP 和操作系统边界束缚的能力放到了同一个可演进的协议栈里。

  • 连接建立:QUIC 将传输握手与 TLS 握手结合,已有会话可以使用 0-RTT,但 0-RTT 数据必须考虑重放风险。
  • 多路复用:HTTP/2 在单条 TCP 连接上复用多个请求,一个丢包可能阻塞多个流;QUIC 的流级别传输可以减少这种队头阻塞。
  • 连接迁移:连接由 Connection ID 标识,客户端从 Wi-Fi 切到移动网络时,不必简单地把连接绑定在旧的四元组上。
  • 可演进性:关键传输状态经过加密,中间设备不应依赖 ACK 范围、包号或流状态的具体编码。

加密也是为了防止下一次僵化

QUIC 的加密当然首先是安全要求,但它还有一个工程目标:减少中间设备对传输内部细节的依赖。TCP 时代,设备可以长期观察明文选项和状态,后来这些观察逐渐变成“必须保持兼容”的假设。QUIC 让网络设备主要看到 UDP 流量和必要的路径信息,传输层内部更容易继续迭代。

这并不意味着 QUIC 绕过了所有安全设备,也不意味着运营商无法管理 UDP。企业网络仍然可以按 IP、端口、流量特征和策略控制 QUIC,UDP 也可能被限速或阻断。QUIC 只是把“允许一种新的传输协议”变成了“允许现有 UDP 入口承载新的加密协议”,部署门槛相对更低。

绕开 TCP 的代价

QUIC 不是免费的升级。TCP 有成熟的内核实现、网卡卸载、GRO/GSO/TSO、零拷贝和监控工具。QUIC 大量运行在用户空间,发送、加密、确认、重传和拥塞控制都需要协议实现自己承担。高并发场景要认真评估 CPU、内存、定时器、连接数和内核旁路能力。

可观测性也会变化。抓 TCP 包可以直接查看 SEQ、ACK、Window 和 SACK;QUIC 的核心状态被加密后,工程团队需要依赖 qlog、内核统计、代理侧指标、应用 tracing 和端到端延迟分解。迁移 HTTP/3 前,不能只看浏览器面板里的“协议是 h3”,还要确认 CDN、WAF、服务端库和监控链路都能解释异常。

把协议选择变成成本与故障预算问题

对产品团队而言,协议选择不应是技术潮流投票。传统 API、内网服务或强依赖 TCP 诊断工具的系统,继续使用 TCP 完全合理。TCP 仍然是最广泛、最容易排障的可靠传输协议。QUIC 更适合高延迟移动网络、连接迁移明显、请求并发较高,或者需要较快演进传输层能力的场景。

部署时应保留 HTTP/2 over TCP 的 fallback,分别测量首字节时间、握手时间、重传、CPU、失败率和不同网络的真实收益。不要因为 HTTP/3 在实验网络更快,就直接删除 TCP 入口。

真正被放弃的是什么

Google 放弃的不是 TCP,而是“继续在 TCP 内部自由增加复杂能力”的假设。TCP 越成功,围绕它建设的基础设施越多;基础设施越多,改变它的协调成本越高。QUIC 选择 UDP,是为了借用一个普遍入口,在用户空间重新组合可靠传输、加密和多路复用。

下一代协议的难题从来不只是设计出更好的算法,还要让真实网络愿意转发它。QUIC 的启示也不只是速度,而是:当旧协议被生态固化时,最可行的升级路径往往不是强迫所有中间设备理解新语义,而是减少它们必须理解的内容。

进一步核对:RFC 9293(TCP)RFC 9000(QUIC)RFC 9114(HTTP/3)