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 the HTTP version-specific details need to be specified. This document describes how the mechanism is adapted for HTTP/3.
Status information for this document may be found at .
Discussion of this document takes place on the HTTP Working Group mailing list (), which is archived at . Working Group information can be found at .
Source for this draft and an issue tracker can be found at .
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 that HTTP/3 settings be registered separately for HTTP/3. The SETTINGS_ENABLE_CONNECT_PROTOCOL value is 0x08 (decimal 8), as in HTTP/2.
If a server advertises support for Extended CONNECT but receives an Extended CONNECT request with a ":protocol" value that is unknown or is not supported, the server SHOULD respond to the request with a 501 (Not Implemented) status code (). A server MAY provide more information via a Problem Details response .
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 ().
- Value:
-
0x08
- Setting Name:
-
SETTINGS_ENABLE_CONNECT_PROTOCOL
- Default:
-
0
- Status:
-
permanent
- Specification:
-
This Document
- Date:
-
[ date of publication ]
- Change Controller:
-
IETF
- Contact:
-
HTTP Working Group (ietf-http-wg@w3.org)
- Notes:
Hypertext Transfer Protocol Version 3 (HTTP/3)
Akamai
HTTP Semantics
Adobe
Fastly
greenbytes GmbH
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
Problem Details for HTTP APIs
Acknowledgments
TODO acknowledge.