HTTP/3与QUIC:基于UDP的零RTT连接
HTTP/2的最后问题:TCP队头阻塞 应用层多路复用 vs TCP层阻塞 HTTP/2解决了应用层队头阻塞: Stream 1: [帧1] [帧2] [帧3] Stream 2: [帧1] [帧2] [帧3] 但TCP层仍然有问题: TCP传输:[S1-帧1][S2-帧1][S1-帧2]【丢失】[S2-帧2]... ↑ TCP丢包重传,阻塞所有Stream! 即使Stream 2的数据已到达,也要等待Stream 1的丢包重传完成 QUIC协议:UDP上的可靠传输 核心思想 QUIC = UDP + TCP的可靠性 + TLS + HTTP/2多路复用 传统协议栈: 应用层 HTTP/2 安全层 TLS/SSL 传输层 TCP 网络层 IP QUIC协议栈: 应用层 HTTP/3 传输层 QUIC(在用户空间实现) 网络层 UDP 为什么选择UDP? TCP的限制: 内核实现,难以更新(Windows XP仍在用,无法升级TCP) 握手固定,无法优化 队头阻塞无法解决 UDP的优势: 没有队头阻塞 用户空间实现(QUIC协议栈在应用层) 灵活升级 QUIC核心特性 1. 0-RTT连接建立 TCP + TLS 1.2:3-RTT 客户端 → 服务器: SYN(TCP握手1) 客户端 ← 服务器: SYN-ACK(TCP握手2) 客户端 → 服务器: ACK(TCP握手3) 客户端 → 服务器: Client Hello(TLS握手1) 客户端 ← 服务器: Server Hello + Certificate(TLS握手2) 客户端 → 服务器: Finished(TLS握手3) 客户端 → 服务器: HTTP请求 总延迟:3-RTT QUIC(首次连接):1-RTT ...