<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-kazuho-ptth-ptth-01" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title>Protocol for Transposed Transactions over HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-kazuho-ptth-ptth-01"/>
    <author fullname="奥 一穂" asciiFullname="Kazuho Oku">
      <organization>Fastly</organization>
      <address>
        <email>kazuhooku@gmail.com</email>
      </address>
    </author>
    <author fullname="Yaroslav Rosomakho">
      <organization>Zscaler</organization>
      <address>
        <email>yrosomakho@zscaler.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="20"/>
    <workgroup>ptth</workgroup>
    <keyword>internet-draft</keyword>
    <abstract>
      <?line 32?>

<t>This document specifies the Protocol for Transposed Transactions over HTTP
(PTTH), an HTTP extension that allows a backend server to establish an HTTP
connection to a reverse proxy and transpose the flow of HTTP requests. The
reverse proxy then sends requests to the backend server over the resulting
transposed channel. This extension lets backend servers behind restrictive
firewalls accept HTTP traffic through reverse proxies without changing firewall
settings and with minimal overhead.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Protocol for Transposed Transactions over HTTP Working Group mailing list (ptth@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ptth/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/kazuho/draft-kazuho-ptth-ptth"/>.</t>
    </note>
  </front>
  <middle>
    <?line 43?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In scalable HTTP deployments—such as those using CDNs and dynamic backend server
pools—clients send requests to reverse proxies, which then forward them to
backend servers. Backend servers frequently reside behind firewalls that block
inbound TCP or QUIC connections, requiring special network or firewall
configuration to permit proxy-initiated traffic. To overcome these restrictions,
some organizations use VPNs, but VPNs introduce operational complexity, hamper
scalability, and impose performance overhead.</t>
      <t>PTTH lets a backend server establish an HTTP connection to a reverse proxy and
transpose the flow of HTTP requests, so that the reverse proxy can send HTTP
requests to the backend server.</t>
      <t>PTTH has the following characteristics:</t>
      <ul spacing="normal">
        <li>
          <t><strong>URI-based:</strong> the setup request's target URI identifies the PTTH endpoint
and scopes which requests the reverse proxy forwards to the backend server.</t>
        </li>
        <li>
          <t><strong>Authorized like any HTTP request:</strong> the backend server asserts its identity
— with a TLS client certificate, an HTTP authentication scheme, or otherwise —
and the reverse proxy authenticates and authorizes the request just as it
would any ordinary HTTP request.</t>
        </li>
        <li>
          <t><strong>Unmodified HTTP on the transposed channel:</strong> PTTH merely sets up the
transposed channel; HTTP runs over it unmodified, so HTTP extensions can be
used without modification.</t>
        </li>
        <li>
          <t><strong>Minimal overhead:</strong> the encapsulation that a transposed channel would
otherwise incur can be avoided, letting the channel use the underlying
transport directly.</t>
        </li>
      </ul>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="establishing-transposed-http-channels">
      <name>Establishing Transposed HTTP Channels</name>
      <t>To establish a transposed HTTP channel, the backend server connects to the
reverse proxy and issues an extended CONNECT request (<xref target="EXT-CONNECT"/>
and <xref target="EXT-CONNECT-H3"/>) — or, in HTTP/1.1, the equivalent HTTP Upgrade
(<xref section="7.8" sectionFormat="of" target="HTTP-SEMANTICS"/>) — that both authenticates the backend server
and negotiates the transposition. Although the way extended CONNECT is expressed
differs between HTTP versions, the accompanying header fields do not. The
parameters for negotiating PTTH are therefore defined in a version-neutral
manner.</t>
      <t>The target URI of the request identifies the PTTH endpoint and the scope of
requests that the reverse proxy forwards to the backend server over the
transposed channel. When that scope is an origin (<xref target="WEB-ORIGIN"/>), the
well-known URI defined in <xref target="client-config"/> is used. When the scope is
expressed by other means, such as a configuration identifier, the target URI is
left to the deployment.</t>
      <t>The authentication scheme is unspecified: deployments can use a TLS- or an
HTTP-based scheme, or something else.</t>
      <t>Once a transposed channel is established, HTTP requests flow from the reverse
proxy to the backend server: the reverse proxy acts as the HTTP client and the
backend server as the HTTP server on the transposed channel.</t>
      <t>The HTTP version that carries the extended CONNECT request and the HTTP version
of the transposed channel are independent. The backend server can send an
extended CONNECT request on any version of HTTP and establish a transposed HTTP
channel of any HTTP version.</t>
      <section anchor="client-config">
        <name>Client Configuration</name>
        <t>When backend servers are configured to receive forwarded requests scoped by an
origin, they use a target URI built from a URI Template
(<xref target="URI-TEMPLATE"/>) to establish a transposed channel. The URI Template
identifies the reverse proxy and the origin for which the backend server is
registering a transposed channel.</t>
        <t>The following examples show URI Templates for registering PTTH channels:</t>
        <figure anchor="fig-uri-template">
          <name>URI Template Examples</name>
          <artwork><![CDATA[
https://proxy.example.org/.well-known/ptth/{serialized_origin}/
https://proxy.example.org:4443/ptth?origin={serialized_origin}
https://proxy.example.org:4443/ptth{?serialized_origin}
]]></artwork>
        </figure>
        <t>The following requirements apply to the URI Template:</t>
        <ul spacing="normal">
          <li>
            <t>The URI Template <bcp14>MUST</bcp14> be a level 4 template or lower.</t>
          </li>
          <li>
            <t>The URI Template <bcp14>MUST</bcp14> be in absolute form and <bcp14>MUST</bcp14> include non-empty scheme,
authority, and path components.</t>
          </li>
          <li>
            <t>The path component of the URI Template <bcp14>MUST</bcp14> start with a slash ("/").</t>
          </li>
          <li>
            <t>All template variables <bcp14>MUST</bcp14> be within the path or query components of the URI.</t>
          </li>
          <li>
            <t>The URI Template <bcp14>MUST</bcp14> contain the variable "serialized_origin" and
<bcp14>MAY</bcp14> contain other variables.</t>
          </li>
          <li>
            <t>The URI Template <bcp14>MUST NOT</bcp14> contain any non-ASCII Unicode characters and <bcp14>MUST</bcp14>
only contain ASCII characters in the range 0x21-0x7E inclusive.</t>
          </li>
          <li>
            <t>The URI Template <bcp14>MUST NOT</bcp14> use Reserved Expansion ("+" operator), Fragment
Expansion ("#" operator), Label Expansion with Dot-Prefix, Path Segment
Expansion with Slash-Prefix, or Path-Style Parameter Expansion with
Semicolon-Prefix.</t>
          </li>
        </ul>
        <t>Backend servers <bcp14>SHOULD</bcp14> validate the requirements above. However, a backend
server <bcp14>MAY</bcp14> use a general-purpose URI Template implementation that does not
perform PTTH-specific validation. If a backend server detects that any of the
requirements above are not met by a URI Template, it <bcp14>MUST</bcp14> reject its
configuration and abort the request without sending it to the reverse proxy.</t>
        <t>The "serialized_origin" variable identifies the backend origin or origins being
registered. The value of "serialized_origin" is a non-empty list. Each member of
the list is a "serialized-origin" value as defined in <xref section="7.1" sectionFormat="of" target="WEB-ORIGIN"/> and <bcp14>MUST</bcp14> be the ASCII serialization of an origin as defined in
<xref section="6.2" sectionFormat="of" target="WEB-ORIGIN"/>. The value "null" <bcp14>MUST NOT</bcp14> be used.</t>
        <t>If the port is omitted from a serialized origin, the default port for the
corresponding scheme is implied.</t>
        <t>When represented in the resulting target URI, characters in each serialized
origin that are not allowed in the target URI component are percent-encoded by
URI Template expansion. For example, the serialized origin
"https://backend.example.com:8443" is represented as
"https%3A%2F%2Fbackend.example.com%3A8443" when expanded into a path segment.</t>
        <t>When sending a PTTH establishment request, the backend server <bcp14>MUST</bcp14> perform URI
Template expansion using "serialized_origin" set to the list of backend origins
it is registering. If more than one origin is registered, the list contains one
serialized origin for each backend origin. For example, expanding</t>
        <artwork><![CDATA[
https://proxy.example.org/.well-known/ptth/{serialized_origin}/
]]></artwork>
        <t>with "serialized_origin" set to the list containing
"https://backend.example.com" and "https://api.example.com:8443" produces:</t>
        <artwork><![CDATA[
https://proxy.example.org/.well-known/ptth/https%3A%2F%2Fbackend.example.com,https%3A%2F%2Fapi.example.com%3A8443/
]]></artwork>
        <t>Backend server implementations that are constrained to configuring only the
reverse proxy host and port <bcp14>MAY</bcp14> attempt to use the following default template:</t>
        <artwork><![CDATA[
https://$PROXY_HOST:$PROXY_PORT/.well-known/ptth/{serialized_origin}/
]]></artwork>
        <t>where $PROXY_HOST and $PROXY_PORT are the configured host and port of the
reverse proxy, respectively. PTTH deployments <bcp14>SHOULD</bcp14> offer service at this
location if they need to interoperate with such backend servers.</t>
      </section>
      <section anchor="http1-and-http2">
        <name>HTTP/1 and HTTP/2</name>
        <t>To establish a transposed HTTP/1 or HTTP/2 channel, the backend server issues
extended CONNECT accompanied by the "ptth" token: in HTTP/1.1
(<xref target="H1"/>), a "GET" request carrying an "Upgrade: ptth" header field;
in HTTP/2 (<xref target="H2"/>) and HTTP/3 (<xref target="H3"/>), a CONNECT
request carrying "ptth" in the ":protocol" pseudo-header field.</t>
        <t>The request <bcp14>MUST</bcp14> also carry the ALPN header field (<xref target="ALPN-HEADER"/>)
specifying the HTTP versions that the backend server is willing to use on the
transposed channel. Valid ALPN identifiers include HTTP protocols that run
directly over a byte stream, such as "h2" and "http/1.1", and HTTP/3 over QMux
(<xref target="HTTP3-QMUX"/>), identified by the "h3qx"
ALPN identifier.</t>
        <t>When the transposition succeeds, the reverse proxy returns a successful response
— a 101 (Switching Protocols) response in HTTP/1.1, or a 2xx (Successful)
response in HTTP/2 and HTTP/3 — carrying an ALPN response header field that
specifies the chosen HTTP version. HTTP of that version is then carried directly
over the resulting bidirectional byte stream, with neither TLS nor capsules: its
confidentiality and integrity are provided by the setup channel's encryption,
and the transposed HTTP protocol supplies its own framing and can exchange
metadata such as the intent to shut down the connection. When HTTP/2 is
selected, it is started by the reverse proxy sending a connection preface
(<xref section="3.3" sectionFormat="of" target="H2"/>).</t>
        <t>Because HTTP/2 offers cleaner framing and metadata exchange than HTTP/1.1,
HTTP/2 is <bcp14>RECOMMENDED</bcp14> as the transposed protocol.</t>
        <t><xref target="fig-establishment"/> shows an HTTP/1.1 exchange establishing a transposed
channel. Here the Basic HTTP Authentication Scheme <xref target="BASIC-AUTH"/>
authenticates the backend server, which offers both HTTP/2 and HTTP/1.1; the
reverse proxy selects HTTP/2.</t>
        <figure anchor="fig-establishment">
          <name>Establishing a transposed channel over HTTP/1.1</name>
          <artwork><![CDATA[
GET /.well-known/ptth/https%3A%2F%2Fbackend.example.com/ HTTP/1.1
Host: proxy.example.com
Connection: upgrade
Upgrade: ptth
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
ALPN: h3qx, h2, http%2F1.1

HTTP/1.1 101 Switching Protocols
Connection: upgrade
Upgrade: ptth
ALPN: h3qx

]]></artwork>
        </figure>
      </section>
      <section anchor="http3">
        <name>HTTP/3</name>
        <t>HTTP/3 (<xref target="H3"/>) runs over QUIC (<xref target="QUIC"/>), whose underlying
transport is UDP. A transposed HTTP/3 channel is therefore established as a new
HTTP/3 connection whose UDP flow is proxied over the setup channel.</t>
        <t>To establish it, the backend server issues an extended CONNECT request with a
"ptth-udp" upgrade token, together with an ALPN header field specifying HTTP/3.
The new connection is initiated by the reverse proxy toward the backend server;
the reverse proxy is thus the client-side of the transposed connection as well
as being the HTTP client, and the backend server is the server-side of the
transposed connection as well as being the HTTP server, so the transposed
connection is an ordinary HTTP/3 connection in which no transport or stream
roles are reversed.</t>
        <t>The UDP flow carrying the new connection is proxied over the setup channel as
datagrams encapsulated using HTTP/3 Datagrams or capsules
(<xref target="CAPSULE"/>), as in Proxying UDP in HTTP (<xref target="CONNECT-UDP"/>).
Therefore, while any version of HTTP can be used as the setup channel, using
HTTP/3 as the setup channel provides the opportunity to use HTTP/3 Datagrams and
avoid head-of-line blocking.</t>
        <t>To reduce the encapsulation overhead, extensions that optimize the proxying of
UDP <bcp14>MAY</bcp14> also be used; see <xref target="fwd"/>.</t>
        <t>For the QUIC handshake (<xref target="QUIC-TLS"/>) of the new connection, an
external PSK (<xref section="2.2" sectionFormat="of" target="TLS"/>) is used, which both endpoints
derive from the setup channel's TLS or QUIC connection using the exporter
interface (<xref section="7.5" sectionFormat="of" target="TLS"/>), with the label "ptth-udp", an empty
context, and an output length equal to the size of the hash of the cipher suite
negotiated on the setup channel. That hash is also the PSK's associated hash
function, and the key is offered under the PSK identity "ptth-udp".</t>
        <t>The purpose of this PSK is not to authenticate the backend server. Instead, it
is used to let the QUIC connection, an always-encrypted transport, inherit the
security context of the setup channel. When the reverse proxy returns a
successful response to the extended CONNECT request, it has already validated
the identity of the backend server as with ordinary HTTP requests, and has
agreed to forward requests. Authentication of the backend server is unneeded
after that point.</t>
      </section>
    </section>
    <section anchor="avoiding-encapsulation-overhead">
      <name>Avoiding Encapsulation Overhead</name>
      <t>The transposed channel established as described above is carried within the
setup connection: over HTTP/2 it is confined to a single stream, and over HTTP/3
the new connection's packets are wrapped as HTTP Datagrams and thereby encrypted
twice. This section describes, for each case, how that encapsulation can be
avoided so that the transposed channel uses the underlying transport directly.</t>
      <section anchor="http1-and-http2-1">
        <name>HTTP/1 and HTTP/2</name>
        <t>Extended CONNECT over HTTP/2 or HTTP/3 establishes the transposed channel within
a single bidirectional stream. A transposed HTTP/2 channel carried this way is
multiplexed inside that one stream, adding a layer of framing and confining the
transposed channel to that stream's flow-control window.</t>
        <t>Performing the setup over HTTP/1.1 avoids this. The HTTP/1.1 Upgrade hands over
the entire connection rather than a single stream, so the transposed channel is
the connection itself; a transposed HTTP/2 channel then runs natively, with its
streams mapped directly onto the connection.</t>
        <t>Because the transposed channel reuses the setup connection, it also inherits
that connection's TLS session: its authentication and encryption carry over
unchanged, and neither a pre-shared key nor any additional authentication is
required.</t>
      </section>
      <section anchor="fwd">
        <name>HTTP/3</name>
        <t>Proxying the transposed connection's packets as HTTP/3 Datagrams or capsules
encrypts each packet twice: once by the transposed connection and again by the
setup channel. Forwarded mode of QUIC-Aware Proxying
(<xref target="QUIC-PROXY"/>) removes the second encryption.</t>
        <t>In forwarded mode, short header packets of the transposed connection are sent
over the same path as the setup channel but are not encapsulated within it; the
reverse proxy and the backend server identify them by their QUIC connection IDs.
Packet transforms (<xref section="4.3" sectionFormat="of" target="QUIC-PROXY"/>) are unnecessary in PTTH,
because the reverse proxy is itself an endpoint of the transposed connection;
there is no additional link that passive attackers might observe to correlate.</t>
        <t>Endpoints can therefore send and receive the QUIC packets of the transposed
connection directly on the network path of the setup connection, simply by
swapping the Connection IDs to the Virtual Connection IDs assigned by the
forwarded mode.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="establishing-authority">
        <name>Establishing Authority</name>
        <t>In HTTP, only the URI's authority may process or delegate the request
(<xref section="17.1" sectionFormat="of" target="HTTP-SEMANTICS"/>).</t>
        <t>This authority model of HTTP remains unchanged under PTTH:</t>
        <ul spacing="normal">
          <li>
            <t>When the backend server connects to the reverse proxy and requests the
transposition of the connection, the backend identifies the reverse proxy
using a target URI whose authority component identifies the reverse proxy.</t>
          </li>
          <li>
            <t>When the reverse proxy forwards requests to the backend over a transposed
connection, it is merely exercising its rights as the authoritative server.
This behavior is identical to forwarding requests over connections the
reverse proxy initiated, using whatever authentication scheme it chooses.
PTTH differs only in how the backend connections are established.</t>
          </li>
        </ul>
        <t>Accepting a PTTH establishment request does more than authenticate the backend
server. It authorizes that backend server to receive requests for each backend
origin identified by the request target. A reverse proxy <bcp14>MUST</bcp14> therefore verify
that the authenticated backend server is authorized to register every requested
backend origin before accepting the request.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="http-upgrade-token">
        <name>HTTP Upgrade Token</name>
        <t>Once approved, this document will request IANA to register the following entries
to the "HTTP Upgrade Tokens" registry maintained at
<eref target="https://www.iana.org/assignments/http-upgrade-tokens">https://www.iana.org/assignments/http-upgrade-tokens</eref>:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>ptth</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>Establishes a transposed HTTP channel that runs over a byte stream.</t>
          </dd>
          <dt>Expected Version Tokens:</dt>
          <dd>
            <t>None</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>ptth-udp</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>Establishes a transposed HTTP channel that runs over UDP.</t>
          </dd>
          <dt>Expected Version Tokens:</dt>
          <dd>
            <t>None</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="tls-exporter-label">
        <name>TLS Exporter Label</name>
        <t>Once approved, this document will request IANA to register the following entry in the "TLS
Exporter Labels" registry maintained at
<eref target="https://www.iana.org/assignments/tls-parameters">https://www.iana.org/assignments/tls-parameters</eref>:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>ptth-udp</t>
          </dd>
          <dt>DTLS-OK:</dt>
          <dd>
            <t>N</t>
          </dd>
          <dt>Recommended:</dt>
          <dd>
            <t>Y</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="well-known-uri">
        <name>Well-Known URI</name>
        <t>Once approved, this document will request IANA to register the
following entry in the "Well-Known URIs" registry maintained at <eref target="https://www.iana.org/assignments/well-known-uris">https://www.iana.org/assignments/well-known-uris</eref>:</t>
        <dl>
          <dt>URI Suffix:</dt>
          <dd>
            <t>ptth</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <displayreference target="H1" to="HTTP/1"/>
    <displayreference target="H2" to="HTTP/2"/>
    <displayreference target="H3" to="HTTP/3"/>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="H1">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t>This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </reference>
        <reference anchor="H2">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="H3">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <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="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="EXT-CONNECT">
          <front>
            <title>Bootstrapping WebSockets with HTTP/2</title>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="September" year="2018"/>
            <abstract>
              <t>This document defines a mechanism for running the WebSocket Protocol (RFC 6455) over a single stream of an HTTP/2 connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8441"/>
          <seriesInfo name="DOI" value="10.17487/RFC8441"/>
        </reference>
        <reference anchor="EXT-CONNECT-H3">
          <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="HTTP-SEMANTICS">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="WEB-ORIGIN">
          <front>
            <title>The Web Origin Concept</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>This document defines the concept of an "origin", which is often used as the scope of authority or privilege by user agents. Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites. In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string. It also defines an HTTP header field, named "Origin", that indicates which origins are associated with an HTTP request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6454"/>
          <seriesInfo name="DOI" value="10.17487/RFC6454"/>
        </reference>
        <reference anchor="URI-TEMPLATE">
          <front>
            <title>URI Template</title>
            <author fullname="J. Gregorio" initials="J." surname="Gregorio"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="M. Hadley" initials="M." surname="Hadley"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="D. Orchard" initials="D." surname="Orchard"/>
            <date month="March" year="2012"/>
            <abstract>
              <t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6570"/>
          <seriesInfo name="DOI" value="10.17487/RFC6570"/>
        </reference>
        <reference anchor="ALPN-HEADER">
          <front>
            <title>The ALPN HTTP Header Field</title>
            <author fullname="A. Hutton" initials="A." surname="Hutton"/>
            <author fullname="J. Uberti" initials="J." surname="Uberti"/>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="August" year="2015"/>
            <abstract>
              <t>This specification allows HTTP CONNECT requests to indicate what protocol is intended to be used within the tunnel once established, using the ALPN header field.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7639"/>
          <seriesInfo name="DOI" value="10.17487/RFC7639"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="CAPSULE">
          <front>
            <title>HTTP Datagrams and the Capsule Protocol</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.</t>
              <t>In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAM extension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTP Datagrams can be sent using the Capsule Protocol, which is a more general convention for conveying data in HTTP connections.</t>
              <t>HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9297"/>
          <seriesInfo name="DOI" value="10.17487/RFC9297"/>
        </reference>
        <reference anchor="CONNECT-UDP">
          <front>
            <title>Proxying UDP in HTTP</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes how to proxy UDP in HTTP, similar to how the HTTP CONNECT method allows proxying TCP in HTTP. More specifically, this document defines a protocol that allows an HTTP client to create a tunnel for UDP communications through an HTTP server that acts as a proxy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9298"/>
          <seriesInfo name="DOI" value="10.17487/RFC9298"/>
        </reference>
        <reference anchor="TLS">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <date day="13" month="September" year="2025"/>
            <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.

   This document updates RFCs 5705, 6066, 7627, and 8422 and obsoletes
   RFCs 5077, 5246, 6961, 8422, and 8446.  This document also specifies
   new requirements for TLS 1.2 implementations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8446bis-14"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="HTTP3-QMUX">
          <front>
            <title>HTTP/3 over QMux</title>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Lucas Pardue" initials="L." surname="Pardue">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Jana Iyengar" initials="J." surname="Iyengar">
              <organization>Netflix</organization>
            </author>
            <date day="25" month="June" year="2026"/>
            <abstract>
              <t>   This document specifies how to use HTTP/3 over QMux.

Discussion Venues

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

   Discussion of this document takes place on the HTTP Working Group
   mailing list (ietf-http-wg@w3.org), which is archived at
   https://lists.w3.org/Archives/Public/ietf-http-wg/.

   Source for this draft and an issue tracker can be found at
   https://github.com/kazuho/draft-kazuho-httpbis-http3-on-streams.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kazuho-httpbis-http3-over-qmux-00"/>
        </reference>
        <reference anchor="BASIC-AUTH">
          <front>
            <title>The 'Basic' HTTP Authentication Scheme</title>
            <author fullname="J. Reschke" initials="J." surname="Reschke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This document defines the "Basic" Hypertext Transfer Protocol (HTTP) authentication scheme, which transmits credentials as user-id/ password pairs, encoded using Base64.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7617"/>
          <seriesInfo name="DOI" value="10.17487/RFC7617"/>
        </reference>
        <reference anchor="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="QUIC-PROXY">
          <front>
            <title>QUIC-Aware Proxying Using HTTP</title>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Eric Rosenberg" initials="E." surname="Rosenberg">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document extends UDP Proxying over HTTP to add optimizations for
   proxied QUIC connections.  Specifically, it allows a proxy to reuse
   UDP 4-tuples for multiple proxied connections, and adds a mode of
   proxying in which QUIC short header packets can be forwarded and
   transformed through a HTTP/3 proxy rather than being fully re-
   encapsulated and re-encrypted.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-quic-proxy-09"/>
        </reference>
      </references>
    </references>
    <?line 444?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
pk8Jzo7OhuL/AUYbf9PRRQAA

-->

</rfc>
