awesome-everything RU
↑ Back to the climb

Networking & Protocols

Why QUIC and not TCP+TLS

Crux QUIC moves transport logic out of the kernel and onto UDP so the protocol can evolve freely — trading CPU overhead for faster handshakes and independent streams.
Your altitude — climbing toward senior
ZeroJuniorMiddleSenior
You are at junior altitude — the surface
◷ 8 min

You know TCP. You know TLS. You know how they stack: the browser does a TCP handshake (1 RTT), then a TLS handshake on top (1 more RTT), then finally sends the HTTP request. On a 100 ms intercontinental link that is 200 ms of overhead before your page even starts loading.

Two problems with TCP

TCP is old. Adding new TCP options requires kernel updates, OS patches shipped months later, and then you hope middleboxes — firewalls, NATs, load balancers — do not silently drop the option. This ossification meant TCP could barely evolve for decades.

The second problem: losing a single packet stalls all streams on the connection, even the ones with unrelated data. This condition is called head-of-line blocking.

QUIC’s radical solution: move the transport logic to user space where it can be updated with every application, run it over UDP (which middleboxes have no special knowledge of), and encrypt almost the entire packet so middleboxes cannot inspect it.

TCP+TLS vs. QUIC handshake latency
TCP SYN/ACK1 RTT
TLS ClientHello1 RTT
First HTTP byte= 2 RTT total
QUIC Initial1 RTT
First HTTP byte= 1 RTT total
On a 100 ms intercontinental link: TCP+TLS costs 200 ms; QUIC costs 100 ms

The one-sentence definition

QUIC is a transport protocol running on top of UDP that carries a TLS 1.3 handshake, multiplexes many independent data streams, and survives network migration — your laptop switching from WiFi to cellular without losing the connection.

The metaphor. Imagine postal mail: TCP is like sending envelopes one at a time in strict order. Lose one and all others wait. QUIC is like a postman with one bag holding many separate envelopes; lose one and the rest keep moving. Also, QUIC’s bag is encrypted.

One scenario end to end

You open a mobile app that streams video over QUIC while sending periodic beacon requests (analytics) and real-time chat. In TCP each would use its own connection and pay three handshakes. In QUIC they share one connection, so you pay one 1-RTT handshake and then the app can use stream ID 0 for video, stream ID 2 for analytics, stream ID 1 for chat. A dropped packet in stream 1 does not block stream 0’s video frames from arriving. When you move from WiFi to 4G the connection ID stays valid, all streams stay alive, and the game never even notices.

Quiz

Why is QUIC in user space instead of the kernel?

Why this works

RFC 9000 took thirteen years to standardize (published May 2021). The core difficulty was convincing the Internet community to trust a new transport in user space — a place traditionally reserved for application code, not reliable delivery guarantees. Google shipped an early prototype (gQUIC) in Chrome in 2012, measured real-world latency wins at YouTube scale, and donated the data to the IETF as evidence.

Order the steps

Order the key events in a QUIC connection from laptop switching to mobile:

  1. 1 Laptop sends QUIC Initial packet with Connection ID (e.g., 0x12345678)
  2. 2 Mobile receives, opens connection, connection ID stays bound to the session
  3. 3 Laptop moves to cellular — IP address changes but Connection ID is still 0x12345678
  4. 4 Mobile recognizes the Connection ID, validates the new IP, and keeps the connection alive
  5. 5 All streams and flow control state survive the move — no reconnect needed
QUIC latency highlights
Handshake cost
1 RTT (vs TCP+TLS 2 RTT)
Resumption cost
0 RTT on cached session ticket
Page load on lossy mobile
30–55% faster than HTTP/2
Web traffic on HTTP/3
~21% (2026)
Recall before you leave
  1. 01
    What is middlebox ossification and how does QUIC avoid it?
  2. 02
    In one sentence: what is the main latency advantage of QUIC over TCP+TLS?
  3. 03
    How does QUIC keep a connection alive when the client's IP address changes?
Recap

TCP’s kernel-only evolution model left the protocol frozen by middlebox ossification for decades — any new TCP option gets stripped before it reaches the peer. QUIC sidesteps this by running over UDP in user space, where any application can ship updated congestion control weekly. The merged transport+TLS handshake saves one full round trip: 100 ms on an intercontinental link, 150 ms on a cross-Pacific link. Independent stream multiplexing means a dropped packet blocks only the stream it belongs to, not the entire connection. The cost is CPU: user-space packet processing and per-packet AES-GCM encryption add 15–30% overhead per byte over kernel TCP.

Connected lessons
appears again in258
Continue the climb ↑QUIC streams and head-of-line blocking
shortcuts expand
search
K
prev piece
k
next piece
j
cycle tier
t
this menu
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.