Archivenetworking
Head-of-Line Blocking, From TCP to HTTP/3
One lost packet can stall unrelated requests if they share an ordered stream. Multiplexing only helps if it is real.
- Published
- Reading time
- 1 min read
Head-of-line (HOL) blocking happens when an earlier item delays later ones that could have proceeded independently.
The layers
- TCP: bytes are delivered in order. A lost segment stalls everything behind it, even data for other requests, until retransmission.
- HTTP/1.1: pipelining was HOL-blocked by design; browsers opened six connections instead.
- HTTP/2: multiplexes streams over one TCP connection — solving application-level HOL but inheriting TCP-level HOL.
- HTTP/3/QUIC: streams are independent at the transport level, so a lost packet blocks only its stream.
The practical result
HTTP/2 helps on low-loss networks and can hurt on lossy mobile links, where one dropped packet freezes all streams. That is a large part of why QUIC exists.
Takeaway: ask which layer is ordered. Multiplexing above an ordered transport does not remove the queue; it just hides it.