概念定义
QUIC 是基于 UDP 实现的通用传输协议。它按流提供可靠有序的交付、流控与拥塞控制,并把加密作为握手的一部分。由于排序是按流而非按连接进行,一个丢失的包只阻塞它所在的流。由于握手把传输与 TLS 1.3 合二为一,新连接使用更少的往返,恢复的连接可立即发送数据。连接身份是连接 id 而非 IP 与端口对,从而支持迁移。
为什么重要
TCP 背负着单一字节流、内核态实现以及与 TLS 分离的握手这些包袱。QUIC 在一次设计中解决其三:按流排序消除跨流队头阻塞,用户态实现让它快速演进,集成的握手削减延迟。它还能抵抗中间设备造成的固化,因为它被加密,从而可以演进 TCP 无法添加的特性。
工程实践
确保 UDP 端到端被允许,因为许多网络与中间设备仍会阻断或限速它,并保留 TCP 回退。为高吞吐下用户态加密的 CPU 开销做预算,并测试负载均衡器如何处理连接 id 与迁移。有意识地固定协议与库版本,因为两者都在演进,并在真实的易丢包网络上验证,QUIC 在那里相对 TCP 收益最大。