<?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.7 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-webtrans-http2-08" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <front>
    <title abbrev="WebTransport-H2">WebTransport over HTTP/2</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http2-08"/>
    <author initials="A." surname="Frindell" fullname="Alan Frindell">
      <organization>Facebook Inc.</organization>
      <address>
        <email>afrind@fb.com</email>
      </address>
    </author>
    <author initials="E." surname="Kinnear" fullname="Eric Kinnear">
      <organization>Apple Inc.</organization>
      <address>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino, California 95014</city>
          <country>United States of America</country>
        </postal>
        <email>ekinnear@apple.com</email>
      </address>
    </author>
    <author initials="T." surname="Pauly" fullname="Tommy Pauly">
      <organization>Apple Inc.</organization>
      <address>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino, California 95014</city>
          <country>United States of America</country>
        </postal>
        <email>tpauly@apple.com</email>
      </address>
    </author>
    <author initials="M." surname="Thomson" fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <author initials="V." surname="Vasiliev" fullname="Victor Vasiliev">
      <organization>Google</organization>
      <address>
        <email>vasilvv@google.com</email>
      </address>
    </author>
    <author initials="G." surname="Xie" fullname="Guowu Xie">
      <organization>Facebook Inc.</organization>
      <address>
        <email>woo@fb.com</email>
      </address>
    </author>
    <date/>
    <area>art</area>
    <workgroup>webtrans</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 65?>

<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>
    <note>
      <name>Note to Readers</name>
      <?line 73?>

<t>Discussion of this draft takes place on the WebTransport mailing list
(<eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref>), which is archived at
<eref target="https://mailarchive.ietf.org/arch/search/?email_list=webtransport"/>.</t>
      <t>The repository tracking the issues for this draft can be found at
<eref target="https://github.com/ietf-wg-webtrans/draft-webtransport-http2"/>. The web API
draft corresponding to this document can be found at
<eref target="https://w3c.github.io/webtransport/"/>.</t>
    </note>
  </front>
  <middle>
    <?line 84?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>WebTransport <xref target="OVERVIEW"/> is designed to provide generic communication
capabilities to Web clients that use HTTP/3 <xref target="HTTP3"/>.  The
HTTP/3 WebTransport protocol <xref target="WEBTRANSPORT-H3"/> allows Web clients to use QUIC
<xref target="QUIC"/> features such as streams or datagrams <xref target="DATAGRAM"/>.
However, there are some environments where QUIC cannot be deployed.</t>
      <t>This document defines a protocol that provides all of the core functions of
WebTransport using HTTP semantics. This includes unidirectional streams,
bidirectional streams, and datagrams.</t>
      <t>By relying only on generic HTTP semantics, this protocol might allow deployment
using any HTTP version.  However, this document only defines negotiation for
HTTP/2 <xref target="HTTP2"/> as the current most common TCP-based fallback to HTTP/3.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>
        <t>This document follows terminology defined in <xref section="1.2" sectionFormat="of" target="OVERVIEW"/>. Note
that this document distinguishes between a WebTransport server and an HTTP/2
server. An HTTP/2 server is the server that terminates HTTP/2 connections; a
WebTransport server is an application that accepts WebTransport sessions, which
can be accessed using HTTP/2 and this protocol.</t>
      </section>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>WebTransport servers are identified by an HTTPS URI as defined in <xref section="4.2.2" sectionFormat="of" target="HTTP"/>.</t>
      <t>When an HTTP/2 connection is established, both the client and server have to
send a SETTINGS_WEBTRANSPORT_MAX_SESSIONS setting with a value greater than "0"
to indicate that they both support WebTransport over HTTP/2. For servers, the
value of the setting is the number of concurrent sessions the server is willing
to receive. Clients cannot receive incoming WebTransport sessions, so any value
greater than "0" sent by a client simply indicates support for WebTransport
over HTTP/2.</t>
      <t>A client initiates a WebTransport session by sending an extended CONNECT request
<xref target="RFC8441"/>. If the server accepts the request, a WebTransport session is
established. The stream that carries the CONNECT request is used to exchange
bidirectional data for the session. This stream will be referred to as a
<em>CONNECT stream</em>.  The stream ID of a CONNECT stream, which will be referred to
as a <em>Session ID</em>, is used to uniquely identify a given WebTransport session
within the connection.  WebTransport using HTTP/2 uses extended CONNECT with
the same <tt>webtransport</tt> HTTP Upgrade Token as <xref target="WEBTRANSPORT-H3"/>.  This
Upgrade Token uses the Capsule Protocol as defined in <xref target="HTTP-DATAGRAM"/>.</t>
      <t>After the session is established, endpoints exchange WebTransport messages using
the Capsule Protocol on the bidirectional CONNECT stream, the "data stream" as
defined in <xref section="3.1" sectionFormat="of" target="HTTP-DATAGRAM"/>.</t>
      <t>Within this stream, <em>WebTransport streams</em> and <em>WebTransport datagrams</em> are
multiplexed.  In HTTP/2, WebTransport capsules are carried in HTTP/2 DATA
frames. Multiple independent WebTransport sessions can share a connection if
the HTTP version supports that, as HTTP/2 does.</t>
      <t>WebTransport capsules closely mirror a subset of QUIC frames and provide the
essential WebTransport features.  Within a WebTransport session, endpoints can</t>
      <ul spacing="normal">
        <li>
          <t>create and use bidirectional or unidirectional streams with no additional
round trips using the <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsule</t>
        </li>
      </ul>
      <t>Stream creation and data flow on streams uses flow control mechanisms modeled on
those in QUIC. Flow control is managed using the WebTransport capsules:
<iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref>, <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref>, <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref>, <iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref>,
<iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_DATA_BLOCKED</xref>, and <iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref>. Flow control for the CONNECT
stream as a whole, as provided by the HTTP version in use, applies in addition
to any WebTransport-session-level flow control.</t>
      <t>WebTransport streams can be aborted using a <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule and a
receiver can request that a sender stop sending with a <iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref>
capsule.</t>
      <t>A WebTransport session is terminated when the CONNECT stream that created it is
closed. This implicitly closes all WebTransport streams that were
multiplexed over that CONNECT stream.</t>
    </section>
    <section anchor="session-establishment">
      <name>Session Establishment</name>
      <section anchor="establishing-a-transport-capable-http2-connection">
        <name>Establishing a Transport-Capable HTTP/2 Connection</name>
        <t>In order to indicate support for WebTransport, both the client and the server
MUST send a SETTINGS_WEBTRANSPORT_MAX_SESSIONS value greater than "0" in their
SETTINGS frame. Endpoints MUST NOT use any WebTransport-related functionality
unless the parameter has been negotiated.</t>
      </section>
      <section anchor="extended-connect-in-http2">
        <name>Extended CONNECT in HTTP/2</name>
        <t><xref target="RFC8441"/> defines an extended CONNECT method in <xref target="features"/>, enabled by the
SETTINGS_ENABLE_CONNECT_PROTOCOL parameter. An endpoint needs to send both
SETTINGS_ENABLE_CONNECT_PROTOCOL and SETTINGS_WEBTRANSPORT_MAX_SESSIONS for
WebTransport to be enabled.</t>
      </section>
      <section anchor="creating-a-new-session">
        <name>Creating a New Session</name>
        <t>As WebTransport sessions are established over HTTP, they are identified
using the <tt>https</tt> URI scheme <xref target="RFC7230"/>.</t>
        <t>In order to create a new WebTransport session, a client can send an HTTP CONNECT
request. The <tt>:protocol</tt> pseudo-header field (<xref target="RFC8441"/>) MUST be set to
<tt>webtransport</tt> (<xref section="7.1" sectionFormat="of" target="WEBTRANSPORT-H3"/>). The <tt>:scheme</tt> field MUST be
<tt>https</tt>. Both the <tt>:authority</tt> and the <tt>:path</tt> value MUST be set; those fields
indicate the desired WebTransport server. In a Web context, the request MUST
include an <tt>Origin</tt> header field <xref target="ORIGIN"/> that includes the origin of
the site that requested the creation of the session.</t>
        <t>Upon receiving an extended CONNECT request with a <tt>:protocol</tt> field set to
<tt>webtransport</tt>, the HTTP server checks if the identified resource supports
WebTransport sessions. If the resource does not, the server SHOULD reply with
status code 406 (<xref section="15.5.7" sectionFormat="of" target="RFC9110"/>). If it does, it MAY accept the
session by replying with a 2xx series status code, as defined in <xref section="15.3" sectionFormat="of" target="SEMANTICS"/>. The WebTransport server MUST verify
the <tt>Origin</tt> header to ensure that the specified origin is allowed to access
the server in question.</t>
        <t>A WebTransport session is established when the server sends a 2xx response. A
server generates that response from the request header, not from the contents
of the request. To enable clients to resend data when attempting to
re-establish a session that was rejected by a server, a server MUST NOT process
any capsules on the request stream unless it accepts the WebTransport session.</t>
        <t>A client MAY optimistically send any WebTransport capsules associated with a
CONNECT request, without waiting for a response, to the extent allowed by flow
control. This can reduce latency for data sent by a client at the start of a
WebTransport session. For example, a client might choose to send datagrams or
flow control updates before receiving any response from the server.</t>
      </section>
      <section anchor="flow-control">
        <name>Flow Control</name>
        <t>Flow control governs the amount of resources that can be consumed or data that
can be sent. WebTransport over HTTP/2 allows a server to limit the number of
sessions that a client can create on a single connection; see
<xref target="flow-control-limit-sessions"/>.</t>
        <t>For data, there are five applicable levels of flow control for data that is sent
or received using WebTransport over HTTP/2:</t>
        <ol spacing="normal" type="1"><li>
            <t>TCP flow control.</t>
          </li>
          <li>
            <t>HTTP/2 connection flow control, which governs the total amount of data in
DATA frames for all HTTP/2 streams.</t>
          </li>
          <li>
            <t>HTTP/2 stream flow control, which limits the data on a single HTTP/2 stream.
For a WebTransport session, this includes all capsules, including those that
are exempt from WebTransport session-level flow control.</t>
          </li>
          <li>
            <t>WebTransport session-level flow control, which limits the total amount of
stream data that can be sent or received on streams within the WebTransport
session. Note that this does not limit other types of capsules within a
WebTransport session, such as control messages or datagrams.</t>
          </li>
          <li>
            <t>WebTransport stream flow control, which limits data on individual streams
within a session.</t>
          </li>
        </ol>
        <t>TCP and HTTP/2 define the first three levels of flow control. This document
defines the final two.</t>
        <section anchor="flow-control-limit-sessions">
          <name>Limiting the Number of Simultaneous Sessions</name>
          <t>This document defines a SETTINGS_WEBTRANSPORT_MAX_SESSIONS parameter that allows
the server to limit the maximum number of concurrent WebTransport sessions on a
single HTTP/2 connection.  The client MUST NOT open more sessions than
indicated in the server SETTINGS parameters.  The server MUST NOT close the
connection if the client opens sessions exceeding this limit, as the client and
the server do not have a consistent view of how many sessions are open due to
the asynchronous nature of the protocol; instead, it MUST reset all of the
CONNECT streams it is not willing to process with the <tt>REFUSED_STREAM</tt>
error code (<xref section="8.7" sectionFormat="of" target="HTTP2"/>).</t>
          <t>Just like other HTTP requests, WebTransport sessions, and data sent on those
sessions, are counted against flow control limits.  Servers that wish to limit
the rate of incoming requests on any particular session have multiple
mechanisms:</t>
          <ul spacing="normal">
            <li>
              <t>The <tt>REFUSED_STREAM</tt> error code defined in <xref section="8.7" sectionFormat="of" target="HTTP2"/>
indicates to the receiving HTTP/2 stack that the request was not processed in
any way.</t>
            </li>
            <li>
              <t>HTTP status code 429 indicates that the request was rejected due to rate
limiting <xref target="RFC6585"/>.  Unlike the previous method, this signal is directly
propagated to the application.</t>
            </li>
          </ul>
          <t>An endpoint that wishes to reduce the value of
SETTINGS_WEBTRANSPORT_MAX_SESSIONS to a value that is below the current number
of open sessions can either close sessions that exceed the new value or allow
those sessions to complete. Endpoints MUST NOT reduce the value of
SETTINGS_WEBTRANSPORT_MAX_SESSIONS to "0" after previously advertising a
non-zero value.</t>
        </section>
        <section anchor="flow-control-limit-streams">
          <name>Limiting the Number of Streams Within a Session</name>
          <t>This document defines a <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule (<xref target="WT_MAX_STREAMS"/>) that allows
each endpoint to limit the number of streams its peer is permitted to open as
part of a WebTransport session.  There is a separate limit for bidirectional
streams and for unidirectional streams.  Note that, unlike WebTransport over
HTTP/3 <xref target="WEBTRANSPORT-H3"/>, because the entire WebTransport session is
contained within HTTP/2 DATA frames on a single HTTP/2 stream, this limit is
the only mechanism for an endpoint to limit the number of WebTransport streams
that its peer can open on a session.</t>
        </section>
        <section anchor="flow-control-initial">
          <name>Initial Flow Control Limits</name>
          <t>To allow stream data to be exchanged in the same flight as the extended CONNECT
request that establishes a WebTransport session, initial flow control limits
can be exchanged via HTTP/2 SETTINGS (<xref target="flow-control-settings"/>).  Initial
values for the flow control limits can also be exchanged via the
<tt>WebTransport-Init</tt> header field on the extended CONNECT request
(<xref target="flow-control-header"/>).</t>
          <t>The limits communicated via HTTP/2 SETTINGS apply to all WebTransport sessions
opened on that HTTP/2 connection.  Limits communicated via the
<tt>WebTransport-Init</tt> header field apply only to the WebTransport session
established by the extended CONNECT request carrying that field.</t>
          <t>If both the SETTINGS and the header field are present when a WebTransport
session is established, the endpoint MUST use the greater of the two values for
each corresponding initial flow control value.  Endpoints sending the SETTINGS
and also including the header field SHOULD ensure that the header field values
are greater than or equal to the values provided in the SETTINGS.</t>
          <section anchor="flow-control-settings">
            <name>Flow Control SETTINGS</name>
            <t>Initial flow control limits can be exchanged via HTTP/2 SETTINGS
(<xref target="h2-settings"/>) by providing non-zero values for</t>
            <ul spacing="normal">
              <li>
                <t><iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> via <iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA</xref></t>
              </li>
              <li>
                <t><iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> via <iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI</xref> and
<iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI</xref></t>
              </li>
              <li>
                <t><iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> via <iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI</xref> and
<iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI</xref></t>
              </li>
            </ul>
          </section>
          <section anchor="flow-control-header">
            <name>Flow Control Header Field</name>
            <t>The <tt>WebTransport-Init</tt> HTTP header field can be used to communicate the initial
values of the flow control windows, similar to how QUIC uses transport
parameters.  The <tt>WebTransport-Init</tt> is a Dictionary Structured Field
(<xref section="3.2" sectionFormat="of" target="RFC8941"/>).  If any of the fields cannot be parsed correctly
or do not have the correct type, the peer MUST reset the CONNECT stream.  The
following keys are defined for the <tt>WebTransport-Init</tt> header field:</t>
            <dl>
              <dt><tt>u</tt>:</dt>
              <dd>
                <t>The initial flow control limit for unidirectional streams opened by the
recipient of this header field.  MUST be an Integer.</t>
              </dd>
              <dt><tt>bl</tt>:</dt>
              <dd>
                <t>The initial flow control limit for the bidirectional streams opened by the
sender of this header field.  MUST be an Integer.</t>
              </dd>
              <dt><tt>br</tt>:</dt>
              <dd>
                <t>The initial flow control limit for the bidirectional streams opened by the
recipient of this header field.  MUST be an Integer.</t>
              </dd>
            </dl>
          </section>
        </section>
        <section anchor="flow-control-intermediaries">
          <name>Flow Control and Intermediaries</name>
          <t>WebTransport over HTTP/2 uses several capsules for flow control, and all of
these capsules define special intermediary handling as described in
<xref section="3.2" sectionFormat="of" target="HTTP-DATAGRAM"/>.  These capsules, referred to as the "flow
control capsules" are <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref>, <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref>, <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref>,
<iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref>, <iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_DATA_BLOCKED</xref>, and <iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref>.</t>
          <t>Because flow control in WebTransport is hop-by-hop and does not provide an
end-to-end signal, intermediaries MUST consume flow control signals and express
their own flow control limits to the next hop. The intermediary can send these
signals via HTTP/3 flow control messages, HTTP/2 flow control messages, or as
WebTransport flow control capsules, where appropriate. Intermediaries are
responsible for storing any data for which they advertise flow control credit
if that data cannot be immediately forwarded to the next hop.</t>
          <t>In practice, an intermediary that translates flow control signals between
similar WebTransport protocols, such as between two HTTP/2 connections, can
often simply reexpress the same limits received on one connection directly on
the other connection.</t>
          <t>An intermediary that does not want to be responsible for storing data that
cannot be immediately sent on its translated connection would ensure that it
does not advertise a higher flow control limit on one connection than the
corresponding limit on the translated connection.</t>
        </section>
      </section>
    </section>
    <section anchor="features">
      <name>WebTransport Features</name>
      <t>WebTransport over TCP-based HTTP semantics provides the following features
described in <xref target="OVERVIEW"/>: unidirectional streams, bidirectional streams, and
datagrams, initiated by either endpoint.</t>
      <t>WebTransport streams and datagrams that belong to different WebTransport
sessions are identified by the CONNECT stream on which they are transmitted,
with one WebTransport session consuming one CONNECT stream.</t>
      <section anchor="transport-properties">
        <name>Transport Properties</name>
        <t>The WebTransport framework <xref target="OVERVIEW"/> defines a set of optional transport
properties that clients can use to determine the presence of features which
might allow additional optimizations beyond the common set of properties
available via all WebTransport protocols.</t>
        <t>Because WebTransport over TCP-based HTTP semantics relies on the underlying
protocols to provide in order and reliable delivery, there are some notable
differences from the way in which QUIC handles application data. For example,
endpoints send stream data in order. As there is no ordering mechanism
available for the receiver to reassemble incoming data, receivers assume that
all data arriving in <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules is contiguous and in order.</t>
        <t>Below are details about support in WebTransport over HTTP/2 for the properties
defined by the WebTransport framework.</t>
        <dl>
          <dt>Stream Independence:</dt>
          <dd>
            <t>WebTransport over HTTP/2 does not support stream independence, as HTTP/2
inherently has head-of-line blocking.</t>
          </dd>
          <dt>Partial Reliability:</dt>
          <dd>
            <t>WebTransport over HTTP/2 does not support partial reliability, as HTTP/2
retransmits any lost data. This means that any datagrams sent via
WebTransport over HTTP/2 will be retransmitted regardless of the preference
of the application. The receiver is permitted to drop them, however, if it is
unable to buffer them.</t>
          </dd>
          <dt>Pooling Support:</dt>
          <dd>
            <t>WebTransport over HTTP/2 supports pooling, as multiple transports using
WebTransport over HTTP/2 may share the same underlying HTTP/2 connection and
therefore share a congestion controller and other transport context. Note
that WebTransport streams over HTTP/2 are contained within a single HTTP/2
stream and do not compete with other pooled WebTransport sessions for
per-stream resources.</t>
          </dd>
          <dt>Connection Mobility:</dt>
          <dd>
            <t>WebTransport over HTTP/2 does not support connection mobility, unless an
underlying transport protocol that supports multipath or migration, such as
MPTCP <xref target="MPTCP"/>, is used underneath HTTP/2 and TLS. Without such
support, WebTransport over HTTP/2 connections cannot survive network
transitions.</t>
          </dd>
        </dl>
      </section>
      <section anchor="webtransport-streams">
        <name>WebTransport Streams</name>
        <t>WebTransport streams have identifiers and states that mirror the identifiers
((<xref section="2.1" sectionFormat="of" target="RFC9000"/>)) and states (<xref section="3" sectionFormat="of" target="RFC9000"/>) of QUIC
streams as closely as possible to aid in ease of implementation.</t>
        <t>WebTransport streams are identified by a numeric value, or stream ID. Stream IDs
are only meaningful within the WebTransport session in which they were created.
They share the same semantics as QUIC stream IDs, with client initiated streams
having even-numbered stream IDs and server-initiated streams having
odd-numbered stream IDs. Similarly, they can be bidirectional or
unidirectional, indicated by the second least significant bit of the
stream ID.</t>
        <t>Because WebTransport does not provide an acknowledgement mechanism for
WebTransport capsules, it relies on the underlying transport's in order delivery
to inform stream state transitions. Wherever QUIC relies on receiving an ack
for a packet to transition between stream states, WebTransport performs that
transition immediately.</t>
      </section>
    </section>
    <section anchor="webtransport-capsules">
      <name>WebTransport Capsules</name>
      <t>WebTransport capsules mirror their QUIC frame counterparts as closely as
possible to enable maximal reuse of any applicable QUIC infrastructure by
implementors.</t>
      <t>WebTransport capsules use the Capsule Protocol defined in <xref section="3.2" sectionFormat="of" target="HTTP-DATAGRAM"/>.</t>
      <section anchor="PADDING">
        <name>PADDING Capsule</name>
        <t>A <iref item="PADDING"/><xref target="PADDING" format="none">PADDING</xref> capsule is an HTTP capsule <xref target="HTTP-DATAGRAM"/> of type=0x190B4D38 and
has no semantic value. <iref item="PADDING"/><xref target="PADDING" format="none">PADDING</xref> capsules can be used to introduce additional
data between other HTTP datagrams and can also be used to provide protection
against traffic analysis or for other reasons.</t>
        <t>Note that, when used with WebTransport over HTTP/2, the <iref item="PADDING"/><xref target="PADDING" format="none">PADDING</xref> capsule exists
alongside the ability to pad HTTP/2 frames (<xref section="10.7" sectionFormat="of" target="RFC9113"/>).
HTTP/2 padding is hop-by-hop and can be modified by intermediaries, while the
<iref item="PADDING"/><xref target="PADDING" format="none">PADDING</xref> capsule traverses intermedaries. The <iref item="PADDING"/><xref target="PADDING" format="none">PADDING</xref> capsule is also
constrained to be no smaller than the capsule overhead itself.</t>
        <figure anchor="fig-padding">
          <name>PADDING Capsule Format</name>
          <artwork><![CDATA[
PADDING Capsule {
  Type (i) = 0x190B4D38,
  Length (i),
  Padding (..),
}
]]></artwork>
        </figure>
        <t>The Padding field MUST be set to an all-zero sequence of bytes of any length as
specified by the Length field.</t>
        <!-- TODO validation and error handling -->

</section>
      <section anchor="WT_RESET_STREAM">
        <name>WT_RESET_STREAM Capsule</name>
        <t>A <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule is an HTTP capsule <xref target="HTTP-DATAGRAM"/> of
type=0x190B4D39 and allows either endpoint to abruptly terminate the sending
part of a WebTransport stream.</t>
        <t>After sending a <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule, an endpoint ceases transmission of
<iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules on the identified stream. A receiver of a <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref>
capsule can discard any data that it already received on that stream.</t>
        <figure anchor="fig-wt_reset_stream">
          <name>WT_RESET_STREAM Capsule Format</name>
          <artwork><![CDATA[
WT_RESET_STREAM Capsule {
  Type (i) = 0x190B4D39,
  Length (i),
  Stream ID (i),
  Application Protocol Error Code (i),
}
]]></artwork>
        </figure>
        <t>The <iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref> capsule defines the following fields:</t>
        <dl>
          <dt>Stream ID:</dt>
          <dd>
            <t>A variable-length integer encoding of the WebTransport stream ID of the
stream being terminated.</t>
          </dd>
          <dt>Application Protocol Error Code:</dt>
          <dd>
            <t>A variable-length integer containing the application protocol error code
that indicates why the stream is being closed.</t>
          </dd>
        </dl>
        <t>Unlike the equivalent QUIC frame, this capsule does not include a Final Size
field. In-order delivery of <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules ensures that the amount of
session-level flow control consumed by a stream is always known by both
endpoints.</t>
      </section>
      <section anchor="WT_STOP_SENDING">
        <name>WT_STOP_SENDING Capsule</name>
        <t>An HTTP capsule <xref target="HTTP-DATAGRAM"/> called <iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref> (type=0x190B4D3A) is
introduced to communicate that incoming data is being discarded on receipt per
application request. <iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref> requests that a peer cease transmission on
a WebTransport stream.</t>
        <figure anchor="fig-wt_stop_sending">
          <name>WT_STOP_SENDING Capsule Format</name>
          <artwork><![CDATA[
WT_STOP_SENDING Capsule {
  Type (i) = 0x190B4D3A,
  Length (i),
  Stream ID (i),
  Application Protocol Error Code (i),
}
]]></artwork>
        </figure>
        <t>The <iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref> capsule defines the following fields:</t>
        <dl>
          <dt>Stream ID:</dt>
          <dd>
            <t>A variable-length integer carrying the WebTransport stream ID of the stream
being ignored.</t>
          </dd>
          <dt>Application Protocol Error Code:</dt>
          <dd>
            <t>A variable-length integer containing the application-specified reason the
sender is ignoring the stream.</t>
          </dd>
        </dl>
      </section>
      <section anchor="WT_STREAM">
        <name>WT_STREAM Capsule</name>
        <t><iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules implicitly create a WebTransport stream and carry stream
data.</t>
        <t>The Type field in the <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsule is either 0x190B4D3B or 0x190B4D3C.  The
least significant bit in the capsule type is the FIN bit (0x01), indicating
when set that the capsule marks the end of the stream in one direction.  Stream
data consists of any number of 0x190B4D3B capsules followed by a terminal
0x190B4D3C capsule.</t>
        <figure anchor="fig-wt_stream">
          <name>WT_STREAM Capsule Format</name>
          <artwork><![CDATA[
WT_STREAM Capsule {
  Type (i) = 0x190B4D3B..0x190B4D3C,
  Length (i),
  Stream ID (i),
  Stream Data (..),
}
]]></artwork>
        </figure>
        <t><iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules contain the following fields:</t>
        <dl>
          <dt>Stream ID:</dt>
          <dd>
            <t>The stream ID for the stream.</t>
          </dd>
          <dt>Stream Data:</dt>
          <dd>
            <t>Zero or more bytes of data for the stream.  Empty <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules MUST NOT
be used unless they open or close a stream; an endpoint MAY treat an empty
<iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsule that neither starts nor ends a stream as a session error.</t>
          </dd>
        </dl>
      </section>
      <section anchor="WT_MAX_DATA">
        <name>WT_MAX_DATA Capsule</name>
        <t>An HTTP capsule <xref target="HTTP-DATAGRAM"/> called <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> (type=0x190B4D3D) is
introduced to inform the peer of the maximum amount of data that can be sent on
the WebTransport session as a whole.</t>
        <figure anchor="fig-wt_max_data">
          <name>WT_MAX_DATA Capsule Format</name>
          <artwork><![CDATA[
WT_MAX_DATA Capsule {
  Type (i) = 0x190B4D3D,
  Length (i),
  Maximum Data (i),
}
]]></artwork>
        </figure>
        <t><iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> capsules contain the following field:</t>
        <dl>
          <dt>Maximum Data:</dt>
          <dd>
            <t>A variable-length integer indicating the maximum amount of data that can be
sent on the entire connection, in units of bytes.</t>
          </dd>
        </dl>
        <t>All data sent in <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules counts toward this limit. The sum of the
lengths of Stream Data fields in <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules MUST NOT exceed the value
advertised by a receiver.</t>
        <t>The <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> capsule defines special intermediary handling, as described in
<xref section="3.2" sectionFormat="of" target="HTTP-DATAGRAM"/>.  Intermedaries MUST consume <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref>
capsules for flow control purposes and MUST generate and send appropriate flow
control signals for their limits; see <xref target="flow-control-intermediaries"/>.</t>
        <t>The initial value for this limit MAY be communicated by sending a non-zero value
for <iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA</xref>.</t>
      </section>
      <section anchor="WT_MAX_STREAM_DATA">
        <name>WT_MAX_STREAM_DATA Capsule</name>
        <t>An HTTP capsule <xref target="HTTP-DATAGRAM"/> called <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> (type=0x190B4D3E) is
introduced to inform a peer of the maximum amount of data that can be sent on a
WebTransport stream.</t>
        <figure anchor="fig-wt_max_stream_data">
          <name>WT_MAX_STREAM_DATA Capsule Format</name>
          <artwork><![CDATA[
WT_MAX_STREAM_DATA Capsule {
  Type (i) = 0x190B4D3E,
  Length (i),
  Stream ID (i),
  Maximum Stream Data (i),
}
]]></artwork>
        </figure>
        <t><iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsules contain the following fields:</t>
        <dl>
          <dt>Stream ID:</dt>
          <dd>
            <t>The stream ID of the affected WebTransport stream, encoded as a
variable-length integer.</t>
          </dd>
          <dt>Maximum Stream Data:</dt>
          <dd>
            <t>A variable-length integer indicating the maximum amount of data that can be
sent on the identified stream, in units of bytes.</t>
          </dd>
        </dl>
        <t>All data sent in <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules for the identified stream counts toward this
limit. The sum of the lengths of Stream Data fields in <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsules on
the identified stream MUST NOT exceed the value advertised by a receiver.</t>
        <t>The <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsule defines special intermediary handling, as
described in <xref section="3.2" sectionFormat="of" target="HTTP-DATAGRAM"/>.  Intermedaries MUST consume
<iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsules for flow control purposes and MUST generate and
send appropriate flow control signals for their limits; see
<xref target="flow-control-intermediaries"/>.</t>
        <t>Initial values for this limit for unidirectional and bidirectional streams MAY
be communicated by sending non-zero values for
<iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI</xref> and
<iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI</xref> respectively.</t>
      </section>
      <section anchor="WT_MAX_STREAMS">
        <name>WT_MAX_STREAMS Capsule</name>
        <t>An HTTP capsule <xref target="HTTP-DATAGRAM"/> called <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> is introduced to inform
the peer of the cumulative number of streams of a given type it is permitted to
open.  A <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule with a type of 0x190B4D3F applies to
bidirectional streams, and a <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule with a type of 0x190B4D40
applies to unidirectional streams.</t>
        <t>Note that, because Maximum Streams is a cumulative value representing the total
allowed number of streams, including previously closed streams, endpoints
repeatedly send new <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsules with increasing Maximum Streams
values as streams are opened.</t>
        <figure anchor="fig-wt_max_streams">
          <name>WT_MAX_STREAMS Capsule Format</name>
          <artwork><![CDATA[
WT_MAX_STREAMS Capsule {
  Type (i) = 0x190B4D3F..0x190B4D40,
  Length (i),
  Maximum Streams (i),
}
]]></artwork>
        </figure>
        <t><iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsules contain the following field:</t>
        <dl>
          <dt>Maximum Streams:</dt>
          <dd>
            <t>A count of the cumulative number of streams of the corresponding type that
can be opened over the lifetime of the connection. This value cannot
exceed 2<sup>60</sup>, as it is not possible to encode stream IDs larger
than 2<sup>62</sup>-1.</t>
          </dd>
        </dl>
        <t>An endpoint MUST NOT open more streams than permitted by the current stream
limit set by its peer.  For instance, a server that receives a unidirectional
stream limit of 3 is permitted to open streams 3, 7, and 11, but not stream
15.</t>
        <t>Note that this limit includes streams that have been closed as well as those
that are open.</t>
        <t>The <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule defines special intermediary handling, as
described in <xref section="3.2" sectionFormat="of" target="HTTP-DATAGRAM"/>.  Intermedaries MUST consume
<iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsules for flow control purposes and MUST generate and
send appropriate flow control signals for their limits.</t>
        <t>Initial values for these limits MAY be communicated by sending non-zero values
for <iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI</xref> and
<iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI</xref>.</t>
      </section>
      <section anchor="WT_DATA_BLOCKED">
        <name>WT_DATA_BLOCKED Capsule</name>
        <t>A sender SHOULD send a <iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref> capsule (type=0x190B4D41) when it wishes
to send data but is unable to do so due to WebTransport session-level flow
control. <iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref> capsules can be used as input to tuning of flow
control algorithms.</t>
        <figure anchor="fig-wt_data_blocked">
          <name>WT_DATA_BLOCKED Capsule Format</name>
          <artwork><![CDATA[
WT_DATA_BLOCKED Capsule {
  Type (i) = 0x190B4D41,
  Length (i),
  Maximum Data (i),
}
]]></artwork>
        </figure>
        <t><iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref> capsules contain the following field:</t>
        <dl>
          <dt>Maximum Data:</dt>
          <dd>
            <t>A variable-length integer indicating the session-level limit at which
blocking occurred.</t>
          </dd>
        </dl>
        <t>The <iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref> capsule defines special intermediary handling, as
described in <xref section="3.2" sectionFormat="of" target="HTTP-DATAGRAM"/>.  Intermedaries MUST consume
<iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref> capsules for flow control purposes and MUST generate and
send appropriate flow control signals for their limits; see
<xref target="flow-control-intermediaries"/>.</t>
      </section>
      <section anchor="WT_STREAM_DATA_BLOCKED">
        <name>WT_STREAM_DATA_BLOCKED Capsule</name>
        <t>A sender SHOULD send a <iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_DATA_BLOCKED</xref> capsule (type=0x190B4D42) when it
wishes to send data but is unable to do so due to stream-level flow control.
This capsule is analogous to <iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref>.</t>
        <figure anchor="fig-wt_stream_data_blocked">
          <name>WT_STREAM_DATA_BLOCKED Capsule Format</name>
          <artwork><![CDATA[
WT_STREAM_DATA_BLOCKED Capsule {
  Type (i) = 0x190B4D42,
  Length (i),
  Stream ID (i),
  Maximum Stream Data (i),
}
]]></artwork>
        </figure>
        <t><iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_DATA_BLOCKED</xref> capsules contain the following fields:</t>
        <dl>
          <dt>Stream ID:</dt>
          <dd>
            <t>A variable-length integer indicating the WebTransport stream that is
blocked due to flow control.</t>
          </dd>
          <dt>Maximum Stream Data:</dt>
          <dd>
            <t>A variable-length integer indicating the offset of the stream at which the
blocking occurred.</t>
          </dd>
        </dl>
        <t>The <iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_DATA_BLOCKED</xref> capsule defines special intermediary handling, as
described in <xref section="3.2" sectionFormat="of" target="HTTP-DATAGRAM"/>.  Intermedaries MUST consume
<iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_DATA_BLOCKED</xref> capsules for flow control purposes and MUST generate and
send appropriate flow control signals for their limits; see
<xref target="flow-control-intermediaries"/>.</t>
      </section>
      <section anchor="WT_STREAMS_BLOCKED">
        <name>WT_STREAMS_BLOCKED Capsule</name>
        <t>A sender SHOULD send a <iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsule (type=0x190B4D43 or
0x190B4D44) when it wishes to open a stream but is unable to do so due to the
maximum stream limit set by its peer.  A <iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsule of type
0x190B4D43 is used to indicate reaching the bidirectional stream limit, and a
STREAMS_BLOCKED capsule of type 0x190B4D44 is used to indicate reaching the
unidirectional stream limit.</t>
        <t>A <iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsule does not open the stream, but informs the peer that
a new stream was needed and the stream limit prevented the creation of the
stream.</t>
        <figure anchor="fig-wt_streams_blocked">
          <name>WT_STREAMS_BLOCKED Capsule Format</name>
          <artwork><![CDATA[
WT_STREAMS_BLOCKED Capsule {
  Type (i) = 0x190B4D43..0x190B4D44,
  Length (i),
  Maximum Streams (i),
}
]]></artwork>
        </figure>
        <t><iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsules contain the following field:</t>
        <dl>
          <dt>Maximum Streams:</dt>
          <dd>
            <t>A variable-length integer indicating the maximum number of streams allowed
at the time the capsule was sent. This value cannot exceed 2<sup>60</sup>,
as it is not possible to encode stream IDs larger than 2<sup>62</sup>-1.</t>
          </dd>
        </dl>
        <t>The <iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsule defines special intermediary handling, as
described in <xref section="3.2" sectionFormat="of" target="HTTP-DATAGRAM"/>.  Intermedaries MUST consume
<iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref> capsules for flow control purposes and MUST generate and
send appropriate flow control signals for their limits.</t>
      </section>
      <section anchor="DATAGRAM_CAPSULE">
        <name>DATAGRAM Capsule</name>
        <t>WebTransport over HTTP/2 uses the DATAGRAM capsule defined in <xref section="3.5" sectionFormat="of" target="HTTP-DATAGRAM"/> to carry datagram traffic.</t>
        <figure anchor="fig-datagram">
          <name>DATAGRAM Capsule Format</name>
          <artwork><![CDATA[
DATAGRAM Capsule {
  Type (i) = 0x00,
  Length (i),
  HTTP Datagram Payload (..),
}
]]></artwork>
        </figure>
        <t>When used in WebTransport over HTTP/2, DATAGRAM capsules contain the following
fields:</t>
        <dl>
          <dt>HTTP Datagram Payload:</dt>
          <dd>
            <t>The content of the datagram to be delivered.</t>
          </dd>
        </dl>
        <t>The data in DATAGRAM capsules is not subject to flow control. The receiver MAY
discard this data if it does not have sufficient space to buffer it.</t>
        <t>An intermediary could forward the data in a DATAGRAM capsule over another
protocol, such as WebTransport over HTTP/3.  In QUIC, a datagram frame can span
at most one packet. Because of that, the applications have to know the maximum
size of the datagram they can send. However, when proxying the datagrams, the
hop-by-hop MTUs can vary.</t>
        <t><xref section="3.5" sectionFormat="of" target="HTTP-DATAGRAM"/> indicates that intermediaries that forward
DATAGRAM capsules where QUIC datagrams <xref target="DATAGRAM"/> are available forward the
contents of the capsule as native QUIC datagrams, rather than as HTTP datagrams
in a DATAGRAM capsule. Similarly, when forwarding DATAGRAM capsules used as
part of a WebTransport over HTTP/2 session on a WebTransport session that
natively supports QUIC datagrams, such as WebTransport over HTTP/3
<xref target="WEBTRANSPORT-H3"/>, intermediaries follow the requirements in
<xref target="WEBTRANSPORT-H3"/> to use native QUIC datagrams.</t>
      </section>
      <section anchor="CLOSE_WEBTRANSPORT_SESSION_CAPSULE">
        <name>CLOSE_WEBTRANSPORT_SESSION Capsule</name>
        <t>WebTransport over HTTP/2 uses the CLOSE_WEBTRANSPORT_SESSION capsule defined in
<xref section="5" sectionFormat="of" target="WEBTRANSPORT-H3"/> to terminate a WebTransport session with an
application error code and message.</t>
        <t>WebTransport sessions can be terminated by optionally sending a
CLOSE_WEBTRANSPORT_SESSION capsule and then by closing the HTTP/2 stream
associated with the session (see <xref target="session-termination"/>).</t>
        <figure anchor="fig-close_webtransport-session">
          <name>CLOSE_WEBTRANSPORT_SESSION Capsule Format</name>
          <artwork><![CDATA[
CLOSE_WEBTRANSPORT_SESSION Capsule {
  Type (i) = CLOSE_WEBTRANSPORT_SESSION,
  Length (i),
  Application Error Code (32),
  Application Error Message (..8192),
}
]]></artwork>
        </figure>
        <t>When used in WebTransport over HTTP/2, CLOSE_WEBTRANSPORT_SESSION capsules
contain the following fields:</t>
        <dl>
          <dt>Application Error Code:</dt>
          <dd>
            <t>A 32-bit error code provided by the application closing the connection.</t>
          </dd>
          <dt>Application Error Message:</dt>
          <dd>
            <t>A UTF-8 encoded error message string provided by the application closing the
connection.  The message takes up the remainder of the capsule, and its
length MUST NOT exceed 1024 bytes.</t>
          </dd>
        </dl>
        <t>An endpoint that sends a CLOSE_WEBTRANSPORT_SESSION capsule MUST set the FIN bit
on the frame carrying the capsule. The recipient MUST close the stream upon
receipt of the capsule.</t>
        <t>Cleanly terminating a WebTransport session without a CLOSE_WEBTRANSPORT_SESSION
capsule is semantically equivalent to terminating it with a
CLOSE_WEBTRANSPORT_SESSION capsule that has an error code of 0 and an empty
error string.</t>
      </section>
      <section anchor="DRAIN_WEBTRANSPORT_SESSION_CAPSULE">
        <name>DRAIN_WEBTRANSPORT_SESSION Capsule</name>
        <t>HTTP/2 uses GOAWAY frames (<xref section="6.8" sectionFormat="of" target="HTTP2"/>) to allow an endpoint to
gracefully stop accepting new streams while still finishing processing of
previously established streams.</t>
        <t>WebTransport over HTTP/2 uses the DRAIN_WEBTRANSPORT_SESSION capsule defined in
<xref section="4.6" sectionFormat="of" target="WEBTRANSPORT-H3"/> to gracefully shut down a WebTransport
session.</t>
        <figure anchor="fig-drain_webtransport_session">
          <name>DRAIN_WEBTRANSPORT_SESSION Capsule Format</name>
          <artwork><![CDATA[
DRAIN_WEBTRANSPORT_SESSION Capsule {
  Type (i) = DRAIN_WEBTRANSPORT_SESSION,
  Length (i) = 0
}
]]></artwork>
        </figure>
        <t>After sending or receiving either a DRAIN_WEBTRANSPORT_SESSION capsule or HTTP/2
GOAWAY frame, an endpoint MAY continue using the session and MAY open new
WebTransport streams. The signal is intended for the application using
WebTransport, which is expected to attempt to gracefully terminate the session
as soon as possible.</t>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>An example of negotiating a WebTransport Stream on an HTTP/2 connection follows.
This example is intended to closely follow the example in <xref section="5.1" sectionFormat="of" target="RFC8441"/> to help illustrate the differences defined in this document.</t>
      <artwork><![CDATA[
[[ From Client ]]                   [[ From Server ]]

SETTINGS
SETTINGS_ENABLE_CONNECT_PROTOCOL = 1
SETTINGS_WEBTRANSPORT_MAX_SESSIONS = 1

                                    SETTINGS
                                    SETTINGS_ENABLE_CONNECT_PROTOCOL = 1
                                    SETTINGS_WEBTRANSPORT_MAX_SESSIONS = 100

HEADERS + END_HEADERS
Stream ID = 3
:method = CONNECT
:protocol = webtransport
:scheme = https
:path = /
:authority = server.example.com
origin: server.example.com

                                    HEADERS + END_HEADERS
                                    Stream ID = 3
                                    :status = 200

WT_STREAM
Stream ID = 0
WebTransport Data

                                    WT_STREAM + FIN
                                    Stream ID = 0
                                    WebTransport Data

WT_STREAM + FIN
Stream ID = 0
WebTransport Data
]]></artwork>
      <t>An example of the server initiating a WebTransport Stream follows. The only
difference here is the endpoint that sends the first <iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref> capsule.</t>
      <artwork><![CDATA[
[[ From Client ]]                   [[ From Server ]]

SETTINGS
SETTINGS_ENABLE_CONNECT_PROTOCOL = 1
SETTINGS_WEBTRANSPORT_MAX_SESSIONS = 1

                                    SETTINGS
                                    SETTINGS_ENABLE_CONNECT_PROTOCOL = 1
                                    SETTINGS_WEBTRANSPORT_MAX_SESSIONS = 100

HEADERS + END_HEADERS
Stream ID = 3
:method = CONNECT
:protocol = webtransport
:scheme = https
:path = /
:authority = server.example.com
origin: server.example.com
                                    HEADERS + END_HEADERS
                                    Stream ID = 3
                                    :status = 200

                                    WT_STREAM
                                    Stream ID = 1
                                    WebTransport Data

WT_STREAM + FIN
Stream ID = 1
WebTransport Data

                                    WT_STREAM + FIN
                                    Stream ID = 1
                                    WebTransport Data
]]></artwork>
    </section>
    <section anchor="session-termination">
      <name>Session Termination</name>
      <t>An WebTransport session over HTTP/2 is terminated when either endpoint closes
the stream associated with the CONNECT request that initiated the session.
Upon learning about the session being terminated, the endpoint MUST stop
sending new datagrams and reset all of the streams associated with the session.</t>
      <t>Prior to closing the stream associated with the CONNECT request, either endpoint
can send a CLOSE_WEBTRANSPORT_SESSION capsule with an application error code
and message to convey additional information about the reasons for the closure
of the session.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>WebTransport over HTTP/2 satisfies all of the security requirements imposed by
<xref target="OVERVIEW"/> on WebTransport protocols, thus providing a secure framework for
client-server communication in cases when the client is potentially untrusted.</t>
      <t>WebTransport over HTTP/2 requires explicit opt-in through the use of HTTP
SETTINGS; this avoids potential protocol confusion attacks by ensuring the
HTTP/2 server explicitly supports it. It also requires the use of the Origin
header, providing the server with the ability to deny access to Web-based
clients that do not originate from a trusted origin.</t>
      <t>Just like HTTP traffic going over HTTP/2, WebTransport pools traffic to
different origins within a single connection. Different origins imply different
trust domains, meaning that the implementations have to treat each transport as
potentially hostile towards others on the same connection. One potential attack
is a resource exhaustion attack: since all of the transports share both
congestion control and flow control context, a single client aggressively using
up those resources can cause other transports to stall. The user agent thus
SHOULD implement a fairness scheme that ensures that each transport within
connection gets a reasonable share of controlled resources; this applies both
to sending data and to opening new streams.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="h2-settings">
        <name>HTTP/2 SETTINGS Parameter Registration</name>
        <t>The following entries are added to the "HTTP/2 Settings" registry established by
<xref target="RFC7540"/>:</t>
        <t anchor="SETTINGS_WEBTRANSPORT_MAX_SESSIONS">The SETTINGS_WEBTRANSPORT_MAX_SESSIONS parameter indicates that the specified
HTTP/2 connection is WebTransport-capable and the number of concurrent sessions
an endpoint is willing to receive. The default value for the
SETTINGS_WEBTRANSPORT_MAX_SESSIONS parameter is "0", meaning that the endpoint
is not willing to receive any WebTransport sessions.</t>
        <dl>
          <dt>Setting Name:</dt>
          <dd>
            <t>WEBTRANSPORT_MAX_SESSIONS</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x2b60</t>
          </dd>
          <dt>Default:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t anchor="SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA">The <iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA</xref> parameter indicates the initial value
for the session data limit, otherwise communicated by the <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> capsule
(see <xref target="WT_MAX_DATA"/>). The default value for the
<iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA</xref> parameter is "0", indicating that the
endpoint needs to send a <iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref> capsule within each session before its
peer is allowed to send any stream data within that session.</t>
        <t>Note that this limit applies to all WebTransport sessions that use the HTTP/2
connection on which this SETTING is sent.</t>
        <dl>
          <dt>Setting Name:</dt>
          <dd>
            <t><iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA</xref></t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x2b61</t>
          </dd>
          <dt>Default:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t anchor="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI">The <iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI</xref> parameter indicates the
initial value for the stream data limit for incoming unidirectional streams,
otherwise communicated by the <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsule (see
<xref target="WT_MAX_STREAM_DATA"/>). The default value for the
<iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI</xref> parameter is "0", indicating
that the endpoint needs to send <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsules for each stream
within each individual WebTransport session before its peer is allowed to send
any stream data on those streams.</t>
        <t>Note that this limit applies to all WebTransport streams on all sessions that
use the HTTP/2 connection on which this SETTING is sent.</t>
        <dl>
          <dt>Setting Name:</dt>
          <dd>
            <t><iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI</xref></t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x2b62</t>
          </dd>
          <dt>Default:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t anchor="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI">The <iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI</xref> parameter indicates the
initial value for the stream data limit for incoming data on bidirectional
streams, otherwise communicated by the <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsule (see
<xref target="WT_MAX_STREAM_DATA"/>). The default value for the
<iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI</xref> parameter is "0", indicating
that the endpoint needs to send <iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref> capsules for each stream
within each individual WebTransport session before its peer is allowed to send
any stream data on those streams.</t>
        <t>Note that this limit applies to all WebTransport streams on all sessions that
use the HTTP/2 connection on which this SETTING is sent.</t>
        <dl>
          <dt>Setting Name:</dt>
          <dd>
            <t><iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI</xref></t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x2b63</t>
          </dd>
          <dt>Default:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t anchor="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI">The <iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI</xref> parameter indicates the
initial value for the unidirectional max stream limit, otherwise communicated
by the <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule (see <xref target="WT_MAX_STREAMS"/>). The default value for
the <iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI</xref> parameter is "0", indicating
that the endpoint needs to send <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsules on each individual
WebTransport session before its peer is allowed to create any unidirectional
streams within that session.</t>
        <t>Note that this limit applies to all WebTransport sessions that use the HTTP/2
connection on which this SETTING is sent.</t>
        <dl>
          <dt>Setting Name:</dt>
          <dd>
            <t><iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI</xref></t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x2b64</t>
          </dd>
          <dt>Default:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t anchor="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI">The <iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI</xref> parameter indicates the
initial value for the bidirectional max stream limit, otherwise communicated by
the <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsule (see <xref target="WT_MAX_STREAMS"/>). The default value for the
<iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI</xref> parameter is "0", indicating
that the endpoint needs to send <iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref> capsules on each individual
WebTransport session before its peer is allowed to create any bidirectional
streams within that session.</t>
        <t>Note that this limit applies to all WebTransport sessions that use the HTTP/2
connection on which this SETTING is sent.</t>
        <dl>
          <dt>Setting Name:</dt>
          <dd>
            <t><iref item="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI"/><xref target="SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI" format="none">SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI</xref></t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>0x2b65</t>
          </dd>
          <dt>Default:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
      </section>
      <section anchor="capsule-types">
        <name>Capsule Types</name>
        <t>The following entries are added to the "HTTP Capsule Types" registry established
by <xref target="HTTP-DATAGRAM"/>:</t>
        <t>The <tt>PADDING</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D38</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="PADDING"/><xref target="PADDING" format="none">PADDING</xref></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT_RESET_STREAM</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D39</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_RESET_STREAM"/><xref target="WT_RESET_STREAM" format="none">WT_RESET_STREAM</xref></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT_STOP_SENDING</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D3A</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_STOP_SENDING"/><xref target="WT_STOP_SENDING" format="none">WT_STOP_SENDING</xref></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT_STREAM</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D3B..0x190B4D3C</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_STREAM"/><xref target="WT_STREAM" format="none">WT_STREAM</xref></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT_MAX_DATA</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D3D</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_MAX_DATA"/><xref target="WT_MAX_DATA" format="none">WT_MAX_DATA</xref></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT_MAX_STREAM_DATA</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D3E</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_MAX_STREAM_DATA"/><xref target="WT_MAX_STREAM_DATA" format="none">WT_MAX_STREAM_DATA</xref></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT_MAX_STREAMS</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D3F..0x190B4D40</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_MAX_STREAMS"/><xref target="WT_MAX_STREAMS" format="none">WT_MAX_STREAMS</xref></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT_DATA_BLOCKED</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D41</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_DATA_BLOCKED"/><xref target="WT_DATA_BLOCKED" format="none">WT_DATA_BLOCKED</xref></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT_STREAM_DATA_BLOCKED</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D42</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_STREAM_DATA_BLOCKED"/><xref target="WT_STREAM_DATA_BLOCKED" format="none">WT_STREAM_DATA_BLOCKED</xref></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
        <t>The <tt>WT_STREAMS_BLOCKED</tt> capsule.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0x190B4D43..0x190B4D44</t>
          </dd>
          <dt>Capsule Type:</dt>
          <dd>
            <t><iref item="WT_STREAMS_BLOCKED"/><xref target="WT_STREAMS_BLOCKED" format="none">WT_STREAMS_BLOCKED</xref></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>WebTransport Working Group <eref target="mailto:webtransport@ietf.org">webtransport@ietf.org</eref></t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
      </section>
      <section anchor="http-header-field-name">
        <name>HTTP Header Field Name</name>
        <t>IANA will register the following entry in the "Hypertext Transfer Protocol
(HTTP) Field Name Registry" maintained at
<eref target="https://www.iana.org/assignments/http-fields">https://www.iana.org/assignments/http-fields</eref>:</t>
        <dl>
          <dt>Field Name:</dt>
          <dd>
            <t>WebTransport-Init</t>
          </dd>
          <dt>Template:</dt>
          <dd>
            <t>None</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Comments:</dt>
          <dd>
            <t>None</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="OVERVIEW">
          <front>
            <title>The WebTransport Protocol Framework</title>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <date day="4" month="March" 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-07"/>
        </reference>
        <reference anchor="WEBTRANSPORT-H3">
          <front>
            <title>WebTransport over HTTP/3</title>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Facebook</organization>
            </author>
            <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   WebTransport [OVERVIEW] is a protocol framework that enables clients
   constrained by the Web security model to communicate with a remote
   server using a secure multiplexed transport.  This document describes
   a WebTransport protocol that is based on HTTP/3 [HTTP3] and provides
   support for unidirectional streams, bidirectional streams and
   datagrams, all multiplexed within the same HTTP/3 connection.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http3-08"/>
        </reference>
        <reference anchor="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="HTTP-DATAGRAM">
          <front>
            <title>HTTP Datagrams and the Capsule Protocol</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.</t>
              <t>In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAM extension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTP Datagrams can be sent using the Capsule Protocol, which is a more general convention for conveying data in HTTP connections.</t>
              <t>HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9297"/>
          <seriesInfo name="DOI" value="10.17487/RFC9297"/>
        </reference>
        <reference anchor="HTTP2">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </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="RFC8441">
          <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="RFC7230">
          <front>
            <title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document provides an overview of HTTP architecture and its associated terminology, defines the "http" and "https" Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7230"/>
          <seriesInfo name="DOI" value="10.17487/RFC7230"/>
        </reference>
        <reference anchor="ORIGIN">
          <front>
            <title>The Web Origin Concept</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>This document defines the concept of an "origin", which is often used as the scope of authority or privilege by user agents. Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites. In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string. It also defines an HTTP header field, named "Origin", that indicates which origins are associated with an HTTP request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6454"/>
          <seriesInfo name="DOI" value="10.17487/RFC6454"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <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.</t>
              <t>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="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="SEMANTICS">
          <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="RFC6585">
          <front>
            <title>Additional HTTP Status Codes</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <date month="April" year="2012"/>
            <abstract>
              <t>This document specifies additional HyperText Transfer Protocol (HTTP) status codes for a variety of common situations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6585"/>
          <seriesInfo name="DOI" value="10.17487/RFC6585"/>
        </reference>
        <reference anchor="RFC8941">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </reference>
        <reference anchor="RFC9000">
          <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>
        <reference anchor="RFC9113">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="RFC7540">
          <front>
            <title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
            <author fullname="M. Belshe" initials="M." surname="Belshe"/>
            <author fullname="R. Peon" initials="R." surname="Peon"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection. It also introduces unsolicited push of representations from servers to clients.</t>
              <t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax. HTTP's existing semantics remain unchanged.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7540"/>
          <seriesInfo name="DOI" value="10.17487/RFC7540"/>
        </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>
        <reference anchor="MPTCP">
          <front>
            <title>TCP Extensions for Multipath Operation with Multiple Addresses</title>
            <author fullname="A. Ford" initials="A." surname="Ford"/>
            <author fullname="C. Raiciu" initials="C." surname="Raiciu"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="O. Bonaventure" initials="O." surname="Bonaventure"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>TCP/IP communication is currently restricted to a single path per connection, yet multiple paths often exist between peers. The simultaneous use of these multiple paths for a TCP/IP session would improve resource usage within the network and, thus, improve user experience through higher throughput and improved resilience to network failure.</t>
              <t>Multipath TCP provides the ability to simultaneously use multiple paths between peers. This document presents a set of extensions to traditional TCP to support multipath operation. The protocol offers the same type of service to applications as TCP (i.e., reliable bytestream), and it provides the components necessary to establish and use multiple TCP flows across potentially disjoint paths. This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6824"/>
          <seriesInfo name="DOI" value="10.17487/RFC6824"/>
        </reference>
      </references>
    </references>
    <?line 1488?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Anthony Chivetta, Joshua Otto, and Valentin Pistol for their
contributions in the design and implementation of this work.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Rj1xu+6VUx6CDse6JVWN++2td2D/QRvjX8maGMODIguWfcYLtSjemtFDcvvr
OmjOIspdxo2yoWZWa4LVSgebPiHVKbW3vUcNvLKEWRTRC1pcJuhZsks2RCPk
LsMgMuboRHVhinSahIWJEs67KOuiJQa6ZHKGB7f1Vk7xFnfytMklwiWNhTaw
2kLzGKymcG0WXe8uaXRHrmvEzxpzFqIcBt9IhVksiwX3+8rEz2D6fohbO5u6
eVleTwmbyTSz3kzOL6J2BVGjBqSRtPhZ4GXSL7mYzXZy55wb5GFj7VduuF1M
G8nh5O5dLxHcY19uLniLizk/uszMeXw3nuZO2mBth92sLb4jY2uV1ze09E4w
dHC0wzVkuOEtnizv5HS8ohDDC62rxffcl9aV8gEV3Zf1JoA+m3HNawCEPfYI
cPduvrSki38OPI7rqQ2/PuNteZfuznhnzSiljWi1WbIKsuToLixZpHN71k5e
Ha3HqwOosz7L9hPxfhbLvhaVb8m5VZBzt3JQg5y72WgmwLmPXK5dNtl2oI4A
FxlOowcer67h8aHyn7vV6ty+UocSWHHBlxLnu9es3OmQFqO2pBj9HCkxItM6
IA9UU9WdLOfLlC7pCVQ/kw+Ze0+zTVo1M4ConBKQdNhVji3N1ehz14h8bvuv
wiDXXFDRWefdMfDupqoH7iqg9oJkphba57Ml1wE54GEOUWippDS8lRrlKNNF
qwVDt6uPU0bPrtL6JetSVDABpSWYVmDU4DEIAumxAeOjewUnaGzBlE0595+Y
7iDk/WmJ8tGNYvx5bZbvbnYbKQaGN0nvMii5RzdJ7dEdDBZZkhWdEyMK16GC
ytRk1Tf4IHAoyk+SU5QnU1x8KS3L02Smq2Su6zHqMmPK8WOk4vwhHklk0vY3
5XLx1y83v3mI/yVdv2634kf3qROHk16SxgXoANZzn5mxtnms/lajIUaoWU7d
uzdz6F3igfZKBPYbMQ9HRxTGa6UaH3gCpspi5DrmHEzv+g0RrEhiPo2alBPJ
oZ9FO+HWC2aFO73oK+YUW1tAy8uKM9B4ZVuPXFJ3JY7twOV1KaaUK2qVK/QJ
UL/SacoVRthGxl4eRnwvoBWM/kAawei31ga6BD2WbkklyQ0WWkN6r2mgNStd
b1fnagW1W9jlS2r3FyOq3WcmSi1+balGly7RzZFtpxLPiNvdesD5GonpTqPc
JoiE2pjHaFNqpzneGCJddW5o9FZ3dexYjJ/XgswmWyw5A2qZSfTSM+Xj9Bxb
8V6QNBVBEoZfWJLsbt3JxYWgOKM0beQFVnYEZ/aER8emf013l38MzHew9RAV
ZXA4RvLNo3xCPHVac5QgxvxeLCUMvD+WheFGjK6h5MALfizpVnQdmq6DvLct
eau6+dS65M1SKtjm8dSNpFM2TJzm51jSgWzBP7tmFOZ2FLv9i7pwHPdNgKCv
W18gTnN78r51xLVB3KEoojQCc2i7bnvW6M35y/h18tlMqrScAJ9hMXW09Ro2
cx0C/17c5toj/eMyndF1DGcUZjaj2zGa0U1MZgczv+1fu02Nom5cZnOMrmU7
iEHGd+jp5W1lf3jdKiXlVjnrdC68sr35C2wcZHA75BOwPTPpxpQbZqsZ1+6N
s6mgo0DCQ5J+2DWdzV4iyNaEyNYIu13KOsTINXpk1sss1HcRbD5UvMxdIy6w
0W2gs477AFQ7faYDGTu4+o5j0e/e1aIXK6qTkbeXE2DiLdD+DOv+lo7xttEv
Dh1moJJeQZa8m2eBJ8eNvlvGfIcdL+Pd1pjvtOM9Nh7Azd+VhQcO9DezQ4Ez
m/U6/Ng8Otsfvh69fXlI3Lj5ULKJru2Rglhgx/eh3YLgo0CxAyXmUcKRqQkw
+f1Cye3FN+l3M+B/I1fxgRnxdbxK83gazIepp2VSbc3nEKitIrim6rfXAkcH
9SpX/Qqu14msya0QRsOpF53zvcuUCWr1GVN43V5JYgoTx/9DbZUa+phf5IoB
BpMczX3JaVx7r0jdqqlc4onxbZwLvDK9rnRludFofDGhLhTSJcTuiG4ga2NT
zhfcUnmHrYGvu3t0HMQOXwWIubboc7MQk4ohbNyyiDMVy43JmArG1U6DyBR4
5TPxjDfy+UpztSulw7r8U5XJT7p9SKY8DYl4UN/6TDoJbOijTWB0+kmgSHOq
Ql6dvmXXBDB0jKg06arJmZrdiBttcriBIsNftdHEud07fEs4uf68cn1zkspc
YGJdveZ2N+q4jZ5lf9wedkK+MKxd6sLrn1UQKbzyP4KjLAEh2d6POHO66hW8
Kmtt8nO7rmclxYW3grEJU5fb3NVN+KmCDWkb58TcguCIicWgmfH165Tk0r4f
Xi6DD8JZ7vF6eTI69N2B0urYkQ7dL3ny4ubX1pUg16yqLVMc3H8UvFGLNHZb
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
gH6qETpctuVlY3DGA8Z66c7q/wWO9muMs8EAAA==

-->

</rfc>
