<?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.36 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-richter-webtransport-websocket-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="WebTransport-WS">WebTransport over WebSocket</title>
    <seriesInfo name="Internet-Draft" value="draft-richter-webtransport-websocket-05"/>
    <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="2" month="March" 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 may be optional.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-overview-12"/>
        </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>
