<?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-rfc2629 version 1.6.2 (Ruby 3.0.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-webtrans-overview-03" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.3 -->
  <front>
    <title abbrev="WebTransport">The WebTransport Protocol Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-overview-03"/>
    <author initials="V." surname="Vasiliev" fullname="Victor Vasiliev">
      <organization>Google</organization>
      <address>
        <email>vasilvv@google.com</email>
      </address>
    </author>
    <date/>
    <area>Applications and Real-Time</area>
    <workgroup>WEBTRANS</workgroup>
    <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.</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>
      <name>Note to Readers</name>
      <t>Discussion of this draft takes place on the WebTransport mailing list
(webtransport@ietf.org), which is archived at
&lt;https://mailarchive.ietf.org/arch/search/?email_list=webtransport&gt;.</t>
      <t>The repository tracking the issues for this draft can be found at
&lt;https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-overview/issues&gt;.
The web API draft corresponding to this document can be found at
&lt;https://wicg.github.io/web-transport/&gt;.</t>
    </note>
  </front>
  <middle>
    <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 a 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 stream of messages, it suffers from
head-of-line blocking (HOLB), meaning that all messages must be sent and
received in order even if they are independent and some of them are no longer
needed.  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 are 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, its use in
non-browser-to-browser settings has been quite low due to its dependency on ICE
(which fits poorly with the Web model) and userspace SCTP (which has very few
implementations available).</t>
        <t>An alternative design would be to open multiple WebSocket connections over
HTTP/3 <xref target="I-D.ietf-httpbis-h3-websockets"/> in a manner similar to how they are
currently layered over HTTP/2 <xref target="RFC8441"/>.  That would avoid head-of-line
blocking and provide an ability to cancel a stream by closing the corresponding
WebSocket object.  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>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.</li>
          <li>Only clients can initiate streams.  Server-initiated streams and other
alternative modes of communication (such as the QUIC DATAGRAM frame
<xref target="I-D.ietf-quic-datagram"/>) are not available.</li>
          <li>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).</li>
        </ul>
        <t>The WebTransport protocol framework 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 be also 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.  Transport 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 treated atomically.</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>Server:</dt>
          <dd>
            <t>A WebTransport server is an application that accepts incoming WebTransport
sessions.</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>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>
        </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="I-D.ietf-tls-dtls13"/>).
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>
    </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>
    <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="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 a TCP-based protocol 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>
      </section>
      <section anchor="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).
TODO: describe the stream state machine explicitly.</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.  In
that case, the sender is expected to not retransmit any data that was already
sent on that stream.</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.</t>
      </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>Resetting a stream results in the lost stream data no longer being
retransmitted, and</li>
        <li>The datagrams are never retransmitted.</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
has a dual purpose.  On one hand, it protects the transport from the network,
including both potential attackers and ossification by middleboxes.  On the
other hand, it protects the network elements from potential confusion attacks
such as the one discussed in Section 10.3 of <xref target="RFC6455"/>.</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>WebTransport does not support any traditional means of HTTP-based
authentication.  It is not necessarily based on HTTP, and hence does not support
HTTP cookies or HTTP authentication.  Since it requires TLS, individual
transport protocols MAY expose TLS-based authentication capabilities such as
client certificates.</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>
      <name>References</name>
      <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">
              <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="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <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">
              <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="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee">
              <organization/>
            </author>
            <author fullname="R. Fielding" initials="R." surname="Fielding">
              <organization/>
            </author>
            <author fullname="L. Masinter" initials="L." surname="Masinter">
              <organization/>
            </author>
            <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>
      </references>
      <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="2022" month="March"/>
          </front>
        </reference>
        <reference anchor="RFC6455">
          <front>
            <title>The WebSocket Protocol</title>
            <author fullname="I. Fette" initials="I." surname="Fette">
              <organization/>
            </author>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov">
              <organization/>
            </author>
            <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 &lt;iframe&gt;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">
              <organization/>
            </author>
            <author fullname="S. Loreto" initials="S." surname="Loreto">
              <organization/>
            </author>
            <author fullname="M. Tüxen" initials="M." surname="Tüxen">
              <organization/>
            </author>
            <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="I-D.ietf-httpbis-h3-websockets">
          <front>
            <title>Bootstrapping WebSockets with HTTP/3</title>
            <author fullname="Ryan Hamilton">
              <organization>Google</organization>
            </author>
            <date day="8" month="February" 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="Internet-Draft" value="draft-ietf-httpbis-h3-websockets-04"/>
        </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="I-D.ietf-quic-datagram">
          <front>
            <title>An Unreliable Datagram Extension to QUIC</title>
            <author fullname="Tommy Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Eric Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="David Schinazi">
              <organization>Google LLC</organization>
            </author>
            <date day="4" month="February" 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.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the QUIC Working Group
   mailing list (mailto:quic@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/quic/.

   Source for this draft and an issue tracker can be found at
   https://github.com/quicwg/datagram.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-datagram-10"/>
        </reference>
        <reference anchor="I-D.ietf-tls-dtls13">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="Eric Rescorla">
              <organization>RTFM, Inc.</organization>
            </author>
            <author fullname="Hannes Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Nagendra Modadugu">
              <organization>Google, Inc.</organization>
            </author>
            <date day="30" month="April" year="2021"/>
            <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.

   The DTLS 1.3 protocol is intentionally 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.

   This document obsoletes RFC 6347.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-dtls13-43"/>
        </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">
              <organization/>
            </author>
            <author fullname="D. Wing" initials="D." surname="Wing">
              <organization/>
            </author>
            <author fullname="R. Ravindranath" initials="R." surname="Ravindranath">
              <organization/>
            </author>
            <author fullname="T. Reddy" initials="T." surname="Reddy">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." surname="Thomson">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="V. Paxson" initials="V." surname="Paxson">
              <organization/>
            </author>
            <author fullname="E. Blanton" initials="E." surname="Blanton">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett">
              <organization/>
            </author>
            <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="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>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAOGGJmIAA+1ba3MbN5b9jl+BdT6svUVKtuUkjvYxo0jO2Ft+aCU5qdTM
lAtsgiTWzQan0RTNSfm/77kPoLtpZpL9vDuVsSWyG7i4j3PPvReeTqemC13t
z+3dytuf/OyudU3axLaz123sYhVr+0Pr1n4X24/GzWatvz8fPWfmsWrwwLmd
t27RTYPvFtOdn3X0wDTe+/Y++N308ZmZuw5P/XJ1cffis6nwyzK2+3Oburmh
1Zdt3G6w9ovv724u3t4aEzbtue3abeqePn783eOnxrXenduLzaYOeD3EJlnX
zO2Nd/X0Lqy9ManDBx9cHRvstPfJbMK5/TOOMbEJsrZ+kfDTfk0//NUYt+1W
sT03dmos/headG5/PLE/uhTq4O/5Qznbj6HqYjv+JrZL14S/syTn9k8xLmvP
X/i1C/W5vaeH7+//uORvTqq4xpmaRWzXeOXeY1t7eXt9zq90rl367tyuum6T
zk9Pd7vdye7sBFuc3t2c4rFTeUxs9eAyNp1vOnvrq20bur29jtDJ3r729762
Zw/44XI6q9JCuWeX/KuY4idoPTRLe0WGM2Y6nVo3SzBchd9+hz9Y37hZ7ZOt
oJOmw98wCV4PjZ/b2d52soRJWcp1nEO8LuLB9XrbkBW93YVuZZ1t/TritwR/
8a3dJhLMWX7V2/W27sKm9p/83HRZohNrX3W8Z0jYPC74+Y5+CM083If51tV2
o2IniOM6Cx+yyS08SeE/bWLyBj9tG/YziO0G3jUhOWd8GhVSD8AL1XXc0aJ+
TWvNPGSGdAGGaauVa5YeutmfkCJDsgiS7ZosNvcLLMjvWQoOLIOj/20bcH7W
YWz4u15sWhYHMkNjTKxLdufxrpOlSKF4c+FdB32xMkarwOu3GzYj/A+xgGDB
I7tVqFZ27fYkftzQoV19Ip7QwBof3tIfXfyAEJv7NhlzFVK1TQkPyhZ0NPIe
OPBHbLupXeXzEUbeQyFBJq1hK/Mw4wN99UdCDPL0RxMVCIs66BAxAnt05i//
lqOCFtFvTvJbp/TBafL81x849D7QJv8+3OMv/3EiHt16mDwglOGd8HN2f5I1
pLSF/KScwaEq15BmFnHbHEiyhD9sZxTTpwJ4y4J5p/8IB09lI5KHxMH39uL6
Vd4utrDdJsJ5SayoomTX+XVpdqFanqhIIZ5i1Wk5+imfnSy6DvM5EMp8ZV/B
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
+i8TqG1r/gcxywvljDYAAA==

-->

</rfc>
