HTTP/3, the latest iteration of the web’s core protocol, is built on a foundation that dramatically changes how data travels over the internet, moving from the long-standing TCP to UDP.

Let’s watch it in action. Imagine a user requesting a webpage from a server. With HTTP/1.1 or HTTP/2, this request and its subsequent data packets would be managed by TCP. TCP, while reliable, is a stateful protocol that enforces ordering and guarantees delivery. This means if a single packet gets lost or delayed, the entire connection can stall, waiting for that packet to be retransmitted. This is known as "head-of-line blocking."

HTTP/3, however, leverages QUIC (Quick UDP Internet Connections), a new transport protocol that runs over UDP. QUIC is designed to eliminate head-of-line blocking at the transport layer. It achieves this by multiplexing multiple independent streams over a single QUIC connection. If a packet for one stream is lost, it doesn’t affect the other streams.

Consider this simplified scenario: a user’s browser requests a webpage with several resources (HTML, CSS, images).

HTTP/2 (TCP-based):

  1. Browser establishes a TCP connection to the server.
  2. Browser sends requests for HTML, CSS, image1, image2, etc., over this single TCP connection.
  3. If a TCP packet carrying image1 gets lost, the browser has to wait for that packet to be retransmitted before it can even process the packets for image2 or CSS, even if those arrived fine.

HTTP/3 (QUIC-based):

  1. Browser establishes a QUIC connection to the server. This involves a handshake that’s often faster than TCP’s.
  2. Browser sends requests for HTML, CSS, image1, image2, etc. These are treated as separate streams within the single QUIC connection.
  3. If a QUIC packet carrying image1 is lost, only the stream for image1 pauses. The browser can still immediately process and render CSS and image2 because their respective streams are unaffected.

This fundamental shift means faster page loads, especially on unreliable or high-latency networks. Google, Meta, and Cloudflare, as major players in internet infrastructure and content delivery, were at the forefront of adopting and pushing HTTP/3.

Google’s Rollout: Google’s Chrome browser has supported HTTP/3 since Chrome 71 (released in late 2018), and their servers began enabling it around the same time. Their internal motivation was to improve the performance of their vast web services, from Search to YouTube, particularly for users on mobile networks. They saw a significant reduction in latency and an increase in throughput.

Meta’s (Facebook) Rollout: Meta’s adoption was driven by the need to serve billions of users globally, many of whom experience suboptimal network conditions. They focused on making their mobile apps and web services faster. By implementing HTTP/3, they aimed to reduce connection establishment times and improve the responsiveness of their platforms.

Cloudflare’s Rollout: Cloudflare, as a CDN and security provider, has a unique position. They adopted HTTP/3 to offer it as a feature to their customers, allowing websites to gain the performance benefits of the new protocol without requiring their own infrastructure changes. Their early support and promotion were crucial in driving broader adoption across the internet. They enabled it by default for their customers, making it one of the largest HTTP/3 deployments.

The internal workings of QUIC involve several key components that differ from TCP:

  • Connection Establishment: QUIC uses a 0-RTT or 1-RTT handshake, combining the transport and TLS (version 1.3) handshakes. This significantly reduces latency compared to TCP’s 3-way handshake followed by a TLS handshake.
  • Encryption: QUIC connections are always encrypted by default using TLS 1.3. This means security is built-in, not an add-on.
  • Stream Multiplexing: As mentioned, multiple independent streams can exist over a single QUIC connection. Each stream has its own flow control and is managed independently.
  • Packet Numbering: QUIC uses its own packet numbering scheme, separate from TCP sequence numbers. This helps in detecting lost packets more effectively and reordering them.
  • Connection Migration: QUIC connections are identified by a Connection ID, not by IP address and port. This allows a connection to survive a user’s IP address changing (e.g., switching from Wi-Fi to cellular data) without needing to re-establish the connection.

One of the most profound implications of HTTP/3 is how it fundamentally rethinks reliability. TCP’s reliability model is built around ordered delivery and acknowledgments at the packet level. If you lose packet N, you can’t process packet N+1. QUIC, by contrast, provides reliability per stream. The application layer (HTTP/3) requests reliable delivery of specific data chunks (like image bytes). QUIC guarantees those chunks will arrive, but it doesn’t mandate that they arrive in the same order as chunks for a different HTTP request. This allows the browser to display parts of a webpage even if other parts are still being downloaded due to network issues.

The next step in this evolution involves understanding the finer points of QUIC’s congestion control mechanisms and how they interact with existing network infrastructure.

Want structured learning?

Take the full Http3 course →