Internet Engineering Task Force (IETF) M. Bishop, Ed. Request for Comments: 9114 Akamai Category: Standards Track June 2022 ISSN: 2070-1721 HTTP/3 Abstract The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3. 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/rfc9114. Table of Contents 1. Introduction 1.1. Prior Versions of HTTP 1.2. Delegation to QUIC 2. HTTP/3 Protocol Overview 2.1. Document Organization 2.2. Conventions and Terminology 3. Connection Setup and Management 3.1. Discovering an HTTP/3 Endpoint 3.1.1. HTTP Alternative Services 3.1.2. Other Schemes 3.2. Connection Establishment 3.3. Connection Reuse 4. Expressing HTTP Semantics in HTTP/3 4.1. HTTP Message Framing 4.1.1. Request Cancellation and Rejection 4.1.2. Malformed Requests and Responses 4.2. HTTP Fields 4.2.1. Field Compression 4.2.2. Header Size Constraints 4.3. HTTP Control Data 4.3.1. Request Pseudo-Header Fields 4.3.2. Response Pseudo-Header Fields 4.4. The CONNECT Method 4.5. HTTP Upgrade 4.6. Server Push 5. Connection Closure 5.1. Idle Connections 5.2. Connection Shutdown 5.3. Immediate Application Closure 5.4. Transport Closure 6. Stream Mapping and Usage 6.1. Bidirectional Streams 6.2. Unidirectional Streams 6.2.1. Control Streams 6.2.2. Push Streams 6.2.3. Reserved Stream Types 7. HTTP Framing Layer 7.1. Frame Layout 7.2. Frame Definitions 7.2.1. DATA 7.2.2. HEADERS 7.2.3. CANCEL_PUSH 7.2.4. SETTINGS 7.2.5. PUSH_PROMISE 7.2.6. GOAWAY 7.2.7. MAX_PUSH_ID 7.2.8. Reserved Frame Types 8. Error Handling 8.1. HTTP/3 Error Codes 9. Extensions to HTTP/3 10. Security Considerations 10.1. Server Authority 10.2. Cross-Protocol Attacks 10.3. Intermediary-Encapsulation Attacks 10.4. Cacheability of Pushed Responses 10.5. Denial-of-Service Considerations 10.6. Use of Compression 10.7. Padding and Traffic Analysis 10.8. Frame Parsing 10.9. Early Data 10.10. Migration 10.11. Privacy Considerations 11. IANA Considerations 11.1. Registration of HTTP/3 Identification String 11.2. New Registries 11.2.1. Frame Types 11.2.2. Settings Parameters 11.2.3. Error Codes 11.2.4. Stream Types 12. References 12.1. Normative References 12.2. Informative References Appendix A. Considerations for Transitioning from HTTP/2 A.1. Streams A.2. HTTP Frame Types A.3. HTTP/2 SETTINGS Parameters A.4. HTTP/2 Error Codes Acknowledgments Index Author's Address [NOTE: This file contains the header, abstract, and table of contents of RFC 9114. The full specification text is available at: https://www.rfc-editor.org/rfc/rfc9114 https://www.rfc-editor.org/rfc/rfc9114.txt (text) https://www.rfc-editor.org/rfc/rfc9114.pdf (PDF) Full document: 57 pages, June 2022 Author: Mike Bishop (Akamai), Editor DOI: 10.17487/RFC9114]