Skip to main content...
Networking: Life of a Packet
25 min

Day 19: HTTP/1.1 vs HTTP/2 vs HTTP/3

HTTP's evolution: solving the same problem three times

Each HTTP version exists because the previous one hit a real, specific limitation — not because someone wanted a bigger version number.

HTTP/1.1

Text-based, one request per TCP connection by default (though keep-alive lets you reuse a connection sequentially). Requests on the same connection are processed strictly in order — if one is slow, everything queued behind it waits (head-of-line blocking). Browsers worked around this by opening multiple parallel connections per domain, which has its own overhead (each pays its own slow-start cost, Day 16).

HTTP/2

Introduces multiplexing: many requests and responses interleave over a *single* TCP connection using binary framed streams, so one slow response no longer blocks unrelated ones on the same connection. Also adds header compression (HPACK) and server push (largely unused in practice).

HTTP/3

Replaces TCP entirely with QUIC, built on UDP. This solves HTTP/2's remaining problem: because HTTP/2 still runs over one TCP connection, a single lost *packet* stalls every multiplexed stream waiting on TCP's in-order delivery (TCP-level head-of-line blocking). QUIC implements its own reliability per-stream, so one lost packet only stalls the stream it belongs to.

The Four Questions pattern, applied inline

HTTP/2 solved HTTP/1.1's application-level head-of-line blocking → but HTTP/2 introduced a new, subtler transport-level head-of-line blocking because it still sits on top of TCP → HTTP/3 solves that by leaving TCP behind entirely and building reliability into QUIC per-stream. Each version's trade-off directly motivated the next.

Key terms

Head-of-line blocking
A slow or lost unit of data blocking unrelated data queued behind it from being processed.
Multiplexing
Interleaving multiple logical streams of data over a single connection.
QUIC
HTTP/3's transport protocol, built on UDP with per-stream reliability instead of TCP.

Why did HTTP/3 replace TCP with QUIC (over UDP) instead of just improving HTTP/2 further?

We use cookies

We use cookies to enhance your browsing experience, serve personalized content, and analyze our traffic. By clicking "Accept All", you consent to our use of cookies. Learn more

    Day 19: HTTP/1.1 vs HTTP/2 vs HTTP/3 | RBTechIconX