The Stall Problem
Head of line blocking happens when one delayed item holds up everything queued behind it. HTTP1 suffered it because a connection handled one request at a time. HTTP2 fixed that at the application layer with multiplexed streams, but a deeper problem remained.
The TCP Layer Catch
HTTP2 runs many streams over a single TCP connection. TCP guarantees one ordered byte stream, so if a single packet is lost, TCP holds back every later byte until that packet is retransmitted. Even unrelated streams stall behind one missing segment.
How QUIC Fixes It
QUIC tracks each stream's data separately within UDP. A lost packet only blocks the stream it belonged to, and other streams keep flowing.
- HTTP2 removed application layer blocking but kept TCP transport blocking.
- QUIC removes transport blocking by isolating loss per stream.
Key idea
HTTP2 multiplexing still suffered TCP head of line blocking, but QUIC isolates packet loss to a single stream so unrelated requests are no longer stalled.