What is QUIC?
A transport-layer protocol that runs over UDP. It builds in TLS 1.3 encryption and combines connection setup and key exchange into one round trip. It multiplexes several streams in one connection, and losing a packet on one stream does not stall the others. It is the basis of HTTP/3 and was standardized by the IETF as RFC 9000 in 2021.
Japanese name: QUIC
QUIC appears in 3 practice questions across 2 topics, including Computer Networking Basics, Web Technology Basics.
Field: Computer Networking Basics
Why build on UDP
A new transport protocol placed directly on IP would be blocked by many NATs and firewalls along the way, which do not pass protocols they do not recognize. TCP is also implemented inside operating-system kernels, so improvements take a long time to reach devices everywhere. QUIC runs on UDP, which passes almost everywhere, and runs inside applications and libraries, so it can be improved as quickly as browsers are updated. It also encrypts most of its header, which stops devices along the path from depending on its details and blocking future changes.
Connection IDs and loss recovery
A TCP connection is identified by IP addresses and port numbers, so it breaks when a smartphone switches from Wi-Fi to a mobile network. QUIC identifies connections by connection IDs, so a connection can survive an address change (connection migration). Loss detection, retransmission and congestion control all happen inside QUIC, and because packet numbers are never reused, a retransmission can be told apart from the original and the RTT can be measured accurately. On the other hand, it tends to use more CPU than TCP, which benefits from extensive kernel and network-card support.
FAQ
What is the difference between QUIC and TCP?
Both provide reliable, ordered delivery, but QUIC runs over UDP and builds in TLS 1.3 encryption. It sets up connections faster (one round trip, or zero when resuming), carries several independent streams in one connection, and keeps a connection alive when the IP address changes.
How are HTTP/3 and QUIC related?
HTTP/3 is the version of HTTP that runs over QUIC. The stream multiplexing and encryption that HTTP/2 got from TCP and TLS are provided by QUIC instead, which is why HTTP/3 traffic normally uses UDP port 443.