分类:network| 发布时间:2025-01-01 15:44:00
在计算机网络中,队头阻塞(Head-of-line blocking,简称 HOL 阻塞)是一种限制性能的现象,指的是数据包队列中的第一个数据包被阻塞,导致后续数据包无法被及时处理。 这种情况可能发生在 乱序传输的场景下,以及 HTTP 管道化(HTTP pipelining) 中处理多个请求时。
当按顺序排列的数据包以无序方式到达时,就会发生无序传送。 这可能是由于数据包采用不同的路径,或数据包被丢弃并重新发送而发生的。 HOL 阻塞会显著增加数据包重新排序。
HTTP/1.1 中的一种 队头阻塞形式是浏览器中允许的并行请求数已用完,后续请求需要等待前一个请求完成。
HTTP/2 通过请求多路复用解决了这个问题,它消除了应用层的 HOL 阻塞,但传输 (TCP) 层仍然存在 HOL。
HTTP/3 是基于 QUIC/UDP 实现的协议,具有更灵活的流控制机制,不会因为一个流的丢包而影响其他流的数据传输,从而避免了 TCP 中的队头阻塞问题。