QUIC
干什么用的
TCP 的可靠机制长在内核里,改一次要等全世界的操作系统升级,十年都动不了。
★★★ QUIC 把序号、重传、拥塞控制全搬进用户态,再把 TLS 握手和连接握手合成一次 —— 升级只要换个浏览器版本。
★★ 它选 UDP 不是因为 UDP 好,而是因为只有 UDP 过得去:防火墙和 NAT 只认 TCP/UDP,新造一个协议号在路上就被丢了。
★★★ 和 TCP 差在哪(五处)
· 握手 1 个 RTT ↔ TCP+TLS 要 2~3 个;
· 丢一个包 只堵它自己那条流 ↔ TCP 只有一条字节流,全卡住;
· 连接身份 是连接 ID ↔ TCP 是四元组,换个网就是另一条连接;
· 加密 强制,连自己的头都加密 ↔ TCP 的 TLS 是外挂的一层;
· 住在哪 用户态的库 ↔ TCP 在内核,改一次等十年。
★★★ 每一条都对应右边一个场景或帧图上的一格。
★ 常见误解
★★★ 「QUIC 用 UDP,所以不可靠」 —— 可靠机制照样有,只是搬到了 UDP 载荷里面,由两端的 QUIC 库自己做。
★★★ 「HTTP/3 就是 HTTP/2 换个传输层」 —— 队头阻塞是被真正解决的,因为多路复用下移到了传输层。
★★ 「加密是可选的」 —— QUIC 强制加密,而且连大部分头都加密。