<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.4 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-richter-webtransport-websocket-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.0 -->
  <front>
    <title abbrev="WebTransport-WS">WebTransport over WebSocket</title>
    <seriesInfo name="Internet-Draft" value="draft-richter-webtransport-websocket-00"/>
    <author fullname="Marten Richter">
      <organization>Technische Universität Berlin</organization>
      <address>
        <email>marten.richter@tu-berlin.de</email>
      </address>
    </author>
    <date/>
    <area>art</area>
    <workgroup>webtrans</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 43?>

<t>WebTransport <xref target="OVERVIEW"/>, a protocol framework within the Web security model, empowers Web clients to initiate secure multiplexed transport for low-level client-server interactions with remote servers.
This document outlines a protocol, based on WebSocket <xref target="WEBSOCKET"/>, offering WebTransport capabilities similar to the HTTP/2 variant <xref target="WEBTRANSPORT-H2"/>. It serves as an alternative when UDP-based protocols are inaccessible, and the client environment exclusively supports WebSocket <xref target="WEBSOCKET"/>.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/martenrichter/draft-ietf-webtransport-websocket"/>.</t>
    </note>
  </front>
  <middle>
    <?line 48?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>WebTransport <xref target="OVERVIEW"/> is designed to facilitate communication for Web clients over HTTP/3 <xref target="HTTP3"/>, leveraging QUIC <xref target="QUIC"/> semantics with streams or datagrams <xref target="DATAGRAM"/>. In cases where UDP-based traffic is restricted, HTTP/2 protocol <xref target="WEBTRANSPORT-H2"/> serves as an alternative built solely on HTTP semantics.</t>
      <t>Both <xref target="WEBTRANSPORT-H2"/> and <xref target="WEBTRANSPORT-H3"/> variants require a native WebClient implementation due to the usual unavailability of plain UDP and TCP/IP socket access for scripts within WebClients</t>
      <t>This document defines a protocol implementable on the WebClient using available scripting languages, without altering the WebClient's native code.
It uses the widespread WebSocket protocol as the base without modification.
However, a direct implementation in a WebClient is possible.</t>
      <t>The protocol utilizes capsule semantics derived from <xref target="WEBTRANSPORT-H2"/> and translates them into WebSocket frames. By relying on WebSockets, also intermediates such as proxies
unaware of WebTransports can apply application layer processing.</t>
      <t>An implementation should support both WebSocket over http/1 and http/2.
The server should incorporate WebTransport flow control constraints and capsule processing into its WebSocket parser code. Therefore, using unmodified existing WebSocket code is not recommended.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The document follows the terminology defined in <xref section="1.2" sectionFormat="of" target="OVERVIEW"/>.</t>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>WebTransport servers are identified by an HTTPS URI per <xref section="4.2.2" sectionFormat="of" target="HTTP"/>.</t>
      <t>The protocol uses <xref target="WEBTRANSPORT-H2"/> semantics with the following modifications.</t>
      <section anchor="connection-and-version-negotiation">
        <name>Connection and version negotiation</name>
        <t>The WebSocket connection is established according to <xref section="4" sectionFormat="of" target="WEBSOCKET"/> or <xref target="WEBSOCKET-H2"/>.</t>
        <t>When a WebSocket connection is established, both the client and server select the WebTransport-Websocket protocol by setting |Sec-WebSocket-Protocol| <xref section="1.9" sectionFormat="of" target="WEBSOCKET"/> to the supported versions. The protocol names follow the scheme "webtransport_VERSIONAME", where VERSIONNAME identifies the particular protocol version. For this protocol VERSIONAME would be "kDraft1" and the |Sec-WebSocket-Protocol| field would include "webtransport_kDraft1".
The protocol negotiation follows the procedures as described in <xref section="4.1" sectionFormat="of" target="WEBSOCKET"/> and <xref section="4.2.2" sectionFormat="of" target="WEBSOCKET"/>.
No protocol extensions <bcp14>MUST</bcp14> BE negotiated.</t>
      </section>
      <section anchor="data-framing">
        <name>Data framing</name>
        <t>The protocol uses the data frames as defined in <xref section="5" sectionFormat="of" target="WEBSOCKET"/>.
PING and PONG frame handling is not changed <xref section="5.5" sectionFormat="of" target="WEBSOCKET"/>.</t>
        <t>The CLOSE frame <xref section="5.5.1" sectionFormat="of" target="WEBSOCKET"/> replaces the mechanism invoked after CONNECT stream closure in <xref section="2" sectionFormat="of" target="WEBTRANSPORT-H2"/>.
The body <bcp14>MUST</bcp14> include a UTF-8 encoded reason string when transmitted by a protocol-aware client or server.
The reason string has the form "CODE:REASONSTRING", where CODE is a text representation of an unsigned 32-bit decimal integer in the range of between 0x00000000 and
0xffffffff <xref section="4.3" sectionFormat="of" target="WEBTRANSPORT-H3"/>. REASONSTRING is the actual reason transmitted
through WebTransport.
A close FRAME without a reason may be sent by protocol-unaware WebClients or proxies. In such instances, the CODE and REASONSTRING are reconstructed using the WebSocket Close Code Number as specified in the WebSocketCloseCode Registry outlined in <xref section="11.7" sectionFormat="of" target="WEBSOCKET"/>.</t>
        <t>Data Frames containing Text are reserved for future use and <bcp14>MUST NOT</bcp14> be sent.
Binary Data Frames transport CAPSULE content defined in <xref target="WEBTRANSPORT-H2"/> and <xref target="DATAGRAM"/>. For details, refer to the next section <xref target="capsule-frames"/>. Their length is limited by WebTransport flow control, and a violation <bcp14>SHOULD</bcp14> lead to connection termination.
CONTINUATION frames are processed per <xref target="WEBSOCKET"/> specifications. Given the streaming nature of the content, partial DATA frames or CONTINUATION frames should be promptly forwarded to corresponding streams reducing latency.</t>
      </section>
      <section anchor="capsule-frames">
        <name>Capsule frames</name>
        <t>This protocol adopts the mechanisms and intrinsic elements outlined in <xref target="WEBTRANSPORT-H2"/>, which itself is constructed upon the CAPSULE protocol originating from <xref target="DATAGRAM"/>.</t>
        <t>A CAPSULE has the form in <xref target="DATAGRAM"/>:</t>
        <artwork><![CDATA[
Capsule {
  Capsule Type (i),
  Capsule Length (i),
  Capsule Value (..),
}
]]></artwork>
        <t>where Capsule Type and Length are variable-length integers.
The Capsule Value represents the payload of the capsule, and its semantics are determined by the payload type</t>
        <t>In the context of WebTransport over WebSockets, CAPSULEs are substituted by binary DATA FRAMES of WebSockets, following the format:</t>
        <artwork><![CDATA[
WebSocketDataFrameCapsule {
  FrameHeader (..),
  PayloadData (..)
}
]]></artwork>
        <t>FrameHeader contains the first two bytes of the FRAME, and if present the extended payload length and masking key as defined in <xref section="5.2" sectionFormat="of" target="WEBSOCKET"/>.
PayloadData is defined as:</t>
        <artwork><![CDATA[
PayloadData {
  Capsule Type (i),
  Capsule Value (..)
}
]]></artwork>
        <t>with the variable length integer Capsule Type and Capsule Value as in the CAPSULE protocol.</t>
        <t>Capsule length can be calculated from the Payload Length as set in <xref section="5.2" sectionFormat="of" target="WEBSOCKET"/>:</t>
        <artwork><![CDATA[
  Capsule Length = Payload Length - sizeof(Capsule Type),
]]></artwork>
        <t>as no Extension Data is allowed.</t>
      </section>
      <section anchor="replacement-for-settings">
        <name>Replacement for SETTINGS</name>
        <t><xref section="3.1" sectionFormat="of" target="WEBTRANSPORT-H2"/> requires sending an SETTINGS_WEBTRANSPORT_MAX_SESSIONS settings parameter. This is not required here, as the protocol type is negotiated using the
subprotocol mechanism of WebSockets and SETTINGS_WEBTRANSPORT_MAX_SESSIONS equal to 1 is assumed per WebSocket connection(HTTP1)/stream(HTTP2).
Subsections of <xref section="3.4" sectionFormat="of" target="WEBTRANSPORT-H2"/> require sending initial SETTINGS for flow control. As SETTINGS are not accessible for the WebSocket protocol using the existing WebSocket interfaces, a replacement is required.</t>
        <t>Therefore client and server <bcp14>MUST</bcp14> send the initial flow control values using CAPSULES
immediately before ANY other capsules such as WT_STREAM or DATAGRAM capsules have been sent.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>The protocol is implemented in a <eref target="https://github.com/fails-components/webtransport">node.js package</eref>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref section="10" sectionFormat="of" target="WEBSOCKET"/> also apply here.
The last paragraph of <xref section="8" sectionFormat="of" target="WEBTRANSPORT-H2"/> is equally applicable to this protocol.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="websocket-subprotocol-name-registry">
        <name>WebSocket Subprotocol Name Registry</name>
        <t>All possible subprotocol names following the format "webtransport_VERSION," where VERSION is an alphanumeric string denoting the subprotocol version of this protocol, are added to the registry as domains for this protocol and its successors.</t>
      </section>
      <section anchor="webtransport-websocket-protocol-version-registry">
        <name>WebTransport WebSocket Protocol Version Registry</name>
        <t>This specification establishes a new IANA registry for WebTransort Protocol Version names, intended for use with the WebSocket WebTransport Protocol, in alignment with the principles outlined in <xref target="RFC5226"/>.</t>
        <t>As part of this registry, IANA manages the following information (similar to <xref target="WEBSOCKET"/> versions):</t>
        <t>Version String
      The version string name as part of the subprotocol defined in <xref target="websocket-subprotocol-name-registry"/> and <xref target="connection-and-version-negotiation"/>.  The value must only include alphanumeric characters.</t>
        <t>Reference
      The RFC requesting a new version number or a draft name with
      version number (see below).</t>
        <t>Status
      Either "Interim" or "Standard".  See below for a description.</t>
        <t>A version string can be either "Interim" or "Standard".</t>
        <t>A "Standard" version string is part of an RFC and identifies a major, stable version of the WebTransport-WebSocket protocol. The "IETF Review" IANA registration policy <xref target="RFC5226"/> applies to "Standard" version string.</t>
        <t>An Internet-Draft documents an "Interim" version string. Internet-Drafts helps implementors to identify and interoperate with the WebTransport-WebSocket protocol,
  as this current draft. The "Expert Review" IANA registration policy <xref target="RFC5226"/> applies to the "Interim" version names. The initial Designated Experts need to be determined.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="OVERVIEW">
          <front>
            <title>The WebTransport Protocol Framework</title>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <date day="6" month="September" year="2023"/>
            <abstract>
              <t>   The WebTransport Protocol Framework enables clients constrained by
   the Web security model to communicate with a remote server using a
   secure multiplexed transport.  It consists of a set of individual
   protocols that are safe to expose to untrusted applications, combined
   with an abstract model that allows them to be used interchangeably.

   This document defines the overall requirements on the protocols used
   in WebTransport, as well as the common features of the protocols,
   support for some of which may be optional.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-overview-06"/>
        </reference>
        <reference anchor="WEBTRANSPORT-H3">
          <front>
            <title>WebTransport over HTTP/3</title>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Facebook</organization>
            </author>
            <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   WebTransport [OVERVIEW] is a protocol framework that enables clients
   constrained by the Web security model to communicate with a remote
   server using a secure multiplexed transport.  This document describes
   a WebTransport protocol that is based on HTTP/3 [HTTP3] and provides
   support for unidirectional streams, bidirectional streams and
   datagrams, all multiplexed within the same HTTP/3 connection.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http3-08"/>
        </reference>
        <reference anchor="WEBTRANSPORT-H2">
          <front>
            <title>WebTransport over HTTP/2</title>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Facebook Inc.</organization>
            </author>
            <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <author fullname="Guowu Xie" initials="G." surname="Xie">
              <organization>Facebook Inc.</organization>
            </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   WebTransport defines a set of low-level communications features
   designed for client-server interactions that are initiated by Web
   clients.  This document describes a protocol that can provide many of
   the capabilities of WebTransport over HTTP/2.  This protocol enables
   the use of WebTransport when a UDP-based protocol is not available.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http2-07"/>
        </reference>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="Roy T. Fielding" initials="R. T." surname="Fielding">
              <organization>Adobe</organization>
            </author>
            <author fullname="Mark Nottingham" initials="M." surname="Nottingham">
              <organization>Fastly</organization>
            </author>
            <author fullname="Julian Reschke" initials="J." surname="Reschke">
              <organization>greenbytes GmbH</organization>
            </author>
            <date day="12" month="September" year="2021"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.

 This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-semantics-19"/>
        </reference>
        <reference anchor="WEBSOCKET">
          <front>
            <title>The WebSocket Protocol</title>
            <author fullname="I. Fette" initials="I." surname="Fette"/>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code. The security model used for this is the origin-based security model commonly used by web browsers. The protocol consists of an opening handshake followed by basic message framing, layered over TCP. The goal of this technology is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or s and long polling). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6455"/>
          <seriesInfo name="DOI" value="10.17487/RFC6455"/>
        </reference>
        <reference anchor="WEBSOCKET-H2">
          <front>
            <title>Bootstrapping WebSockets with HTTP/2</title>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="September" year="2018"/>
            <abstract>
              <t>This document defines a mechanism for running the WebSocket Protocol (RFC 6455) over a single stream of an HTTP/2 connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8441"/>
          <seriesInfo name="DOI" value="10.17487/RFC8441"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC5226">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <author fullname="H. Alvestrand" initials="H." surname="Alvestrand"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>Many protocols make use of identifiers consisting of constants and other well-known values. Even after a protocol has been defined and deployment has begun, new values may need to be assigned (e.g., for a new option type in DHCP, or a new encryption or authentication transform for IPsec). To ensure that such quantities have consistent values and interpretations across all implementations, their assignment must be administered by a central authority. For IETF protocols, that role is provided by the Internet Assigned Numbers Authority (IANA).</t>
              <t>In order for IANA to manage a given namespace prudently, it needs guidelines describing the conditions under which new values can be assigned or when modifications to existing values can be made. If IANA is expected to play a role in the management of a namespace, IANA must be given clear and concise instructions describing that role. This document discusses issues that should be considered in formulating a policy for assigning values to a namespace and provides guidelines for authors on the specific text that must be included in documents that place demands on IANA.</t>
              <t>This document obsoletes RFC 2434. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5226"/>
          <seriesInfo name="DOI" value="10.17487/RFC5226"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="DATAGRAM">
          <front>
            <title>An Unreliable Datagram Extension to QUIC</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="E. Kinnear" initials="E." surname="Kinnear"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>This document defines an extension to the QUIC transport protocol to add support for sending and receiving unreliable datagrams over a QUIC connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9221"/>
          <seriesInfo name="DOI" value="10.17487/RFC9221"/>
        </reference>
        <reference anchor="HTTP3">
          <front>
            <title>HTTP/3</title>
            <author fullname="Mike Bishop" initials="M." surname="Bishop">
              <organization>Akamai</organization>
            </author>
            <date day="2" month="February" year="2021"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment.  This document describes a mapping of HTTP semantics over QUIC.  This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-34"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
      </references>
    </references>
    <?line 206?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Parts of the text were rephrased using ChatGPT. Portions of this document are based upon a modification of text parts from the underlying standards.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
