引入 QUIC 及实践

QUIC (Quick UDP Internet Connections) 是一种基于 UDP 封装的的安全、可靠传输协议,他的目标是取代 TCP 并自包含 TLS 成为标准的安全传输协议。下图是 QUIC 在协议栈中的位置,基于 QUIC 承载的 HTTP 协议进一步被标准化为 HTTP3

QUIC 出现的背景

在 QUIC 之前, TCP 承载了 90% 多的互联网流量,似乎也没什么问题,那么为什么会出现革命者 QUIC 呢? 这主要是因为发展了几十年的 TCP 面临“协议僵化问题”,表现如下:

  • 网络设备支持 TCP 时的僵化,对一些防火墙或者 NAT 设备,如 TCP 引入了新的 OPTION, 有可能会被认为是攻击从而丢包,导致新特性无法在老的网络设备中工作
  • HTTP + TLS 的首次握手还是需要花费多次 RTT,仍有优化空间
  • 有序字节流引出的 队头阻塞(Head-of-line blocking),使得HTTP2的多路复用能力大打折扣
  • 基于TCP四元组确定一个连接,这种诞生于有线网络的设计,并不适合移动状态下的无线网络,这意味着IP地址的频繁变动会导致TCP连接、TLS会话反复握手

QUIC 与 TCP 对比

QUIC协议的产生与今天的互联网应用场景和传输性能密切相关。在互联网和HTTP发展的过程中,HTTP底层协议大体上来说基本没变。但是,随着海量移动设备推高互联网流量,越来越多的应用场景需要低延迟、高吞吐、应用QoS感知的网络传输等,原来的HTTP协议在提供流畅、高效的Web访问方面越来越难以满足应用需求。

QUIC的一切特性始于“构建在UDP之上”, 这意味着可以不关心内核或者不用深入了解内核的开发,也可以灵活地调整可靠传输机制和拥塞控制算法等,这极大地方便了各种对传输QoS敏感的应用,比如实时音视频传输、在线游戏等

Last Updated:
Contributors: isno