Fundamentals 15 min read

HTTP History, QUIC Overview, and Key Features of HTTP/3

This article traces the evolution of HTTP from its 1991 inception through HTTP/1.1, HTTP/2, and HTTP/3, explains the QUIC protocol’s design and advantages, and details connection establishment, congestion control, flow control, and head‑of‑line blocking mitigation techniques used in modern web transport.

Top Architect
Top Architect
Top Architect
HTTP History, QUIC Overview, and Key Features of HTTP/3

The article begins with a brief timeline of HTTP development: HTTP/1.1 appeared in 1991, Google introduced SPDY over TCP in 2009, QUIC was proposed in 2013, HTTP/2 was standardized in 2015, and HTTP/3 (HTTP over QUIC) arrived in 2018.

QUIC (Quick UDP Internet Connections) is a UDP‑based transport protocol that combines the speed of UDP with the reliability features of TCP, TLS, and HTTP/2. It serves as the foundation for HTTP/3, allowing HTTP semantics to run directly over QUIC.

RTT Connection Establishment – HTTP/2 requires three RTTs for a full handshake (or two RTTs with TLS 1.3 and session resumption). In contrast, HTTP/3 can establish a connection in a single RTT, and subsequent requests can be sent with 0‑RTT, reducing latency dramatically.

The connection establishment process uses Diffie‑Hellman key exchange: the server sends a Server Config containing g, p, and A; the client generates b, computes B and the shared secret K, encrypts HTTP data with K, and sends B and the encrypted payload. The server then derives the same secret, decrypts the data, and may update its random values for forward secrecy.

Connection Migration – Unlike TCP, which binds a connection to a four‑tuple (source IP, source port, destination IP, destination port), QUIC identifies a connection with a 64‑bit Connection ID. This allows the connection to survive changes in network topology without interruption.

Head‑of‑Line Blocking and Multiplexing – Both HTTP/1.1 and HTTP/2 suffer from head‑of‑line (HoL) blocking at the TCP layer. HTTP/2 mitigates HoL at the request level by multiplexing streams over a single TCP connection, but TCP’s own packet ordering still causes HoL under loss. QUIC eliminates this by using independent UDP packets; loss of one packet does not stall the entire connection.

Congestion Control – QUIC inherits TCP’s congestion‑control concepts (slow start, congestion avoidance, fast retransmit/recovery) and implements the CUBIC algorithm with additional flexibility, allowing the algorithm to be swapped at the application layer.

Additional QUIC enhancements include:

Hot‑plug congestion‑control algorithms that can be changed without kernel modifications.

Forward Error Correction (FEC) that adds redundancy packets to recover from isolated losses without retransmission.

A strictly monotonic Packet Number that avoids ambiguity between original and retransmitted packets.

ACK Delay accounting for more accurate RTT measurement.

Support for up to 256 ACK blocks, reducing ACK overhead on lossy links.

Flow Control – QUIC implements two levels of flow control: connection‑level and stream‑level. Each stream has a receive window that shrinks as data is received and grows when the application processes data and sends WINDOW_UPDATE frames. The connection‑level window is the sum of all stream windows, ensuring the sender does not overwhelm the receiver.

HTTPnetwork protocolsQUICHTTP/3flow controlcongestion control
Top Architect
Written by

Top Architect

Top Architect focuses on sharing practical architecture knowledge, covering enterprise, system, website, large‑scale distributed, and high‑availability architectures, plus architecture adjustments using internet technologies. We welcome idea‑driven, sharing‑oriented architects to exchange and learn together.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.