draft-ietf-httpbis-h3-websockets-04.txt | draft-ietf-httpbis-h3-websockets-latest.txt | |||
---|---|---|---|---|
HTTP Working Group R. Hamilton | Internet Engineering Task Force (IETF) R. Hamilton | |||
Internet-Draft Google | Request for Comments: 9220 Google | |||
Intended status: Standards Track February 08, 2022 | Category: Standards Track December 19, 2023 | |||
Expires: August 12, 2022 | ISSN: 2070-1721 | |||
Bootstrapping WebSockets with HTTP/3 | Bootstrapping WebSockets with HTTP/3 | |||
draft-ietf-httpbis-h3-websockets-04 | ||||
Abstract | Abstract | |||
The mechanism for running the WebSocket Protocol over a single stream | 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 | of an HTTP/2 connection is equally applicable to HTTP/3, but the | |||
version-specific details need to be specified. This document | HTTP-version-specific details need to be specified. This document | |||
describes how the mechanism is adapted for HTTP/3. | describes how the mechanism is adapted for HTTP/3. | |||
About This Document | About This Document | |||
This note is to be removed before publishing as an RFC. | This note is to be removed before publishing as an RFC. | |||
Status information for this document may be found at | Status information for this document may be found at | |||
<https://datatracker.ietf.org/doc/draft-ietf-httpbis-h3-websockets/>. | <https://datatracker.ietf.org/doc/draft-ietf-httpbis-h3-websockets/>. | |||
Discussion of this document takes place on the HTTP Working Group | Discussion of this document takes place on the HTTP Working Group | |||
mailing list (<mailto:ietf-http-wg@w3.org>), which is archived at | mailing list (<mailto:ietf-http-wg@w3.org>), which is archived at | |||
<https://lists.w3.org/Archives/Public/ietf-http-wg/>. Working Group | <https://lists.w3.org/Archives/Public/ietf-http-wg/>. Working Group | |||
information can be found at <https://httpwg.org/>. | information can be found at <https://httpwg.org/>. | |||
Source for this draft and an issue tracker can be found at | Source for this draft and an issue tracker can be found at | |||
<https://github.com/httpwg/http-extensions/labels/h3-websockets>. | <https://github.com/httpwg/http-extensions/labels/h3-websockets>. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on August 12, 2022. | 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/rfc9220. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2023 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Conventions and Definitions . . . . . . . . . . . . . . . . . 2 | 2. Conventions and Definitions . . . . . . . . . . . . . . . . . 2 | |||
3. Websockets Upgrade over HTTP/3 . . . . . . . . . . . . . . . 2 | 3. WebSockets Upgrade over HTTP/3 . . . . . . . . . . . . . . . 2 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 3 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 3 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 3 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 3 | |||
6. Normative References . . . . . . . . . . . . . . . . . . . . 4 | 6. Normative References . . . . . . . . . . . . . . . . . . . . 4 | |||
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 4 | Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 4 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
1. Introduction | 1. Introduction | |||
"Bootstrapping WebSockets with HTTP/2" [RFC8441] defines an extension | "Bootstrapping WebSockets with HTTP/2" [RFC8441] defines an extension | |||
to HTTP/2 [HTTP2] which is also useful in HTTP/3 [HTTP3]. This | to HTTP/2 [HTTP2] that is also useful in HTTP/3 [HTTP3]. This | |||
extension makes use of an HTTP/2 setting. Appendix A.3 of [HTTP3] | extension makes use of an HTTP/2 setting. Appendix A.3 of [HTTP3] | |||
gives some guidance on what changes (if any) are appropriate when | gives some guidance on what changes (if any) are appropriate when | |||
porting settings from HTTP/2 to HTTP/3. | porting settings from HTTP/2 to HTTP/3. | |||
2. Conventions and Definitions | 2. Conventions and Definitions | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. Websockets Upgrade over HTTP/3 | 3. WebSockets Upgrade over HTTP/3 | |||
[RFC8441] defines a mechanism for running the WebSocket Protocol | [RFC8441] defines a mechanism for running the WebSocket Protocol | |||
[RFC6455] over a single stream of an HTTP/2 connection. It defines | [RFC6455] over a single stream of an HTTP/2 connection. It defines | |||
an Extended CONNECT method which specifies a new ":protocol" pseudo- | an Extended CONNECT method that specifies a new ":protocol" pseudo- | |||
header field and new semantics for the ":path" and ":authority" | header field and new semantics for the ":path" and ":authority" | |||
pseudo-header fields. It also defines a new HTTP/2 setting sent by a | pseudo-header fields. It also defines a new HTTP/2 setting sent by a | |||
server to allow the client to use Extended CONNECT. | server to allow the client to use Extended CONNECT. | |||
The semantics of the pseudo-header fields and setting are identical | The semantics of the pseudo-header fields and setting are identical | |||
to those in HTTP/2 as defined [RFC8441]. Appendix A.3 of [HTTP3] | to those in HTTP/2 as defined in [RFC8441]. Appendix A.3 of [HTTP3] | |||
requires that HTTP/3 settings be registered separately for HTTP/3. | requires that HTTP/3 settings be registered separately for HTTP/3. | |||
The SETTINGS_ENABLE_CONNECT_PROTOCOL value is 0x08 (decimal 8), as in | The SETTINGS_ENABLE_CONNECT_PROTOCOL value is 0x08 (decimal 8), as in | |||
HTTP/2. | HTTP/2. | |||
If a server advertises support for Extended CONNECT but receives an | If a server advertises support for Extended CONNECT but receives an | |||
Extended CONNECT request with a ":protocol" value that is unknown or | Extended CONNECT request with a ":protocol" value that is unknown or | |||
is not supported, the server SHOULD respond to the request with a 501 | 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 | (Not Implemented) status code (Section 15.6.2 of [HTTP]). A server | |||
MAY provide more information via a Problem Details response | MAY provide more information via a "problem details" response | |||
[RFC7807]. | [RFC7807]. | |||
The HTTP/3 stream closure is also analogous to the TCP connection | The HTTP/3 stream closure is also analogous to the TCP connection | |||
closure of [RFC6455]. Orderly TCP-level closures are represented as | closure of [RFC6455]. Orderly TCP-level closures are represented as | |||
a FIN bit on the stream (Section 4.2 of [HTTP3]). RST exceptions are | a FIN bit on the stream (Section 4.2 of [HTTP3]). RST exceptions are | |||
represented with a stream error (Section 8 of [HTTP3]) of type | represented with a stream error (Section 8 of [HTTP3]) of type | |||
H3_REQUEST_CANCELLED (Section 8.1 of [HTTP3]). | H3_REQUEST_CANCELLED (Section 8.1 of [HTTP3]). | |||
4. Security Considerations | 4. Security Considerations | |||
skipping to change at page 3, line 44 ¶ | skipping to change at page 3, line 44 ¶ | |||
registry (Section 11.2.2 of [HTTP3]). | registry (Section 11.2.2 of [HTTP3]). | |||
Value: 0x08 | Value: 0x08 | |||
Setting Name: SETTINGS_ENABLE_CONNECT_PROTOCOL | Setting Name: SETTINGS_ENABLE_CONNECT_PROTOCOL | |||
Default: 0 | Default: 0 | |||
Status: permanent | Status: permanent | |||
Specification: This Document | Specification: This document | |||
Date: [ date of publication ] | ||||
Change Controller: IETF | Change Controller: IETF | |||
Contact: HTTP Working Group (ietf-http-wg@w3.org) | Contact: HTTP Working Group (ietf-http-wg@w3.org) | |||
Notes: | ||||
6. Normative References | 6. Normative References | |||
[HTTP] Fielding, R., Nottingham, M., and J. Reschke, "HTTP | [HTTP] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
Semantics", draft-ietf-httpbis-semantics-19 (work in | Ed., "HTTP Semantics", RFC 9110, DOI 10.17487/RFC9110, | |||
progress), September 2021. | April 2022, <https://www.rfc-editor.org/info/rfc9110>. | |||
[HTTP2] Thomson, M. and C. Benfield, "HTTP/2", draft-ietf-httpbis- | [HTTP2] Thomson, M., Ed. and C. Benfield, Ed., "HTTP/2", RFC 9113, | |||
http2bis-07 (work in progress), January 2022. | DOI 10.17487/RFC9113, April 2022, | |||
<https://www.rfc-editor.org/info/rfc9113>. | ||||
[HTTP3] Bishop, M., "Hypertext Transfer Protocol Version 3 | [HTTP3] Bishop, M., Ed., "Hypertext Transfer Protocol Version 3 | |||
(HTTP/3)", draft-ietf-quic-http-34 (work in progress), | (HTTP/3)", RFC 9114, DOI 10.17487/RFC9114, April 2022, | |||
February 2021. | <https://www.rfc-editor.org/info/rfc9114>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC6455] Fette, I. and A. Melnikov, "The WebSocket Protocol", | [RFC6455] Fette, I. and A. Melnikov, "The WebSocket Protocol", | |||
RFC 6455, DOI 10.17487/RFC6455, December 2011, | RFC 6455, DOI 10.17487/RFC6455, December 2011, | |||
<https://www.rfc-editor.org/info/rfc6455>. | <https://www.rfc-editor.org/info/rfc6455>. | |||
End of changes. 18 change blocks. | ||||
38 lines changed or deleted | 32 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |