TCP队头阻塞(Head-of-Line Blocking)问题
问题描述
TCP是面向字节流的可靠传输协议,要求数据按严格顺序到达接收端。若某个数据包在传输过程中丢失、延迟或乱序,会导致以下问题:
- 后续数据被阻塞:接收端必须等待丢失/延迟的包重传并正确接收后,才能将后续已到达的数据交付给应用层。
- 性能下降:即使后续数据已到达,也会在接收缓冲区中积压,无法被及时处理,增加整体延迟。
示例:
假设发送方发送了数据包1、2、3,若包1丢失,即使包2和包3已到达,接收端必须等待包1重传成功后,才能将包2和3交给应用层。
根本原因
- 单一路径顺序传输:TCP将所有数据视为单一字节流,依赖严格的顺序性保证可靠性。
- 重传机制的限制:丢包必须通过重传解决,而重传过程会阻塞后续数据的处理。
QUIC如何解决队头阻塞问题?
QUIC(Quick UDP Internet Connections)是基于UDP的现代传输协议,通过以下设计彻底消除队头阻塞: