UDP
May 8, 2024About 1 min
UDP
QUIC - 实现可靠传输
「如何基于 UDP 协议实现可靠传输?」
很多同学第一反应就会说把 TCP 可靠传输的特性(序列号、确认应答、超时重传、流量控制、拥塞控制)在应用层实现一遍。
实现的思路确实这样没错,但是有没有想过,既然 TCP 天然支持可靠传输,为什么还需要基于 UDP 实现可靠传输呢?这不是重复造轮子吗?
所以,我们要先弄清楚 TCP 协议有哪些痛点?而这些痛点是否可以在基于 UDP 协议实现的可靠传输协议中得到改进?
在之前这篇文章:TCP 就没什么缺陷吗? (opens new window),我已经说了 TCP 协议四个方面的缺陷:
- 升级 TCP 的工作很困难;
- TCP 建立连接的延迟;
- TCP 存在队头阻塞问题;
- 网络迁移需要重新建立 TCP 连接;
现在市面上已经有基于 UDP 协议实现的可靠传输协议的成熟方案了,那就是在应用层的 QUIC 协议,已经应用在了 HTTP/3。
这次,聊聊 QUIC 是如何实现可靠传输的?又是如何解决上面 TCP 协议四个方面的缺陷?