<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-richter-webtransport-websocket-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="WebTransport-WS">WebTransport over WebSocket</title>
    <seriesInfo name="Internet-Draft" value="draft-richter-webtransport-websocket-04"/>
    <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="20" month="October" year="2025"/>
            <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-11"/>
        </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="Guowu Xie" initials="G." 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>
