Sign in
TodayMapLearnPracticeReview
Library
14 MINadvancedNetworking & CommunicationNot started

QUIC — The UDP Transport Powering HTTP/3

QUIC is a UDP-based transport protocol that rebuilds TCP's reliability, congestion control, and TLS's encryption in userspace, while fixing TCP's biggest modern problem: head-of-line blocking across multiplexed streams. QUIC powers HTTP/3 and now carries a meaningful fraction of the internet's traffic. It is the most significant transport-layer innovation since TCP itself.

Why this matters

QUIC is the future of the web's transport. Google, Cloudflare, Facebook, and Akamai all serve HTTP/3 over QUIC. Mobile carriers love it because it survives network switches better than TCP. If you are a backend or platform engineer, you will run QUIC endpoints within a few years. Understanding it — the per-stream independence, the 0-RTT setup, the connection migration — is understanding the next decade of how the internet moves data.

Prerequisites
  • UDP — User Datagram Protocol
  • TLS — Transport Layer Security
Related
  • HTTP — HyperText Transfer Protocol
  • TCP — Transmission Control Protocol
  • TLS — Transport Layer Security
  • UDP — User Datagram Protocol
Used in

Foundational.

Lesson

How it works

QUIC (Quick UDP Internet Connections, pronounced 'quick') was designed by Google starting in 2012 to fix the specific problems TCP+TLS+HTTP/2 hit at scale. The problems:

  1. Head-of-line blocking across multiplexed streams. HTTP/2 multiplexes many streams over one TCP connection. If one TCP packet is lost, every stream stalls until the retransmission arrives — even streams whose data already arrived. The application cannot see the arrived data because TCP guarantees in-order delivery of the whole byte stream.
  2. Slow connection setup. TCP handshake (1 RTT) + TLS 1.2 (2 RTT) = 3 RTT before the first HTTP byte. TLS 1.3 reduced this to 2 RTT, but a fresh connection still pays for both layers.
  3. Connection death on IP change. A TCP connection is identified by a 4-tuple (source IP, source port, dest IP, dest port). When your phone switches from Wi-Fi to cellular, the source IP changes, and every TCP connection dies — your downloads abort, your streams buffer.
  4. TCP is in the kernel. Iterating on TCP (new congestion control, new handshake, new features) takes a decade because every OS kernel must be updated. UDP is in the kernel too, but a UDP-based protocol's logic runs in userspace, where a team can ship changes weekly.

QUIC addresses all four by rebuilding TCP+TLS on top of UDP. Reliability, ordering, flow control, congestion control — all reimplemented in userspace. TLS 1.3 is integrated (not layered) so the handshake is one round trip and the encryption is per-packet from the start. Streams are first-class objects, so a lost packet stalls only one stream.

QUIC's defining features, in order of impact:

1. Multiplexed streams without cross-stream HOL blocking. A single QUIC connection carries many streams; each has its own sequence numbers and acks. A loss on stream A is retransmitted for stream A only; stream B's data, which already arrived, is delivered to the application immediately. This is the headline feature for HTTP/3.

2. Integrated TLS 1.3. TLS is not layered on top of QUIC; it is wired into the protocol. The QUIC handshake carries the TLS handshake inside it, so the first round trip establishes both the transport and the encryption. The result: 1-RTT handshake for new connections, 0-RTT for repeat connections (data can flow in the very first packet using a cached pre-shared key).

3. Connection migration. A QUIC connection is identified by a 64-bit Connection ID, not by the 4-tuple. When your phone switches from Wi-Fi to cellular, the IP changes — but the Connection ID stays the same. The server keeps the connection alive; your download continues, your stream does not buffer. This is a big deal for mobile.

4. Faster loss recovery. QUIC has more information than TCP does (per-packet timestamps, monotonically increasing packet numbers so retransmissions get new numbers and can be acked distinctly) and uses it for faster, more accurate RTT estimates and loss detection.

5. Pluggable congestion control. Because QUIC runs in userspace, deploying a new congestion control algorithm (BBR, CUBIC) does not require kernel changes. Different applications can use different algorithms.

6. No middlebox ossification. TCP has decades of middleboxes (NATs, firewalls, optimizers) that make assumptions about its behavior. Changing TCP in the kernel would break them. QUIC, being new and UDP-based, can iterate freely — the middleboxes do not pretend to understand it.

QUIC is not free. The costs:

  • CPU overhead. TCP's processing is in the kernel, with hardware offloads (TSO, LRO, checksum offload) and zero-copy paths refined over decades. QUIC runs in userspace, typically without those offloads. Early QUIC implementations were 2-4x more CPU-intensive than equivalent TCP. This has improved dramatically with kernel-bypass NICs, DPDK, and specialized QUIC offload, but it remains a consideration for high-throughput servers.

  • Amplification attack surface. A small UDP request triggering a large response is a classic amplification vector. QUIC mitigates this by limiting the server's first-flight response size to 3x the client's request, until the client's address is validated. This adds a round trip in the worst case.

  • Middlebox hostility. Some corporate firewalls and NATs block or rate-limit UDP because they cannot track state the way they can for TCP. QUIC connections fail in these environments; HTTP/3 falls back to HTTP/2 over TCP automatically.

  • Increased connection ID tracking. Connection IDs mean the server must maintain a lookup from Connection ID to connection state, even after the IP changes. This is a feature for the user but a complexity for the load balancer — it must be Connection-ID-aware, not just 4-tuple-aware.

  • 0-RTT replay risk. 0-RTT data is replayable — an attacker can capture and replay the early data. Servers must not execute non-idempotent operations from 0-RTT; they must wait for the handshake to complete.

The net is that QUIC is a clear win for client-facing traffic (browsers, mobile apps) on lossy networks, where the latency and resilience gains outweigh the CPU cost. For internal service-to-service on a fast, low-loss datacenter network, TCP+TLS (often gRPC over HTTP/2) remains excellent — the gains QUIC provides mostly do not apply. This is why HTTP/3 adoption is concentrated at the edge, not between backend services.

WebTransport — QUIC for the browser

WebTransport is the browser API for QUIC (specifically HTTP/3 transport). It exposes QUIC's datagram and stream semantics to JavaScript, finally giving browsers a low-latency bidirectional transport that is not WebSocket-over-TCP. Expect WebTransport to be the new foundation for browser-based games, video calls, and collaborative tools over the next decade.

Check yourself
solid

Which problem does QUIC solve that HTTP/2 over TCP does not?

Pick one answer.

Check yourself
interview

Your phone is on Wi-Fi streaming a video over HTTP/3. You walk out the door and the phone switches to cellular. What does the QUIC connection do, and how does it differ from TCP?

Pick one answer.

Check yourself
interview

QUIC's 0-RTT mode lets a repeat client send application data in its very first packet. What is the security risk, and how is it mitigated?

Pick one answer.

Engineering mental model

Mental model. Think of QUIC — The UDP Transport Powering HTTP/3 as a deliberate boundary in a system. The boundary exists because something becomes harder to manage when everything is done in one place: latency, scale, failure isolation, consistency, cost, or team ownership. The useful question is not “what does QUIC — The UDP Transport Powering HTTP/3 mean?” but “what pressure makes this boundary worth introducing, and what new failure mode does it create?”

Design lens

Before choosing QUIC — The UDP Transport Powering HTTP/3, name the workload, the critical user path, the dominant bottleneck, the failure you are trying to absorb, and the trade-off you are willing to accept. If you cannot name those five things, the design is probably premature.

Original NO CAP systems visual for QUIC — The UDP Transport Powering HTTP/3.
Image unavailable. Original NO CAP systems visual for QUIC — The UDP Transport Powering HTTP/3.
QUIC — The UDP Transport Powering HTTP/3: a compact system-thinking visual.— Original NO CAP visual.
curl -i https://api.example.com/v1/quic

# Look for:
# - status code
# - latency
# - retryability
# - response size
A minimal engineering sketch for reasoning about QUIC — The UDP Transport Powering HTTP/3.

Back-of-the-envelope reasoning

Numerical lens: write down traffic, payload size, read/write ratio, peak multiplier and durability target before choosing a component. The numbers should justify the architecture.

Interactive sandboxdeterministic

Interactive thought experiment: QUIC — The UDP Transport Powering HTTP/3

Change the variables below and predict what breaks first in QUIC — The UDP Transport Powering HTTP/3. The production lab can later reuse these same inputs.

System pressure6%
Try this

Change one variable at a time. Predict the failure mode first, then move the slider and see whether your mental model matches the simplified system response.

Hint

If you are stuck on QUIC — The UDP Transport Powering HTTP/3, start by drawing the request path and marking every network hop, stateful component, queue, cache and failure boundary. Then estimate where the system will saturate.

Check yourself
solid

You increase traffic by 10× in a system using QUIC — The UDP Transport Powering HTTP/3. What should you inspect first?

Pick one answer.

Check yourself
interview

Which statement is the safest engineering habit when using QUIC — The UDP Transport Powering HTTP/3?

Pick one answer.

Try this
interview

You have dashboards for traffic, latency, errors and saturation. You can change the architecture, but every change has operational cost.

Production scenario: your system uses QUIC — The UDP Transport Powering HTTP/3, traffic suddenly spikes, and p99 latency doubles. What is your first move?

Interview drill

Answer this without notes: When would you choose QUIC — The UDP Transport Powering HTTP/3, and when would you intentionally avoid it? Mention at least one bottleneck it addresses, one failure mode it introduces, and one alternative. Then quantify the workload you are designing for.

Engineering lens

A useful engineering lens for QUIC - The UDP Transport Powering HTTP/3: define the problem it solves, the simpler design that fails first, the constraint that forces you to introduce this concept, and the new failure modes the concept creates.

Numerical sanity check

Back-of-the-envelope reasoning beats fake precision. State your traffic, payload, concurrency and growth assumptions explicitly, then calculate enough to know whether the current architecture is orders of magnitude away from the target.

Check yourself
interview

Do not optimize for a memorized definition. Reason from the workload and failure mode.

Imagine the simplest version of a system using QUIC - The UDP Transport Powering HTTP/3. What breaks first as traffic grows by 10×, and what would you change before reaching 100×?

Pick one answer.

Trade-offs

What you gain, what you pay

Pros
  • +Per-stream independence eliminates cross-stream head-of-line blocking.
  • +Integrated TLS 1.3: 1-RTT handshake for new connections, 0-RTT for repeats.
  • +Connection migration survives IP changes — huge win for mobile.
  • +Userspace implementation means faster iteration on congestion control and features.
  • +Pluggable congestion control (BBR, CUBIC, custom) without kernel changes.
  • +More accurate loss detection than TCP due to per-packet timestamps and monotonically increasing packet numbers.
Cons
  • −Higher CPU cost than kernel TCP (userspace processing, fewer offloads) — shrinking but real.
  • −Some networks block or rate-limit UDP, requiring fallback to TCP.
  • −Load balancers must be Connection-ID-aware — not just 4-tuple-aware.
  • −0-RTT replay risk for non-idempotent operations.
  • −Amplification mitigation adds an extra round trip in the worst case.
  • −Operational tooling (tcpdump, Wireshark) needed updates to parse QUIC.
Failure modes

How this breaks in production

  • UDP blocked by a corporate firewall — HTTP/3 falls back to HTTP/2 over TCP, masking the issue from users.
  • Connection ID tracking mismatch between LB and backend — packets routed to the wrong server.
  • 0-RTT replay causing duplicate side effects for non-idempotent operations.
  • High CPU from userspace crypto and packet processing at high throughput.
  • Idle NAT/proxy timeouts killing the connection — same as TCP, mitigated by keepalives.
  • Middleboxes that 'optimize' UDP badly — rare but documented.
Common mistakes

Don't fall into these traps

  • •Assuming QUIC is 'just UDP' — it is a full transport protocol implemented in userspace.
  • •Treating 0-RTT as always safe — it is replayable; restrict to idempotent operations.
  • •Forgetting the TCP/HTTP/2 fallback — some users cannot use QUIC and need a working fallback path.
  • •Configuring load balancers to route QUIC by 4-tuple instead of Connection ID — breaks migration.
  • •Comparing QUIC CPU to kernel TCP without accounting for TCP's hardware offloads.
  • •Expecting QUIC to speed up internal datacenter traffic — its wins are mostly for client-facing, lossy networks.
Where you see it

Real systems using this

HTTP/3 — the third major HTTP version, served by Google, Cloudflare, Facebook, Akamai by default.YouTube video streaming over QUIC — reduced rebuffer rates on mobile.Cloudflare's edge — HTTP/3 enabled for every customer by default.Facebook's mobile app — major traffic shifted to QUIC for resilience on flaky networks.WebTransport (in browsers) — the new foundation for low-latency browser communication.
Teardowns

How real systems implement this

  • Cloudflare HTTP/3 — HTTP/3 enabled by default across Cloudflare's edge network. Clients that support QUIC get it automatically; others fall back to HTTP/2. Per-stream reliability improves page load on lossy mobile networks.
  • YouTube — Video streaming over QUIC reduces rebuffer rates on mobile by surviving packet loss better than TCP. Connection migration keeps streams alive across network switches.
  • Google services — Google's frontend (Search, Drive, Photos) serves QUIC to capable clients. Internally, the team continuously experiments with new congestion control algorithms because QUIC is in userspace and easy to ship changes to.
Interview prompts

Practice saying it out loud

  • Q1What problem does QUIC solve that HTTP/2 over TCP cannot? Walk through head-of-line blocking.
  • Q2Explain QUIC's connection migration. Why does TCP fail when a phone switches networks, and how does QUIC survive?
  • Q3What is 0-RTT in QUIC, and what is the security risk? How do you use it safely?
  • Q4Why does QUIC integrate TLS 1.3 instead of layering it on top, like TCP+TLS does?
  • Q5When would you NOT use QUIC? Give a real scenario where TCP+TLS is better.
Research

Further reading & references

System Design Primer
Open source
ByteByteGo — Scale from zero to millions
ByteByteGo
System Design Tutorial
GeeksforGeeks
System Design Roadmap
roadmap.sh
Networking & Communication reference
Reference
Networking & Communication reference
Reference
Networking & Communication reference
Reference
Cloudflare Learning Center
Cloudflare

Core explanations are original NO CAP material. External references are provided for deeper study and standards.

What next?

Mark as understood once the mental model clicks.

Next recommended

HTTP — HyperText Transfer Protocol