rfc-9220

Bootstrapping WebSockets with HTTP/3

R. Hamilton
date2022-06 streamIETF areawit wghttpbis statusPROPOSED STANDARD pages4 canonicalhttps://www.rfc-editor.org/rfc/rfc9220 doi10.17487/RFC9220
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.

Extracted elements (9)

design-rationale §1

The mechanism for running WebSockets over HTTP/2 (RFC 8441) is directly applicable to HTTP/3 because both use stream-based framing with similar semantics; only the HTTP-version-specific registration details needed to be specified in this document.

websocket, http, quic

interoperability-note §3

Appendix A.3 of HTTP/3 (RFC 9114) requires that HTTP/3 settings be registered separately for HTTP/3, even when porting settings from HTTP/2. This document satisfies that requirement for SETTINGS_ENABLE_CONNECT_PROTOCOL.

websocket, http, quic, registry

normative-requirement §3 MAY

A server MAY provide more information via a 'problem details' response (RFC 7807) when rejecting an unsupported Extended CONNECT ':protocol' value.

websocket, http

normative-requirement §3 SHOULD

If a server advertises support for Extended CONNECT but receives an Extended CONNECT request with a ':protocol' value that is unknown or not supported, the server SHOULD respond with a 501 (Not Implemented) status code.

websocket, http, quic

protocol-element §3

HTTP/3 stream closure maps to WebSocket connection closure analogously to TCP: orderly closure is represented as a FIN bit on the stream (Section 4.4 of HTTP/3), and RST exceptions are represented with a stream error of type H3_REQUEST_CANCELLED (Section 8.1 of HTTP/3).

websocket, http, quic

protocol-element §3

The Extended CONNECT method for HTTP/3 uses the same ':protocol', ':path', and ':authority' pseudo-header field semantics as defined in RFC 8441 for HTTP/2, with no changes to their meaning.

websocket, http, quic

protocol-element §3

The SETTINGS_ENABLE_CONNECT_PROTOCOL setting is registered for HTTP/3 with value 0x08 (decimal 8), identical to its HTTP/2 value. This setting is sent by a server to allow the client to use Extended CONNECT.

websocket, http, quic, registry

registry §5

This document registers SETTINGS_ENABLE_CONNECT_PROTOCOL (value 0x08, default 0, status permanent) in the IANA 'HTTP/3 Settings' registry (Section 11.2.2 of RFC 9114).

registry, websocket, http, quic

security-consideration §4

This document introduces no new security considerations beyond those discussed in RFC 8441 (Bootstrapping WebSockets with HTTP/2).

security, websocket, http, quic