<?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.6.25 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-webtrans-http2-05" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="WebTransport-H2">WebTransport over HTTP/2</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http2-05"/>
    <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>
      <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>
      <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>
    <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>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</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>TCP flow control.</li>
          <li>HTTP/2 connection flow control, which governs the total amount of data in
DATA frames for all HTTP/2 streams.</li>
          <li>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.</li>
          <li>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.</li>
          <li>WebTransport stream flow control, which limits data on individual streams
within a session.</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_MAX_WEBTRANSPORT_SESSIONS parameter that allows
the server to limit the maximum number of concurrent WebTransport sessions on a
single HTTP/3 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 reply to the CONNECT
request with a status code 426, indicating that the client attempted to open
too many sessions.</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-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 simlar
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>
      </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>
      </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>
        <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>
      </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>
    <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 = 3
                                    SETTINGS_MAX_WEBTRANSPORT_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 = 5
WebTransport Data

                                    WT_STREAM + FIN
                                    Stream ID = 5
                                    WebTransport Data

WT_STREAM + FIN
Stream ID = 5
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 = 3
                                    SETTINGS_MAX_WEBTRANSPORT_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 = 2
                                    WebTransport Data

WT_STREAM + FIN
Stream ID = 2
WebTransport Data

                                    WT_STREAM + FIN
                                    Stream ID = 2
                                    WebTransport Data
]]></artwork>
    </section>
    <section anchor="webtransport-header-fields">
      <name>WebTransport Header Fields</name>
      <t>WebTransport over HTTP/2 uses the <tt>WebTransport-Init</tt> HTTP header field 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 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>
    </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="http2-settings-parameter-registration">
        <name>HTTP/2 SETTINGS Parameter Registration</name>
        <t>The following entry is added to the "HTTP/2 Settings" registry established by
<xref target="RFC7540"/>:</t>
        <t>The <tt>SETTINGS_WEBTRANSPORT_MAX_SESSIONS</tt> 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_MAX_WEBTRANSPORT_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>0x2b603743</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>
        <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="24" month="January" year="2023"/>
            <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 a 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-05"/>
        </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="13" month="March" 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-05"/>
        </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">
              <organization/>
            </author>
            <author fullname="L. Pardue" initials="L." surname="Pardue">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <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="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield">
              <organization/>
            </author>
            <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="RFC8941">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P-H. Kamp" initials="P-H." surname="Kamp">
              <organization/>
            </author>
            <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="RFC7540">
          <front>
            <title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
            <author fullname="M. Belshe" initials="M." surname="Belshe">
              <organization/>
            </author>
            <author fullname="R. Peon" initials="R." surname="Peon">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <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>
        <name>Informative References</name>
        <reference anchor="DATAGRAM">
          <front>
            <title>An Unreliable Datagram Extension to QUIC</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly">
              <organization/>
            </author>
            <author fullname="E. Kinnear" initials="E." surname="Kinnear">
              <organization/>
            </author>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="C. Raiciu" initials="C." surname="Raiciu">
              <organization/>
            </author>
            <author fullname="M. Handley" initials="M." surname="Handley">
              <organization/>
            </author>
            <author fullname="O. Bonaventure" initials="O." surname="Bonaventure">
              <organization/>
            </author>
            <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>
    <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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

-->

</rfc>
