https://zhuanlan.zhihu.com/p/43787334
https://juejin.im/entry/5981c5df518825359a2b9476
https://mp.weixin.qq.com/s/B7jnJUkAFIxVmQpv1cOaYg
1、HTTP 历史
主要经理过 http0.9、 http1.0、http1.1、http2.0 这几个历史的版本,可根据需要补充下以往版本的解决的问题和存在的问题
2、QUIC 协议概览
QUIC 是 http3.0的前身,QUIC 基于 UDP 协议,并整合了TCP、TLS和HTTP/2的优点。
3、QUIC的优点
3.1 0RTT建立连接:正式建立连接是还是需要 1RTT 的,后面的传输都是直接发送的。
3.2 连接迁移:TCP 连接基于四元组(源 IP、源端口、目的 IP、目的端口),切换网络时至少会有一个因素发生变化,导致连接发生变化。而QUIC 基 于 Connection ID,即使 IP 或者端口发生变化,只要 Connection ID 没有变化,那么连接依然可以维持。
3.2 解决队头阻塞:HTTP/1.1 和 HTTP/2 都存在队头阻塞问题,而QUIC基于 packet 加密、传输、解密,不需要按处理顺序数据。
3.4 拥塞控制算法优化:TCP 的拥塞控制包含慢启动、拥塞避免、快速重传、快速恢复。QUIC 重新实现了 TCP 协议的 Cubic 算法进行拥塞控制,并在此基础上做了改进。
3.5 流量控制:TCP 会对每个 TCP 连接进行流量控制,流量控制的意思是让发送方不要发送太快,要让接收方来得及接收,不然会导致数据溢出而丢失,TCP 的流量控制主要通过滑动窗口来实现的。可以看出,拥塞控制主要是控制发送方的发送策略,但没有考虑到接收方的接收能力,QUIC流量控制是对这部分能力的补齐。
4、总结
QUIC 丢掉了 TCP、TLS 的包袱,基于 UDP,并对 TCP、TLS、HTTP/2 的经验加以借鉴、改进,实现了一个安全高效可靠的 HTTP 通信协议。凭借着 0 RTT 建立连接、平滑的连接迁移、基本消除了队头阻塞、改进的拥塞控制和流量控制等优秀的特性,QUIC 在绝大多数场景下获得了比 HTTP/2 更好的效果。
网友评论