Understanding Head-of-Line Blocking Through Accurate Simulation
A browser requests 4 images (4 chunks each = 16 total
packets).
Each image is shown as a colored quadrant. Watch how each protocol
handles multiplexing and packet loss.
Each request must complete before the next begins. To fetch 4 images, the browser sends 4 sequential requests. This is slow regardless of packet loss — the constraint is request serialization, not transport reliability.
Multiplexes all streams over one TCP connection. Normally fast! But TCP guarantees byte-order delivery. If packet #5 is lost, packets #6-16 sit in the buffer unusable — even if they belong to different streams. This is TCP head-of-line blocking.
QUIC provides stream-level ordering. Each stream maintains its own sequence. Lost packet in Stream A? Streams B, C, D continue immediately. The buffer only blocks within a single stream, eliminating cross-stream HOL blocking.