RFC 9220: Bootstrapping WebSockets with HTTP/3
- R. Hamilton
Abstract
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
Status of This Memo
This is an Internet Standards Track document.¶
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.¶
Information about the current status of this document, any
errata, and how to provide feedback on it may be obtained at
https://
Copyright Notice
Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://
1. Introduction
"Bootstrapping WebSockets with HTTP/2" [RFC8441] defines an extension to HTTP/2 [HTTP/2] that is also useful in HTTP/3 [HTTP/3]. This extension makes use of an HTTP/2 setting. Appendix A.3 of [HTTP/3] gives some guidance on what changes (if any) are appropriate when porting settings from HTTP/2 to HTTP/3.¶
2. 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 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
3. WebSockets Upgrade over HTTP/3
[RFC8441] defines a mechanism for running the WebSocket Protocol [RFC6455] over a single stream of an HTTP/2 connection. It defines an Extended CONNECT method that 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 semantics of the pseudo-header fields and setting are identical to those
in HTTP/2 as defined in [RFC8441]. Appendix A.3 of [HTTP/3] requires that
HTTP/3 settings be registered separately for HTTP/3. The
SETTINGS
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 (Section 15.6.2 of [HTTP]). A server MAY provide more information via a "problem details" response [RFC7807].¶
The HTTP/3 stream closure is also analogous to the TCP connection
closure of [RFC6455]. Orderly TCP-level closures are represented as
a FIN bit on the stream (Section 4.4 of [HTTP/3]). RST exceptions are
represented with a stream error (Section 8 of [HTTP/3]) of type
H3
4. Security Considerations
This document introduces no new security considerations beyond those discussed in [RFC8441].¶
5. IANA Considerations
This document registers a new setting in the "HTTP/3 Settings" registry (Section 11.2.2 of [HTTP/3]).¶
6. Normative References
- [HTTP]
-
Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, Ed., "HTTP Semantics", STD 97, RFC 9110, DOI 10
.17487 , , <https:///RFC9110 www >..rfc -editor .org /info /rfc9110 - [HTTP/2]
-
Thomson, M., Ed. and C. Benfield, Ed., "HTTP/2", RFC 9113, DOI 10
.17487 , , <https:///RFC9113 www >..rfc -editor .org /info /rfc9113 - [HTTP/3]
-
Bishop, M., Ed., "HTTP/3", RFC 9114, DOI 10
.17487 , , <https:///RFC9114 www >..rfc -editor .org /info /rfc9114 - [RFC2119]
-
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10
.17487 , , <https:///RFC2119 www >..rfc -editor .org /info /rfc2119 - [RFC6455]
-
Fette, I. and A. Melnikov, "The WebSocket Protocol", RFC 6455, DOI 10
.17487 , , <https:///RFC6455 www >..rfc -editor .org /info /rfc6455 - [RFC7807]
-
Nottingham, M. and E. Wilde, "Problem Details for HTTP APIs", RFC 7807, DOI 10
.17487 , , <https:///RFC7807 www >..rfc -editor .org /info /rfc7807 - [RFC8174]
-
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10
.17487 , , <https:///RFC8174 www >..rfc -editor .org /info /rfc8174 - [RFC8441]
-
McManus, P., "Bootstrapping WebSockets with HTTP/2", RFC 8441, DOI 10
.17487 , , <https:///RFC8441 www >..rfc -editor .org /info /rfc8441
Acknowledgments
This document had reviews and input from many contributors in the IETF HTTP and QUIC Working Groups, with substantive input from David Schinazi, Martin Thomson, Lucas Pardue, Mike Bishop, Dragana Damjanovic, Mark Nottingham, and Julian Reschke.¶