<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-richter-webtransport-websocket-06" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="WebTransport-WS">WebTransport over WebSocket</title>
    <seriesInfo name="Internet-Draft" value="draft-richter-webtransport-websocket-06"/>
    <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 that can be implemented 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-version-negotiation-and-application-level-protocol">
        <name>Connection, version negotiation and application level protocol</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_VERSIONNAME" or additionally "webtransport_VERSIONNAME_APPLICATIONLEVELPROTOCOL, where VERSIONNAME identifies the particular protocol version and APPLICATIONLEVELPROTOCOL an application-level protocol. For this protocol version, VERSIONNAME would be "kDraft3" and the |Sec-WebSocket-Protocol| field would include "webtransport_kDraft2" or additionally "webtransport_kDraft2_application_level_protocol" for an application-level protocol "application_level_protocol".
The application level protocol is the same available handled via <tt>WT-Available-Protocols</tt> and <tt>WT-Protocol</tt>  described in <xref section="3.4" sectionFormat="of" target="WEBTRANSPORT-H2"/> and <xref section="3.4" sectionFormat="of" target="WEBTRANSPORT-H3"/>.
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>For closing a session, a CLOSE_WEBTRANSPORT_SESSION capsule followed by the CLOSE frame <xref section="5.5.1" sectionFormat="of" target="WEBSOCKET"/> is sent.</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.2" 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="4.3" 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" and "webtransport_VERSION_SUBPROTOCOL," where VERSION is an alphanumeric string denoting the subprotocol version of this protocol and SUBPROTOCOL can be any application-level string, 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 WebTransport 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-version-negotiation-and-application-level-protocol"/>.  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 anchor="sec-combined-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="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="6" month="July" year="2026"/>
            <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 is optional.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-overview-13"/>
        </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="3" month="March" year="2025"/>
            <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-12"/>
        </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="Woo Xie" initials="W." surname="Xie">
              <organization>Facebook Inc.</organization>
            </author>
            <date day="16" month="March" year="2025"/>
            <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-11"/>
        </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 202?>

<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>
