Internet Engineering Task Force (IETF) J. Iyengar, Ed. Request for Comments: 9000 Fastly Category: Standards Track M. Thomson, Ed. ISSN: 2070-1721 Mozilla May 2021 QUIC: A UDP-Based Multiplexed and Secure Transport Abstract This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm. Status of This Memo This is an Internet Standards Track document. Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc9000. Copyright Notice Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved. Table of Contents 1. Overview 1.1. Document Structure 1.2. Terms and Definitions 1.3. Notational Conventions 2. Streams 2.1. Stream Types and Identifiers 2.2. Sending and Receiving Data 2.3. Stream Prioritization 2.4. Operations on Streams 3. Stream States 3.1. Sending Stream States 3.2. Receiving Stream States 3.3. Permitted Frame Types 3.4. Bidirectional Stream States 3.5. Solicited State Transitions 4. Flow Control 4.1. Data Flow Control 4.2. Increasing Flow Control Limits 4.3. Flow Control Performance 4.4. Handling Stream Cancellation 4.5. Stream Final Size 4.6. Controlling Concurrency 5. Connections 5.1. Connection ID 5.2. Matching Packets to Connections 5.3. Operations on Connections 6. Version Negotiation 7. Cryptographic and Transport Handshake 7.1. Example Handshake Flows 7.2. Negotiating Connection IDs 7.3. Authenticating Connection IDs 7.4. Transport Parameters 7.5. Cryptographic Message Buffering 8. Address Validation 9. Connection Migration 10. Connection Termination 11. Error Handling 12. Packets and Frames 13. Packetization and Reliability 14. Datagram Size 15. Versions 16. Variable-Length Integer Encoding 17. Packet Formats 18. Transport Parameter Encoding 19. Frame Types and Formats 20. Error Codes 21. Security Considerations 22. IANA Considerations 23. References [NOTE: This file contains the header, abstract, and table of contents of RFC 9000. The full specification text is available at: https://www.rfc-editor.org/rfc/rfc9000 https://www.rfc-editor.org/rfc/rfc9000.txt (text) https://www.rfc-editor.org/rfc/rfc9000.pdf (PDF) Full document: 151 pages, May 2021 Authors: Jana Iyengar (Fastly), Martin Thomson (Mozilla) DOI: 10.17487/RFC9000]