Protocol notes for this page (click to expand)

QUIC

What it is for

TCP's reliability is built into the kernel, so changing it means waiting for every operating system on earth to ship -- a decade of standstill.

★★★ QUIC moves sequencing, retransmission and congestion control into user space and fuses the TLS handshake with the connection handshake -- upgrading it takes a new browser build.

★★ It picked UDP not because UDP is good but because only UDP gets through: firewalls and NATs recognise TCP and UDP, and a new protocol number would be dropped en route.

★★★ Five differences from TCP

· Handshake: one round trip, against two or three for TCP plus TLS;
· One lost packet stalls only its own stream, against TCP's single byte stream where everything stalls;
· Connection identity is a connection ID, against TCP's four-tuple, where a new network means a new connection;
· Encryption is mandatory and covers its own header, against TLS bolted on top of TCP;
· Where it lives: a user-space library, against TCP in the kernel, where a change takes a decade.

★★★ Each line maps to a scenario on the right or a block in the frame.

★ Common misconceptions

★★★ "QUIC uses UDP, so it is unreliable" -- the reliability is all still there, just moved inside the UDP payload and run by the QUIC library at each end.

★★★ "HTTP/3 is HTTP/2 with a different transport" -- head-of-line blocking is genuinely fixed, because multiplexing moved down into the transport.

★★ "Encryption is optional" -- QUIC mandates it, and encrypts most of its own header too.