There is lots of good information in the original QUIC design spec as well as some conference publications on the design and evaluation of SPDY (predecessor of HTTP/2) and QUIC.
https://docs.google.com/document/d/1RNHkx_VvKWyWg6Lr8SZ-saqsQx7rFV-ev2jRFUoVD34/edit?usp=sharing
https://www.usenix.org/conference/nsdi14/technical-sessions/wang
https://dl.acm.org/doi/10.1145/3718958.3754353
2/n

QUIC Quick UDP Internet Connections MULTIPLEXED STREAM TRANSPORT OVER UDP Jim Roskind <[email protected]> To paraphrase a famous quote: I apologize in advance for the length of this document, and if I had more time, I would surely have written less. First Draft 2012-04 Revised: 2013-06-24 Minor...
QUIC is defined in four RFCs spanning a few hundred pages, so making sense of that for textbook length coverage is no small task. But that's what we're willing to do for the devoted readers of our books.
There's a disconcerting (for old school types) lack of packet headers in the QUIC specs, where textual representation of packet headers has been used. We decided to make some packet header pictures anyway.
We hope the person who gave us a one-star review entitled "Wall of Text" appreciates the effort.
(For comparison, here is the same header as described in the spec:
Long Header Packet {
Header Form (1) = 1,
Fixed Bit (1) = 1,
Long Packet Type (2),
Type-Specific Bits (4),
Version (32),
Destination Connection ID Length (8),
Destination Connection ID Length (8),
Destination Connection ID (0..160),
Source Connection ID Length (8),
Source Connection ID (0..160),
Type-Specific Payload (..),
}
3/n
Because QUIC differs from TCP in many ways large and small, trying to describe its most important features feels a bit like the parable of the blind men and the elephant. One aspect that grabs our attention is the way the layering with TLS was redesigned in QUIC. Here is the picture we use to show this:
More on this topic:
https://systemsapproach.org/2021/09/27/the-importance-of-thinking-across-layer-boundaries/
The redesigned layering allowed several round-trip times of connection establishment to be reduced to a single RTT, with the potential for application data to be sent in the first RTT. 0-RTT data is a good example of a complex tradeoff between performance and security. Even without 0-RTT data, the redesigned layers of QUIC and TLS reduce the number of RTTs needed to get a secure channel established, thus providing a real performance benefit to the application.
More on 0-RTT tradeoffs:
https://systemsapproach.org/2025/11/17/tradeoffs-in-system-security/
4/n
Streams are the primary mechanism making QUIC a better fit for request/response operations(and RPC). When HTTP runs over TCP, the only way to allow one request to proceed independently of another is to open multiple parallel TCP connections. With each connection running its own congestion control loop, congestion on one connection is not apparent to the other connections; each connection tries to figure out the appropriate amount of bandwidth to consume on its own, while competing with the others. And if HTTP runs over a single TCP connection, a single dropped packet blocks the entire progress of any requests in flight until that lost packet is retransmitted.
So QUIC allows for many streams within a single connection, and each stream can make progress independently from the others. A single packet loss only impacts the stream (or streams) whose data was in that packet. At the same time, QUIC can use that one packet loss to respond appropriately to congestion.
5/n
QUIC's approach to congestion control is, by default, modeled on TCP NewReno, but QUIC also allows more accurate detection of packet loss and expanded SACK (selective acknowledgement) capability. RFC 9002 is all about how QUIC does loss detection and congestion control.
https://www.rfc-editor.org/info/rfc9002
6/n
QUIC has a lot going for it. Since 2012 the team has paid close attention to deployment considerations (which is why it runs over UDP—the TCP/UDP duopoly lives on thanks to middleboxes). And with a carefully considered design, QUIC has made a real difference to the performance of the web and of other applications needing request/response semantics.
More here:
https://systemsapproach.org/2026/04/06/quic-the-third-transport-protocol/
/FIN