Table of Contents
Fetching ...

Demystifying QUIC from the Specifications

Darius Saif, Ashraf Matrawy

TL;DR

This paper demystifies QUIC by prescribing a complete, approachable synthesis of its specifications, tracing the evolution from Google QUIC to IETF QUIC (RFC 9000) and addressing challenges posed by rapid changes and cross-layer design. It systematically covers packet formats, handshake, connection management, validation, migration, version negotiation, streams, flow control, datagrams, congestion control, and the role of Version 2, offering precise technical guidance instead of superficial overviews. The authors' contributions include a structured, end-to-end explanation that helps researchers and practitioners understand how QUIC achieves low latency, secure handshakes, and multiplexed streams while remaining adaptable to evolving standards. The work has practical impact by enabling clearer interpretation of QUIC behavior for implementation, debugging, and protocol-education purposes, and by highlighting items for future work within the QUIC Working Group.

Abstract

QUIC is an advanced transport layer protocol whose ubiquity on the Internet is now very apparent. Importantly, QUIC fuels the next generation of web browsing: HTTP/3. QUIC is a stateful and connection oriented protocol which offers similar features (and more) to the combination of TCP and TLS. There are several difficulties which readers may encounter when learning about QUIC: i.) its rapid evolution (particularly, differentiation between the QUIC standard and the now deprecated Google QUIC), ii.) numerous RFCs whose organization, language, and detail may be challenging to the casual reader, and iii.) the nature of QUIC's cross-layer and privacy-centric implementation, making it impossible to understand or debug by looking at packets alone. For these reasons, the aim of this paper is to present QUIC in a complete yet approachable fashion, thereby demystifying the protocol from its specifications.

Demystifying QUIC from the Specifications

TL;DR

This paper demystifies QUIC by prescribing a complete, approachable synthesis of its specifications, tracing the evolution from Google QUIC to IETF QUIC (RFC 9000) and addressing challenges posed by rapid changes and cross-layer design. It systematically covers packet formats, handshake, connection management, validation, migration, version negotiation, streams, flow control, datagrams, congestion control, and the role of Version 2, offering precise technical guidance instead of superficial overviews. The authors' contributions include a structured, end-to-end explanation that helps researchers and practitioners understand how QUIC achieves low latency, secure handshakes, and multiplexed streams while remaining adaptable to evolving standards. The work has practical impact by enabling clearer interpretation of QUIC behavior for implementation, debugging, and protocol-education purposes, and by highlighting items for future work within the QUIC Working Group.

Abstract

QUIC is an advanced transport layer protocol whose ubiquity on the Internet is now very apparent. Importantly, QUIC fuels the next generation of web browsing: HTTP/3. QUIC is a stateful and connection oriented protocol which offers similar features (and more) to the combination of TCP and TLS. There are several difficulties which readers may encounter when learning about QUIC: i.) its rapid evolution (particularly, differentiation between the QUIC standard and the now deprecated Google QUIC), ii.) numerous RFCs whose organization, language, and detail may be challenging to the casual reader, and iii.) the nature of QUIC's cross-layer and privacy-centric implementation, making it impossible to understand or debug by looking at packets alone. For these reasons, the aim of this paper is to present QUIC in a complete yet approachable fashion, thereby demystifying the protocol from its specifications.

Paper Structure

This paper contains 19 sections, 4 figures, 2 tables.

Figures (4)

  • Figure 1: Long Header Packet Format
  • Figure 2: Short Header Packet Format
  • Figure 3: Simplified QUIC Handshake
  • Figure 4: QUIC STREAM Frame Structure