Bootstrapping WebSockets with HTTP/3
Google
rch@google.com
ART
HTTP
Internet-Draft
The mechanism for running the WebSocket Protocol over a single stream of an HTTP/2 connection is equally applicable to HTTP/3, but needs to be separately registered. This document describes the mechanism for HTTP/3.
RFC EDITOR: please remove this section before publication
Discussion of this draft takes place on the HTTP working group mailing list (ietf-http-wg@w3.org), which is archived at https://lists.w3.org/Archives/Public/ietf-http-wg/.
Working Group information can be found at https://httpwg.org/; source code and issues list for this draft can be found at https://github.com/httpwg/http-extensions/labels/h3-websockets.
Introduction
defines an extension to HTTP/2 which is also useful in HTTP/3. This extension makes use of an HTTP/2 setting. describes the required updates for HTTP/2 settings to be used with HTTP/3.
Conventions and Definitions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14
when, and only when, they appear in all capitals, as shown here.
Websockets Upgrade over HTTP/3
defines a mechanism for running the WebSocket Protocol over a single stream of an HTTP/2 connection. It defines an Extended CONNECT method which specifies a new ":protocol" pseudo header field and new semantics for the ":path" and ":authority" pseudo header fields. It also defines a new HTTP/2 SETTING sent by a server to allow the client to use Extended CONNECT.
The HTTP/3 stream closure is also analogous to the TCP connection closure of . Orderly TCP-level closures are represented as a FIN bit on the stream (). RST exceptions are represented with an stream error () of type H3_REQUEST_CANCELLED ()
The semantics of the headers and SETTING are identical to those in HTTP/2 as defined . requires thatt HTTP/3 settings be registered separately for HTTP/3. The SETTINGS_ENABLE_CONNECT_PROTOCOL value is 0x08 (decimal 8), as in HTTP/2.
Security Considerations
This document introduces no new security considerations beyond those discussed in .
IANA Considerations
This document registers a new setting in the "HTTP/3 Settings" registry ().
Setting Name
Value
Specification
Default
SETTINGS_ENABLE_CONNECT_PROTOCOL
0x08
This document
0
Hypertext Transfer Protocol Version 3 (HTTP/3)
Akamai
Bootstrapping WebSockets with HTTP/2
Key words for use in RFCs to Indicate Requirement Levels
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words
The WebSocket Protocol
Session Description Protocol (SDP) Offer/Answer Procedures for Stream Control Transmission Protocol (SCTP) over Datagram Transport Layer Security (DTLS) Transport
Acknowledgments
TODO acknowledge.