HTTP/2 vs HTTP/3: Multiplexing Over TCP vs QUIC

Overview HTTP/2 and HTTP/3 both let a browser send many requests over one logical connection, but they diverge at the transport layer. HTTP/2 rides on TCP, inheriting its single ordered byte stream and its packet-loss stalls; HTTP/3 replaces that with QUIC over UDP, giving each stream independent loss recovery and letting connections survive network changes. Comparison Diagram HTTP/2 (TCP)HTTP/3 (QUIC/UDP)Stream AStream BStream CStream AStream BStream CSingle TCP connectionOne lost packet stalls every streamIndependent QUIC streamsLoss stalls only its own streamX = lost packet dashed = blocked/waiting Comparison Table Aspect HTTP/2 HTTP/3 Transport protocol Runs over TCP Runs over QUIC (built on UDP) Connection handshake Separate TCP handshake, then TLS handshake (1-2 RTT) TLS 1.3 is integrated into the QUIC handshake, often 1-RTT or 0-RTT on resumption Stream multiplexing Multiple streams share one ordered TCP byte stream Each stream is a distinct, independently-sequenced QUIC stream Head-of-line blocking A single lost TCP segment stalls delivery of every stream until it’s retransmitted Loss on one stream only stalls that stream; others keep flowing Header compression HPACK QPACK Connection identity and migration Bound to the source/destination IP and port 4-tuple; changing networks breaks it Bound to a connection ID; survives IP or network changes, e.g. Wi-Fi to cellular Congestion control and loss recovery Implemented in the OS kernel’s TCP stack Implemented in user-space by the QUIC library, easier to iterate on Network and middlebox support Ubiquitous; TCP port 443 is rarely blocked UDP is sometimes blocked or throttled by firewalls, requiring a TCP fallback Key Differences HTTP/2 multiplexes streams inside a single TCP connection, while HTTP/3 gives each stream its own loss-recovery in QUIC TCP’s in-order delivery means one dropped packet causes head-of-line blocking across all HTTP/2 streams; HTTP/3 avoids this by design HTTP/3 folds the transport and TLS handshakes together for faster 0-RTT setup on reconnection QUIC’s connection ID lets HTTP/3 sessions survive a client’s IP or network change without reconnecting HTTP/3 depends on UDP reaching the server, so restrictive middleboxes can force a fallback to HTTP/2 When to Use Each HTTP/2 ...

August 1, 2026 · 3 min · 445 words · jeonck