<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-webtrans-overview-12" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="WebTransport">The WebTransport Protocol Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-overview-12"/>
    <author initials="E." surname="Kinnear" fullname="Eric Kinnear">
      <organization>Apple Inc.</organization>
      <address>
        <email>ekinnear@apple.com</email>
      </address>
    </author>
    <author initials="V." surname="Vasiliev" fullname="Victor Vasiliev">
      <organization>Google</organization>
      <address>
        <email>vasilvv@google.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="02"/>
    <area>Web and Internet Transport</area>
    <workgroup>WEBTRANS</workgroup>
    <keyword>webtransport</keyword>
    <abstract>
      <?line 41?>

<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.</t>
      <t>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>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-webtrans.github.io/draft-ietf-webtrans-overview/draft-ietf-webtrans-overview.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-webtrans-overview/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        WebTransport Working Group mailing list (<eref target="mailto:webtransport@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/webtransport/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/webtransport/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview"/>.</t>
    </note>
  </front>
  <middle>
    <?line 53?>

<section anchor="introduction">
      <name>Introduction</name>
      <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.</t>
      <t>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>
      <section anchor="background">
        <name>Background</name>
        <t>Historically, web applications that needed a bidirectional data stream between a
client and a server could rely on WebSockets <xref target="RFC6455"/>, a message-based
protocol compatible with the Web security model.  However, since the abstraction
it provides is a single ordered reliable stream of messages, it suffers from
head-of-line blocking, meaning that all messages must be sent and received in
order even if they could be processed independently of each other, and some
messages may no longer be relevant.  This makes it a poor fit for
latency-sensitive applications which rely on partial reliability and stream
independence for performance.</t>
        <t>One existing option available to Web developers is WebRTC data channels
<xref target="RFC8831"/>, which provide a WebSocket-like API for a peer-to-peer SCTP channel
protected by DTLS.  In theory, it is possible to use it for the use cases
addressed by this specification. However, in practice, it has not seen wide
adoption outside of browser-to-browser settings due to its dependency on ICE
(which fits poorly with the Web model) and userspace SCTP (which has a limited
number of implementations available due to not being used in other contexts).</t>
        <t>An alternative design would be to open multiple WebSocket connections over
HTTP/3 <xref target="RFC9220"/>.  That would avoid head-of-line blocking and provide an
ability to cancel a stream by closing the corresponding WebSocket session.
However, this approach has a number of drawbacks, which all stem primarily from
the fact that semantically each WebSocket is a completely independent entity:</t>
        <ul spacing="normal">
          <li>
            <t>Each new stream would require a WebSocket handshake to agree on application
protocol used, meaning that it would take at least one RTT to establish each
new stream before the client can write to it.</t>
          </li>
          <li>
            <t>Only clients can initiate streams.  Server-initiated streams and other
alternative modes of communication (such as the QUIC DATAGRAM frame
<xref target="RFC9221"/>) are not available.</t>
          </li>
          <li>
            <t>While the streams would normally be pooled by the user agent, this is not
guaranteed, and the general process of mapping a WebSocket to a server is
opaque to the client.  This introduces unpredictable performance properties
into the system, and prevents optimizations which rely on the streams being on
the same connection (for instance, it might be possible for the client to
request different retransmission priorities for different streams, but that
would be much more complex unless they are all on the same connection).</t>
          </li>
        </ul>
        <t>WebTransport avoids all of those issues by letting applications create a single
transport object that can contain multiple streams multiplexed together in a
single context (similar to SCTP, HTTP/2, QUIC and others), and can also be used
to send unreliable datagrams (similar to UDP).</t>
      </section>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</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>WebTransport is a framework that aims to abstract away the underlying transport
protocol while still exposing a few key transport-layer aspects to application
developers.  It is structured around the following concepts:</t>
        <dl>
          <dt>WebTransport session:</dt>
          <dd>
            <t>A WebTransport session is a single communication context established between a
client and a server.  It may correspond to a specific transport-layer
connection, or it may be a logical entity within an existing multiplexed
transport-layer connection.  WebTransport sessions are logically independent
from one another even if some sessions can share an underlying transport-layer
connection.</t>
          </dd>
          <dt>WebTransport protocol:</dt>
          <dd>
            <t>A WebTransport protocol is a specific protocol that can be used to establish
a WebTransport session.</t>
          </dd>
          <dt>Datagram:</dt>
          <dd>
            <t>A datagram is a unit of transmission that is limited in size (typically to the
path MTU), does not have an expectation of being delivered reliably, and is
treated atomically by the transport.</t>
          </dd>
          <dt>Stream:</dt>
          <dd>
            <t>A stream is a sequence of bytes that is reliably delivered to the receiving
application in the same order as it was transmitted by the sender.  Streams
can be of arbitrary length, and therefore cannot always be buffered entirely
in memory. WebTransport protocols and APIs are expected to provide partial
stream data to the application before the stream has been entirely received.</t>
          </dd>
          <dt>Message:</dt>
          <dd>
            <t>A message is a stream that is sufficiently small that it can be fully buffered
before being passed to the application.  WebTransport does not define messages
as a primitive, since from the transport perspective they can be simulated by
fully buffering a stream before passing it to the application.  However, this
distinction is important to highlight since some of the similar protocols and
APIs (notably WebSocket <xref target="RFC6455"/>) use messages as a core abstraction.</t>
          </dd>
          <dt>Application:</dt>
          <dd>
            <t>A WebTransport application refers to executable code that is provided by a
developer to perform some, often user-visible, function, such as sending and
receiving data. For example, a JavaScript application using WebTransport that
is running inside a browser or code running within an executable that makes
outgoing or accepts incoming WebTransport sessions.</t>
          </dd>
          <dt>Server:</dt>
          <dd>
            <t>A WebTransport server is an application that accepts incoming WebTransport
sessions.  In cases when WebTransport is served over a multiplexed protocol
(such as HTTP/2 or HTTP/3), "WebTransport server" refers to a handler for a
specific multiplexed endpoint (e.g. an application handling specific HTTP
resource), rather than the application listening on a given TCP or UDP socket.</t>
          </dd>
          <dt>Client:</dt>
          <dd>
            <t>A WebTransport client is an application that initiates the transport session
and may be running in a constrained security context, for instance, a
JavaScript application running inside a browser.</t>
          </dd>
          <dt>Endpoint:</dt>
          <dd>
            <t>An endpoint refers to either a Server or a Client.</t>
          </dd>
          <dt>User agent:</dt>
          <dd>
            <t>A WebTransport user agent is a software system that has an unrestricted access
to the host network stack and can create transports on behalf of the client.</t>
          </dd>
          <dt>Event:</dt>
          <dd>
            <t>An event is a notification, callback, or signal that a WebTransport endpoint
can provide to a WebTransport application to notify it that some change of
interest to the application has occurred.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="common-requirements">
      <name>Common Transport Requirements</name>
      <t>Since clients are not necessarily trusted and have to be constrained by the Web
security model, WebTransport imposes certain requirements on any specific
protocol used.</t>
      <t>All WebTransport protocols MUST use TLS <xref target="RFC8446"/> or a semantically
equivalent security protocol (for instance, DTLS <xref target="RFC9147"/>).  The protocols
SHOULD use TLS version 1.3 or later, unless they aim for backwards compatibility
with legacy systems.</t>
      <t>All WebTransport protocols MUST require the user agent to obtain and maintain
explicit consent from the server to send data.  For connection-oriented
protocols (such as TCP or QUIC), the connection establishment and keep-alive
mechanisms suffice.  STUN Consent Freshness <xref target="RFC7675"/> is another example of a
mechanism satisfying this requirement.</t>
      <t>All WebTransport protocols MUST limit the rate at which the client sends data.
This SHOULD be accomplished via a feedback-based congestion control mechanism
(such as <xref target="RFC5681"/> or <xref target="RFC9002"/>).</t>
      <t>All WebTransport protocols MUST support simultaneously establishing multiple
sessions between the same client and server.</t>
      <t>All WebTransport protocols MUST prevent clients from establishing transport
sessions to network endpoints that are not WebTransport servers.</t>
      <t>All WebTransport protocols MUST provide a way for the user agent to indicate the
origin <xref target="RFC6454"/> of the client to the server.</t>
      <t>All WebTransport protocols MUST provide a way for a server endpoint location to
be described using a URI <xref target="RFC3986"/>.  This enables integration with various
Web platform features that represent resources as URIs, such as Content Security
Policy <xref target="CSP"/>.</t>
      <t>All WebTransport protocols MUST provide a way for the session initiator to
negotiate a subprotocol with the peer when establishing a WebTransport session.
The session initiator provides an optional list of subprotocols to the peer.
The peer selects one and responds indicating the selected subprotocol or rejects
the session establishment request if none of the subprotocols are supported.
Note that the semantics of individual subprotocol token values are determined by
the WebTransport resource in question and are not registered in IANA's "ALPN
Protocol IDs" registry.</t>
    </section>
    <section anchor="session-establishment">
      <name>Session Establishment</name>
      <t>WebTransport session establishment is an asynchronous process.  A session is
considered <em>ready</em> from the client's perspective when the server has confirmed
that it is willing to accept the session with the provided origin and URI.
WebTransport protocols MAY allow clients to send data before the session is
ready; however, they MUST NOT use mechanisms that are unsafe against replay
attacks without an explicit indication from the client.</t>
      <section anchor="application-protocol-negotiation">
        <name>Application Protocol Negotiation</name>
        <t>WebTransport sessions offer a protocol negotiation mechanism, similar to
TLS Application-Layer Protocol Negotiation Extension (ALPN) <xref target="RFC7301"/>.</t>
        <t>When establishing a session, a WebTransport client can offer the server a list
of protocols that it would like to use on that session, in preference order.
When the server receives such a list, it selects a single choice from that list
and communicates that choice to the client.  A server that does not wish to use
any of the protocols offered by the client can reject the WebTransport session
establishment attempt.</t>
      </section>
    </section>
    <section anchor="transport-features">
      <name>Transport Features</name>
      <t>All transport protocols MUST provide datagrams, unidirectional and
bidirectional streams in order to make the transport protocols interchangeable.</t>
      <section anchor="features-session">
        <name>Session-Wide Features</name>
        <t>Any WebTransport protocol SHALL provide the following operations on the
session:</t>
        <dl>
          <dt>establish a session</dt>
          <dd>
            <t>Create a new WebTransport session given a URI <xref target="RFC3986"/> of the requester.
An origin <xref target="RFC6454"/> MUST be given if the WebTransport session is coming
from a browser client; otherwise, it is OPTIONAL.</t>
          </dd>
          <dt>terminate a session</dt>
          <dd>
            <t>Terminate the session while communicating to the peer an unsigned 32-bit
error code and an error reason string of at most 1024 bytes.  As soon as the
session is terminated, no further application data will be exchanged on it.
The error code and string are optional; the default values are 0 and "".  The
delivery of the error code and string MAY be best-effort.</t>
          </dd>
          <dt>drain a session</dt>
          <dd>
            <t>Indicate to the peer that it expects the session to be gracefully terminated
as soon as possible.  Either endpoint MAY continue using the session and MAY
open new streams.  This signal is intended to allow intermediaries and
endpoints to request a session be drained of traffic without enforcement.</t>
          </dd>
          <dt>export keying material</dt>
          <dd>
            <t>Derive a TLS keying material exporter (<xref section="7.5" sectionFormat="of" target="RFC8446"/>) to provide
keying material specific to the WebTransport session.</t>
          </dd>
        </dl>
        <t>Any WebTransport protocol SHALL provide the following events:</t>
        <dl>
          <dt>session terminated event</dt>
          <dd>
            <t>Indicates that the WebTransport session has been terminated, either by the
peer or by the local networking stack, and no user data can be exchanged on
it any further.  If the session has been terminated as a result of the peer
performing the "terminate a session" operation above, a corresponding error
code and an error string can be provided.</t>
          </dd>
          <dt>session draining event</dt>
          <dd>
            <t>Indicates that the WebTransport session has been asked to drain as soon as
possible.  Continued use of the session, including opening new streams is
discouraged, but allowed.</t>
          </dd>
        </dl>
      </section>
      <section anchor="features-datagrams">
        <name>Datagrams</name>
        <t>A datagram is a sequence of bytes that is limited in size (generally to the path
MTU) and is not expected to be transmitted reliably.  The general goal for
WebTransport datagrams is to be similar in behavior to UDP while being subject
to common requirements expressed in <xref target="common-requirements"/>.</t>
        <t>A WebTransport sender is not expected to retransmit datagrams, though it may end
up doing so if it is using TCP or some other underlying protocol that only
provides reliable delivery.  WebTransport datagrams are not expected to be flow
controlled, meaning that the receiver might drop datagrams if the application is
not consuming them fast enough.</t>
        <t>The application MUST be provided with the maximum datagram size that it can
send.  The size SHOULD be derived from the result of performing path MTU
discovery.</t>
        <t>In the WebTransport model, all of the outgoing and incoming datagrams are placed
into a size-bound queue (similar to a network interface card queue).</t>
        <t>Any WebTransport protocol SHALL provide the following operations on the session:</t>
        <dl>
          <dt>send a datagram</dt>
          <dd>
            <t>Enqueues a datagram to be sent to the peer.  This can potentially result in
the datagram being dropped if the queue is full.</t>
          </dd>
          <dt>receive a datagram</dt>
          <dd>
            <t>Dequeues an incoming datagram, if one is available.</t>
          </dd>
          <dt>get maxiumum datagram size</dt>
          <dd>
            <t>Returns the largest size of the datagram that a WebTransport session is
expected to be able to send.</t>
          </dd>
        </dl>
      </section>
      <section anchor="features-streams">
        <name>Streams</name>
        <t>A unidirectional stream is a one-way reliable in-order stream of bytes where the
initiator is the only endpoint that can send data.  A bidirectional stream
allows both endpoints to send data and can be conceptually represented as a pair
of unidirectional streams.</t>
        <t>The streams are in general expected to follow the semantics and the state
machine of QUIC streams (<xref target="RFC9000"/>, Sections 2 and 3).</t>
        <t>A WebTransport stream can be reset, indicating that the endpoint is not
interested in either sending or receiving any data related to the stream. The
sender of a stream can indicate an offset in the stream (possibly zero) after
which data that was already sent will not be retransmitted.</t>
        <t>Streams SHOULD be sufficiently lightweight that they can be used as messages.</t>
        <t>Data sent on a stream is flow controlled by the transport protocol.  In addition
to flow controlling stream data, the creation of new streams is flow controlled
as well: an endpoint may only open a limited number of streams until the peer
explicitly allows creating more streams.  From the perspective of the client,
this is presented as a size-bounded queue of incoming streams.</t>
        <t>Any WebTransport protocol SHALL provide the following operations on the session:</t>
        <dl>
          <dt>create a unidirectional stream</dt>
          <dd>
            <t>Creates an outgoing unidirectional stream; this operation may block until the
flow control of the underlying protocol allows for it to be completed.</t>
          </dd>
          <dt>create a bidirectional stream</dt>
          <dd>
            <t>Creates an outgoing bidirectional stream; this operation may block until the
flow control of the underlying protocol allows for it to be completed.</t>
          </dd>
          <dt>receive a unidirectional stream</dt>
          <dd>
            <t>Removes a stream from the queue of incoming unidirectional streams, if one is
available.</t>
          </dd>
          <dt>receive a bidirectional stream</dt>
          <dd>
            <t>Removes a stream from the queue of incoming bidirectional streams, if one is
available.</t>
          </dd>
        </dl>
        <t>Any WebTransport protocol SHALL provide the following operations on an
individual stream:</t>
        <dl>
          <dt>send bytes</dt>
          <dd>
            <t>Add bytes into the stream send buffer.  The sender can also indicate a FIN,
signalling the fact that no new data will be sent on the stream.  Not
applicable for incoming unidirectional streams.</t>
          </dd>
          <dt>receive bytes</dt>
          <dd>
            <t>Removes bytes from the stream receive buffer.  FIN can be received together
with the stream data.  Not applicable for outgoing unidirectional streams.</t>
          </dd>
          <dt>abort send side</dt>
          <dd>
            <t>Sends a signal to the peer that the write side of the stream has been aborted,
including an offset in the stream that is reliably delivered.  Discards the
send buffer after that offset; if possible, no currently outstanding data
after the provided send offset is transmitted or retransmitted.  If omitted,
the offset is presumed to be 0.  An unsigned 32-bit error code can be supplied
as a part of the signal to the peer; if omitted, the error code is presumed to
be 0.</t>
          </dd>
          <dt>abort receive side</dt>
          <dd>
            <t>Sends a signal to the peer that the read side of the stream has been aborted.
Discards the receive buffer; the peer is typically expected to abort the
corresponding send side in response.  An unsigned 32-bit error code can be
supplied as a part of the signal to the peer.</t>
          </dd>
        </dl>
        <t>Any WebTransport protocol SHALL provide the following events for an individual
stream:</t>
        <dl>
          <dt>send side aborted</dt>
          <dd>
            <t>Indicates that the peer has aborted the corresponding receive side of the
stream.  An unsigned 32-bit error code from the peer may be available.</t>
          </dd>
          <dt>receive side aborted</dt>
          <dd>
            <t>Indicates that the peer has aborted the corresponding send side of the
stream.  An unsigned 32-bit error code from the peer may be available.</t>
          </dd>
          <dt>all data committed</dt>
          <dd>
            <t>Indicates that all of the outgoing data on the stream, including the end
stream indication, is in the state where aborting the send side would have no
further effect on any data being delivered.</t>
          </dd>
          <dt/>
          <dd>
            <t>For protocols, like HTTP/2, stream data might be passed to another component
(like a kernel) for transmission. Once data is passed to that component it
might not be possible to abort the sending of stream data without also
aborting the entire connection.  For these protocols, data is considered
committed once it passes to the other component.</t>
          </dd>
          <dt/>
          <dd>
            <t>A protocol, like HTTP/3, that uses a more integrated stack might be able to
retract data further into the process. For these protocols, sending on a
stream might be aborted at any time until all data has been received and
acknowledged by the peer, corresponding to the "Data Recvd" state in QUIC; see
<xref section="3.1" sectionFormat="of" target="QUIC"/>.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="transport-properties">
      <name>Transport Properties</name>
      <t>WebTransport defines common semantics for multiple protocols to allow them to be
used interchangeably.  Nevertheless, those protocols still have substantially
different performance properties that an application may want to query.</t>
      <t>The most notable property is support for unreliable data delivery.  The protocol
is defined to support unreliable delivery if:</t>
      <ul spacing="normal">
        <li>
          <t>Resetting a stream results in the lost stream data no longer being
retransmitted, and</t>
        </li>
        <li>
          <t>The datagrams are never retransmitted.</t>
        </li>
      </ul>
      <t>Another important property is pooling support.  Pooling means that multiple
transport sessions may end up sharing the same transport layer connection, and
thus share a congestion controller and other contexts.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Providing untrusted clients with a reasonably low-level access to the network
comes with risks.  This document mitigates those risks by imposing a set of
common requirements described in <xref target="common-requirements"/>.</t>
      <t>WebTransport mandates the use of TLS for all protocols implementing it.  This
provides confidentiality and integrity for the transport, protecting it from
both potential attackers and ossification by intermediaries in the network.</t>
      <t>One potential concern is that even when a transport cannot be created, the
connection error would reveal enough information to allow an attacker to scan
the network addresses that would normally be inaccessible.  Because of that, the
user agent that runs untrusted clients MUST NOT provide any detailed error
information until the server has confirmed that it is a WebTransport endpoint.
For example, the client must not be able to distinguish between a network
address that is unreachable and one that is reachable but is not a WebTransport
server.</t>
      <t>Since WebTransport requires TLS, individual transport protocols MAY expose
TLS-based authentication capabilities such as client certificates and custom
validation of server certificates, including validation using a client-specified
set of server certificate hashes.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>There are no requests to IANA in this document.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC6454">
          <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="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CSP" target="https://www.w3.org/TR/CSP/">
          <front>
            <title>Content Security Policy Level 3</title>
            <author>
              <organization>W3C</organization>
            </author>
            <date year="2026" month="March"/>
          </front>
        </reference>
        <reference anchor="RFC6455">
          <front>
            <title>The WebSocket Protocol</title>
            <author fullname="I. Fette" initials="I." surname="Fette"/>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code. The security model used for this is the origin-based security model commonly used by web browsers. The protocol consists of an opening handshake followed by basic message framing, layered over TCP. The goal of this technology is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or s and long polling). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6455"/>
          <seriesInfo name="DOI" value="10.17487/RFC6455"/>
        </reference>
        <reference anchor="RFC8831">
          <front>
            <title>WebRTC Data Channels</title>
            <author fullname="R. Jesup" initials="R." surname="Jesup"/>
            <author fullname="S. Loreto" initials="S." surname="Loreto"/>
            <author fullname="M. Tüxen" initials="M." surname="Tüxen"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>The WebRTC framework specifies protocol support for direct, interactive, rich communication using audio, video, and data between two peers' web browsers. This document specifies the non-media data transport aspects of the WebRTC framework. It provides an architectural overview of how the Stream Control Transmission Protocol (SCTP) is used in the WebRTC context as a generic transport service that allows web browsers to exchange generic data from peer to peer.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8831"/>
          <seriesInfo name="DOI" value="10.17487/RFC8831"/>
        </reference>
        <reference anchor="RFC9220">
          <front>
            <title>Bootstrapping WebSockets with HTTP/3</title>
            <author fullname="R. Hamilton" initials="R." surname="Hamilton"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The mechanism for running the WebSocket Protocol over a single stream of an HTTP/2 connection is equally applicable to HTTP/3, but the HTTP-version-specific details need to be specified. This document describes how the mechanism is adapted for HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9220"/>
          <seriesInfo name="DOI" value="10.17487/RFC9220"/>
        </reference>
        <reference anchor="RFC9221">
          <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="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC7675">
          <front>
            <title>Session Traversal Utilities for NAT (STUN) Usage for Consent Freshness</title>
            <author fullname="M. Perumal" initials="M." surname="Perumal"/>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <author fullname="R. Ravindranath" initials="R." surname="Ravindranath"/>
            <author fullname="T. Reddy" initials="T." surname="Reddy"/>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>To prevent WebRTC applications, such as browsers, from launching attacks by sending traffic to unwilling victims, periodic consent to send needs to be obtained from remote endpoints.</t>
              <t>This document describes a consent mechanism using a new Session Traversal Utilities for NAT (STUN) usage.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7675"/>
          <seriesInfo name="DOI" value="10.17487/RFC7675"/>
        </reference>
        <reference anchor="RFC5681">
          <front>
            <title>TCP Congestion Control</title>
            <author fullname="M. Allman" initials="M." surname="Allman"/>
            <author fullname="V. Paxson" initials="V." surname="Paxson"/>
            <author fullname="E. Blanton" initials="E." surname="Blanton"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document defines TCP's four intertwined congestion control algorithms: slow start, congestion avoidance, fast retransmit, and fast recovery. In addition, the document specifies how TCP should begin transmission after a relatively long idle period, as well as discussing various acknowledgment generation methods. This document obsoletes RFC 2581. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5681"/>
          <seriesInfo name="DOI" value="10.17487/RFC5681"/>
        </reference>
        <reference anchor="RFC9002">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="RFC7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl"/>
            <author fullname="A. Popov" initials="A." surname="Popov"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Stephan" initials="E." surname="Stephan"/>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </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>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1cWXPjSHJ+x68oax7c7SDZ5xyrDodXI6ln2u5DltQ7seFw
bIBEkYQFAlwUSDZ3ov+788vMOgBBM73jCT/tw+60SKAqK88vj+J0Os26sqvs
qbldW/OTnd+2ee22TduZq7bpmkVTmddtvrGHpr3L8vm8tfvT3nNZ0SxqeuDU
FG2+7Kal7ZbTg513eGDa7G27L+1h+ux5Vu82c9ueZkXe2dNs0dTO1m7nTk3X
7mxGy77IFvTVqmmPp8Z1RZa3Nj81J7SbyevCvKk729a2M2Hvk+ywImouv7+9
Pnt/k+1tvaOVjVm1zW4rbybPGtMdtxYf01nKemV+wGP4fJOXFX3uqcbjf8Q5
Zk27wvd5u1jT9+uu27rTJ0/wOD4q93bmH3uCD57M2+bg7JN0oSdYYFV2692c
lhDurAKDnvwS0/BmRRxxXbL5cIWZrD0rm19c6xe/nK27TXWS3dkjibkAB6cm
PUOW77p10/IX9D9jyprEdjkz/1HWtc1b/kyU4LItF72PiTen5my7rSwJcDHj
z6ww3N7Jc3/M8fVs0Wz6G/xpZv6Uu7Iq7T7Z4U/lomva/je0SV6Xf8u7sqlP
zQ9Ns6psutMeD+/3f1zxN7xTVtbLpt3QK3vWmfObq1N+pcvblSWOe4YfDofZ
4QXL+Pb6CT32RB4Tszk5b0gt687c2MWuLbujuWqqcnE0b+3eVubFCT8c+RdY
8tOLc/6TrcF4lbyAlLJsOp2afO5IAAv66wtM09g6n1fWmQXxpO7ov2Re9HpZ
28LMj6aTJTLnqdw0BZHXNfTgZrOrS1ieOZAqmdy0dtPQX46Uw7Zm50BYbvhV
aza7qitJXJ9skQUFmRnzpuM9S0ebN0t+vsM/yroo92WxyyuzVbIdkZN3ZFW0
R760oMJ+2jbOZvSvXU3uwHVENrQCdJFM3QR0zvk0QmQd+OOPwktWFRkgTruh
VbO5JerplRKeY7HO65UlLh1nYGnpDHmu3QayK+ySlub3DGyCliEm/HVXEieY
m03N38UD6LJZKpaJyR2ZDb2by1JgLb25tHlHnGO29FaZGLfbskBJE41rNjaj
Rw7rcrEml3Q0RH6zxfHzaiY6sSmLgjQ7+wrOsG2K3QJf/0ND/qEh0JCvvjLf
54s7RL+6yLIfidMNuWOi9TiBP+/xS9hRW1uAkWZeFnSWhawFp0Ti6Sj+bmiP
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
6RDcmP48H24pZP8LDgUBLlRVAAA=

-->

</rfc>
