HTTP/3 最大的变化是把传输层从 TCP 换成了 QUIC。很多文章一上来就丢概念,这篇文章换个思路:先看时序图,再谈为什么。
TCP 队头阻塞的问题
TCP 层保证字节流有序,任何一个包丢了,后面已经到达的数据也要排队等待重传。对于多路复用来说,一条逻辑流的丢包会拖慢所有流。
QUIC 在传输层直接以流为单位管理可靠性:一条流丢包只阻塞它自己,其他流照常交付。
0-RTT 是怎么来的
第一次连接需要 1-RTT 完成加密协商;再次连接时,客户端可以用缓存的服务器配置直接携带业务数据发出。代价是存在重放风险,所以只适用于幂等请求。
小结
QUIC 把连接管理、流控、加密全部揉进用户态的 UDP 实现里,换来更快的握手与更好的移动网络体验。