<?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.21 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-richter-webtransport-websocket-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="WebTransport-WS">WebTransport over WebSocket</title>
    <seriesInfo name="Internet-Draft" value="draft-richter-webtransport-websocket-02"/>
    <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>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.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 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="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <date day="25" month="August" year="2024"/>
            <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-08"/>
        </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="21" month="October" year="2024"/>
            <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-11"/>
        </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="21" month="October" year="2024"/>
            <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-10"/>
        </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 201?>

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