<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpbis-connect-tcp-06" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="Templated CONNECT-TCP">Template-Driven HTTP CONNECT Proxying for TCP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-connect-tcp-06"/>
    <author initials="B. M." surname="Schwartz" fullname="Benjamin M. Schwartz">
      <organization>Meta Platforms, Inc.</organization>
      <address>
        <email>ietf@bemasc.net</email>
      </address>
    </author>
    <date year="2024" month="October" day="21"/>
    <area>art</area>
    <workgroup>httpbis</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 35?>

<t>TCP proxying using HTTP CONNECT has long been part of the core HTTP specification.  However, this proxying functionality has several important deficiencies in modern HTTP environments.  This specification defines an alternative HTTP proxy service configuration for TCP connections.  This configuration is described by a URI Template, similar to the CONNECT-UDP and CONNECT-IP protocols.</t>
    </abstract>
  </front>
  <middle>
    <?line 39?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="history">
        <name>History</name>
        <t>HTTP has used the CONNECT method for proxying TCP connections since HTTP/1.1.  When using CONNECT, the request target specifies a host and port number, and the proxy forwards TCP payloads between the client and this destination (<xref section="9.3.6" sectionFormat="comma" target="RFC9110"/>).  To date, this is the only mechanism defined for proxying TCP over HTTP.  In this specification, this is referred to as a "classic HTTP CONNECT proxy".</t>
        <t>HTTP/3 uses a UDP transport, so it cannot be forwarded using the pre-existing CONNECT mechanism.  To enable forward proxying of HTTP/3, the MASQUE effort has defined proxy mechanisms that are capable of proxying UDP datagrams <xref target="CONNECT-UDP"/>, and more generally IP datagrams <xref target="CONNECT-IP"/>.  The destination host and port number (if applicable) are encoded into the HTTP resource path, and end-to-end datagrams are wrapped into HTTP Datagrams <xref target="RFC9297"/> on the client-proxy path.</t>
      </section>
      <section anchor="problems">
        <name>Problems</name>
        <t>HTTP clients can be configured to use proxies by selecting a proxy hostname, a port, and whether to use a security protocol. However, Classic HTTP CONNECT requests using the proxy do not carry this configuration information. Instead, they only indicate the hostname and port of the target. This prevents any HTTP server from hosting multiple distinct proxy services, as the server cannot distinguish them by path (as with distinct resources) or by origin (as in "virtual hosting").</t>
        <t>The absence of an explicit origin for the proxy also rules out the usual defenses against server port misdirection attacks (see <xref section="7.4" sectionFormat="of" target="RFC9110"/>) and creates ambiguity about the use of origin-scoped response header fields (e.g., "Alt-Svc" <xref target="RFC7838"/>, "Strict-Transport-Security" <xref target="RFC6797"/>).</t>
      </section>
      <section anchor="overview">
        <name>Overview</name>
        <t>This specification describes an alternative mechanism for proxying TCP in HTTP.  Like <xref target="CONNECT-UDP"/> and <xref target="CONNECT-IP"/>, the proxy service is identified by a URI Template.  Proxy interactions reuse standard HTTP components and semantics, avoiding changes to the core HTTP protocol.</t>
      </section>
    </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="specification">
      <name>Specification</name>
      <t>A template-driven TCP transport proxy for HTTP is identified by a URI Template <xref target="RFC6570"/> containing variables named "target_host" and "target_port".  This URI Template and its variable values <bcp14>MUST</bcp14> meet all the same requirements as for UDP proxying (<xref section="2" sectionFormat="comma" target="RFC9298"/>), and are subject to the same validation rules.  The client <bcp14>MUST</bcp14> substitute the destination host and port number into this template to produce the request URI.</t>
      <section anchor="in-http11">
        <name>In HTTP/1.1</name>
        <t>In HTTP/1.1, the client uses the proxy by issuing a request as follows:</t>
        <ul spacing="normal">
          <li>
            <t>The method <bcp14>SHALL</bcp14> be "GET".</t>
          </li>
          <li>
            <t>The request <bcp14>SHALL</bcp14> include a single "Host" header field containing the origin of the proxy.</t>
          </li>
          <li>
            <t>The request <bcp14>SHALL</bcp14> include a "Connection" header field with the value "Upgrade".  (Note that this requirement is case-insensitive as per <xref section="7.6.1" sectionFormat="of" target="RFC9110"/>.)</t>
          </li>
          <li>
            <t>The request <bcp14>SHALL</bcp14> include an "Upgrade" header field with the value "connect-tcp".</t>
          </li>
          <li>
            <t>The request's target <bcp14>SHALL</bcp14> correspond to the URI derived from expansion of the proxy's URI Template.</t>
          </li>
        </ul>
        <t>If the request is well-formed and permissible, the proxy <bcp14>MUST</bcp14> attempt to establish the TCP connection before sending any response status code other than "100 (Continue)" (see <xref target="conveying-metadata"/>).  If the TCP connection is successful, the response <bcp14>SHALL</bcp14> be as follows:</t>
        <ul spacing="normal">
          <li>
            <t>The HTTP status code <bcp14>SHALL</bcp14> be "101 (Switching Protocols)".</t>
          </li>
          <li>
            <t>The response <bcp14>SHALL</bcp14> include a "Connection" header field with the value "Upgrade".</t>
          </li>
          <li>
            <t>The response <bcp14>SHALL</bcp14> include a single "Upgrade" header field with the value "connect-tcp".</t>
          </li>
        </ul>
        <t>If the request is malformed or impermissible, the proxy <bcp14>MUST</bcp14> return a 4XX error code.  If a TCP connection was not established, the proxy <bcp14>MUST NOT</bcp14> switch protocols to "connect-tcp", and the client <bcp14>MAY</bcp14> reuse this connection for additional HTTP requests.</t>
        <t>After a success response is returned, the connection <bcp14>SHALL</bcp14> conform to all the usual requirements for classic CONNECT proxies in HTTP/1.1 (<xref section="9.3.6" sectionFormat="comma" target="RFC9110"/>).  Additionally, if the proxy observes a connection error from the client (e.g., a TCP RST, TCP timeout, or TLS error), it <bcp14>SHOULD</bcp14> send a TCP RST to the target.  If the proxy observes a connection error from the target, it <bcp14>SHOULD</bcp14> send a TLS "internal_error" alert to the client, or set the TCP RST bit if TLS is not in use.  These behaviors avoid truncation of transfers between the client and the target on vulnerable protocols (e.g., HTTP/1.1 without TLS) while preserving the confidentiality and integrity guarantees of the "https" scheme.</t>
        <figure>
          <name>Templated TCP proxy example in HTTP/1.1</name>
          <artwork><![CDATA[
Client                                                 Proxy

GET /proxy?target_host=192.0.2.1&target_port=443 HTTP/1.1
Host: example.com
Connection: Upgrade
Upgrade: connect-tcp

** Proxy establishes a TCP connection to 192.0.2.1:443 **

                            HTTP/1.1 101 Switching Protocols
                            Connection: Upgrade
                            Upgrade: connect-tcp
]]></artwork>
        </figure>
      </section>
      <section anchor="in-http2-and-http3">
        <name>In HTTP/2 and HTTP/3</name>
        <t>In HTTP/2 and HTTP/3, the proxy <bcp14>MUST</bcp14> include SETTINGS_ENABLE_CONNECT_PROTOCOL in its SETTINGS frame <xref target="RFC8441"/><xref target="RFC9220"/>.  The client uses the proxy by issuing an "extended CONNECT" request as follows:</t>
        <ul spacing="normal">
          <li>
            <t>The :method pseudo-header field <bcp14>SHALL</bcp14> be "CONNECT".</t>
          </li>
          <li>
            <t>The :protocol pseudo-header field <bcp14>SHALL</bcp14> be "connect-tcp".</t>
          </li>
          <li>
            <t>The :authority pseudo-header field <bcp14>SHALL</bcp14> contain the authority of the proxy.</t>
          </li>
          <li>
            <t>The :path and :scheme pseudo-header fields <bcp14>SHALL</bcp14> contain the path and scheme of the request URI derived from the proxy's URI Template.</t>
          </li>
        </ul>
        <t>From this point on, the request and response <bcp14>SHALL</bcp14> conform to all the usual requirements for classic CONNECT proxies in this HTTP version (see <xref section="8.5" sectionFormat="of" target="RFC9113"/> and <xref section="4.4" sectionFormat="of" target="RFC9114"/>).</t>
        <t>A templated TCP proxying request that does not conform to all of these requirements represents a client error (see <xref section="15.5" sectionFormat="comma" target="RFC9110"/>) and may be malformed (see <xref section="8.1.1" sectionFormat="of" target="RFC9113"/> and <xref section="4.1.2" sectionFormat="of" target="RFC9114"/>).</t>
        <figure>
          <name>Templated TCP proxy example in HTTP/2</name>
          <artwork><![CDATA[
HEADERS
:method = CONNECT
:scheme = https
:authority = request-proxy.example
:path = /proxy?target_host=2001%3Adb8%3A%3A1&target_port=443
:protocol = connect-tcp
...
]]></artwork>
        </figure>
      </section>
      <section anchor="use-of-relevant-headers">
        <name>Use of Relevant Headers</name>
        <section anchor="origin-scoped-headers">
          <name>Origin-scoped Headers</name>
          <t>Ordinary HTTP headers apply only to the single resource identified in the request or response.  An origin-scoped HTTP header is a special response header that is intended to change the client's behavior for subsequent requests to any resource on this origin.</t>
          <t>Unlike classic HTTP CONNECT proxies, a templated TCP proxy has an unambiguous origin of its own.  Origin-scoped headers apply to this origin when they are associated with a templated TCP proxy response.  Here are some origin-scoped headers that could potentially be sent by a templated TCP proxy:</t>
          <ul spacing="normal">
            <li>
              <t>"Alt-Svc" <xref target="RFC7838"/></t>
            </li>
            <li>
              <t>"Strict-Transport-Security" <xref target="RFC6797"/></t>
            </li>
            <li>
              <t>"Public-Key-Pins" <xref target="RFC7469"/></t>
            </li>
            <li>
              <t>"Accept-CH" <xref target="RFC8942"/></t>
            </li>
            <li>
              <t>"Set-Cookie" <xref target="RFC6265"/>, which has configurable scope.</t>
            </li>
            <li>
              <t>"Clear-Site-Data" <xref target="CLEAR-SITE-DATA"/></t>
            </li>
          </ul>
        </section>
        <section anchor="authentication-headers">
          <name>Authentication Headers</name>
          <t>Authentication to a templated TCP proxy normally uses ordinary HTTP authentication via the "401 (Unauthorized)" response code, the "WWW-Authenticate" response header field, and the "Authorization" request header field (<xref section="11.6" sectionFormat="comma" target="RFC9110"/>).  A templated TCP proxy does not use the "407 (Proxy Authentication Required)" response code and related header fields (<xref section="11.7" sectionFormat="comma" target="RFC9110"/>) because they do not traverse HTTP gateways (see <xref target="operational-considerations"/>).</t>
          <t>Clients <bcp14>SHOULD</bcp14> assume that all proxy resources generated by a single template share a protection space (i.e., a realm) (<xref section="11.5" sectionFormat="comma" target="RFC9110"/>).  For many authentication schemes, this will allow the client to avoid waiting for a "401 (Unauthorized)" response before each new connection through the proxy.</t>
        </section>
      </section>
      <section anchor="capsule-protocol">
        <name>Use of the Capsule Protocol</name>
        <t>When using the "connect-tcp" Upgrade Token, templated TCP proxies do not use the Capsule Protocol <xref target="RFC9297"/>.  Clients <bcp14>MAY</bcp14> request use of the Capsule Protocol by offering the Upgrade Token "connect-tcp-capsule" instead.  When offering or accepting the "connect-tcp-capsule" Upgrade Token, clients and servers <bcp14>SHOULD</bcp14> including a "Capsule-Protocol: ?1" header to facilitate processing by intermediaries.</t>
        <t>Clients of this specification <bcp14>MAY</bcp14> implement "connect-tcp", "connect-tcp-capsule", or both.  Accordingly, a templated TCP proxy server <bcp14>MUST</bcp14> implement both Upgrade Tokens unless its use is restricted to a subset of compatible clients.</t>
        <t>When using "connect-tcp-capsule", TCP payload data is sent in the payload of a new Capsule Type named DATA (<xref target="data-capsule"/>).  The ordered concatenation of DATA capsule payloads represents the main payload data stream in any protocol where this is well-defined.  Intermediaries <bcp14>MAY</bcp14> split or merge DATA capsules.  Endpoints <bcp14>MAY</bcp14> indicate a TCP connection error by sending an incomplete DATA capsule, as an alternative to using TCP, TLS, or HTTP stream errors.</t>
      </section>
    </section>
    <section anchor="additional-connection-setup-behaviors">
      <name>Additional Connection Setup Behaviors</name>
      <t>This section discusses some behaviors that are permitted or recommended in order to enhance the performance or functionality of connection setup.</t>
      <section anchor="latency-optimizations">
        <name>Latency optimizations</name>
        <t>When using this specification in HTTP/2 or HTTP/3, clients <bcp14>MAY</bcp14> start sending TCP stream content optimistically, subject to flow control limits (<xref section="5.2" sectionFormat="of" target="RFC9113"/> or <xref section="4.1" sectionFormat="of" target="RFC9000"/>).  Proxies <bcp14>MUST</bcp14> buffer this "optimistic" content until the TCP stream becomes writable, and discard it if the TCP connection fails.  (Clients <bcp14>MUST NOT</bcp14> use "optimistic" behavior in HTTP/1.1, as this would interfere with reuse of the connection after an error response such as "401 (Unauthorized)".)</t>
        <t>Servers that host a proxy under this specification <bcp14>MAY</bcp14> offer support for TLS early data in accordance with <xref target="RFC8470"/>.  Clients <bcp14>MAY</bcp14> send "connect-tcp" requests in early data, and <bcp14>MAY</bcp14> include "optimistic" TCP content in early data (in HTTP/2 and HTTP/3).  At the TLS layer, proxies <bcp14>MAY</bcp14> ignore, reject, or accept the <tt>early_data</tt> extension (<xref section="4.2.10" sectionFormat="comma" target="RFC8446"/>).  At the HTTP layer, proxies <bcp14>MAY</bcp14> process the request immediately, return a "425 (Too Early)" response (<xref section="5.2" sectionFormat="comma" target="RFC8470"/>), or delay some or all processing of the request until the handshake completes.  For example, a proxy with limited anti-replay defenses might choose to perform DNS resolution of the <tt>target_host</tt> when a request arrives in early data, but delay the TCP connection until the TLS handshake completes.</t>
      </section>
      <section anchor="conveying-metadata">
        <name>Conveying metadata</name>
        <t>This specification supports the "Expect: 100-continue" request header (<xref section="10.1.1" sectionFormat="comma" target="RFC9110"/>) in any HTTP version.  The "100 (Continue)" status code confirms receipt of a request at the proxy without waiting for the proxy-destination TCP handshake to succeed or fail.  This might be particularly helpful when the destination host is not responding, as TCP handshakes can hang for several minutes before failing.  Clients <bcp14>MAY</bcp14> send "Expect: 100-continue", and proxies <bcp14>MUST</bcp14> respect it by returning "100 (Continue)" if the request is not immediately rejected.</t>
        <t>Proxies implementing this specification <bcp14>SHOULD</bcp14> include a "Proxy-Status" response header <xref target="RFC9209"/> in any success or failure response (i.e., status codes 101, 2XX, 4XX, or 5XX) to support advanced client behaviors and diagnostics.  In HTTP/2 or HTTP/3, proxies <bcp14>MAY</bcp14> additionally send a "Proxy-Status" trailer in the event of an unclean shutdown.</t>
      </section>
    </section>
    <section anchor="applicability">
      <name>Applicability</name>
      <section anchor="servers">
        <name>Servers</name>
        <t>For server operators, template-driven TCP proxies are particularly valuable in situations where virtual-hosting is needed, or where multiple proxies must share an origin.  For example, the proxy might benefit from sharing an HTTP gateway that provides DDoS defense, performs request sanitization, or enforces user authorization.</t>
        <t>The URI template can also be structured to generate high-entropy Capability URLs <xref target="CAPABILITY"/>, so that only authorized users can discover the proxy service.</t>
      </section>
      <section anchor="clients">
        <name>Clients</name>
        <t>Clients that support both classic HTTP CONNECT proxies and template-driven TCP proxies <bcp14>MAY</bcp14> accept both types via a single configuration string.  If the configuration string can be parsed as a URI Template containing the required variables, it is a template-driven TCP proxy.  Otherwise, it is presumed to represent a classic HTTP CONNECT proxy.</t>
        <t>In some cases, it is valuable to allow "connect-tcp" clients to reach "connect-tcp"-only proxies when using a legacy configuration method that cannot convey a URI Template.  To support this arrangement, clients <bcp14>SHOULD</bcp14> treat certain errors during classic HTTP CONNECT as indications that the proxy might only support "connect-tcp":</t>
        <ul spacing="normal">
          <li>
            <t>In HTTP/1.1: the response status code is "426 (Upgrade Required)", with an "Upgrade: connect-tcp" response header.</t>
          </li>
          <li>
            <t>In any HTTP version: the response status code is "501 (Not Implemented)".
            </t>
            <ul spacing="normal">
              <li>
                <t>Requires SETTINGS_ENABLE_CONNECT_PROTOCOL to have been negotiated in HTTP/2 or HTTP/3.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>If the client infers that classic HTTP CONNECT is not supported, it <bcp14>SHOULD</bcp14> retry the request using the registered default template for "connect-tcp":</t>
        <figure>
          <name>Registered default template</name>
          <artwork><![CDATA[
https://$PROXY_HOST:$PROXY_PORT/.well-known/masque
                 /tcp/{target_host}/{target_port}/
]]></artwork>
        </figure>
        <t>If this request succeeds, the client <bcp14>SHOULD</bcp14> record a preference for "connect-tcp" to avoid further retry delays.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Template-driven TCP proxying is largely subject to the same security risks as classic HTTP CONNECT.  For example, any restrictions on authorized use of the proxy (see <xref section="9.3.6" sectionFormat="comma" target="RFC9110"/>) apply equally to both.</t>
      <t>A small additional risk is posed by the use of a URI Template parser on the client side.  The template input string could be crafted to exploit any vulnerabilities in the parser implementation.  Client implementers should apply their usual precautions for code that processes untrusted inputs.</t>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <t>Templated TCP proxies can make use of standard HTTP gateways and path-routing to ease implementation and allow use of shared infrastructure.  However, current gateways might need modifications to support TCP proxy services.  To be compatible, a gateway must:</t>
      <ul spacing="normal">
        <li>
          <t>support Extended CONNECT (if acting as an HTTP/2 or HTTP/3 server).</t>
        </li>
        <li>
          <t>support HTTP/1.1 Upgrade to "connect-tcp" (if acting as an HTTP/1.1 server)
          </t>
          <ul spacing="normal">
            <li>
              <t>only after forwarding the upgrade request to the origin and observing a success response.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>forward the "connect-tcp" protocol to the origin.</t>
        </li>
        <li>
          <t>convert "connect-tcp" requests between all supported HTTP server and client versions.</t>
        </li>
        <li>
          <t>allow any "Proxy-Status" headers to traverse the gateway.</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="new-upgrade-tokens">
        <name>New Upgrade Tokens</name>
        <t>IF APPROVED, IANA is requested to add the following entries to the HTTP Upgrade Token Registry:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">"connect-tcp"</td>
              <td align="left">Proxying of TCP payloads</td>
              <td align="left">(This document)</td>
            </tr>
            <tr>
              <td align="left">"connect-tcp-capsule"</td>
              <td align="left">Proxying of TCP payloads in HTTP Capsules</td>
              <td align="left">(This document)</td>
            </tr>
          </tbody>
        </table>
        <t>For interoperability testing of this draft version, implementations <bcp14>SHALL</bcp14> use the values "connect-tcp-06" and "connect-tcp-capsule-06.</t>
      </section>
      <section anchor="iana-template">
        <name>New MASQUE Default Template</name>
        <t>IF APPROVED, IANA is requested to add the following entry to the "MASQUE URI Suffixes" registry:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Path Segment</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">tcp</td>
              <td align="left">TCP Proxying</td>
              <td align="left">(This document)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="data-capsule">
        <name>New Capsule Type</name>
        <t>IF APPROVED, IANA is requested to add the following entry to the "HTTP Capsule Types" registry:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Capsule Type</th>
              <th align="left">Status</th>
              <th align="left">Reference</th>
              <th align="left">Change Controller</th>
              <th align="left">Contact</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">(TBD)</td>
              <td align="left">DATA</td>
              <td align="left">permanent</td>
              <td align="left">(This document), <xref target="capsule-protocol"/></td>
              <td align="left">IETF</td>
              <td align="left">HTTPBIS</td>
            </tr>
          </tbody>
        </table>
        <t>For this draft version of the protocol, the Capsule Type value <tt>0xb739a6d0</tt> shall be used provisionally for testing, under the name "DATA-05".</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9297">
          <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="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="RFC6570">
          <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="RFC9298">
          <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="RFC8441">
          <front>
            <title>Bootstrapping WebSockets with HTTP/2</title>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="September" year="2018"/>
            <abstract>
              <t>This document defines a mechanism for running the WebSocket Protocol (RFC 6455) over a single stream of an HTTP/2 connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8441"/>
          <seriesInfo name="DOI" value="10.17487/RFC8441"/>
        </reference>
        <reference anchor="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="RFC9113">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="RFC9114">
          <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="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC8470">
          <front>
            <title>Using Early Data in HTTP</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="W. Tarreau" initials="W." surname="Tarreau"/>
            <date month="September" year="2018"/>
            <abstract>
              <t>Using TLS early data creates an exposure to the possibility of a replay attack. This document defines mechanisms that allow clients to communicate with servers about HTTP requests that are sent in early data. Techniques are described that use these mechanisms to mitigate the risk of replay.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8470"/>
          <seriesInfo name="DOI" value="10.17487/RFC8470"/>
        </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="RFC9209">
          <front>
            <title>The Proxy-Status HTTP Response Header Field</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P. Sikora" initials="P." surname="Sikora"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This document defines the Proxy-Status HTTP response field to convey the details of an intermediary's response handling, including generated errors.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9209"/>
          <seriesInfo name="DOI" value="10.17487/RFC9209"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CAPABILITY" target="https://www.w3.org/TR/capability-urls/">
          <front>
            <title>Good Practices for Capability URLs</title>
            <author>
              <organization/>
            </author>
            <date year="2014" month="February"/>
          </front>
        </reference>
        <reference anchor="CLEAR-SITE-DATA" target="https://www.w3.org/TR/clear-site-data/">
          <front>
            <title>Clear Site Data</title>
            <author>
              <organization/>
            </author>
            <date year="2017" month="November"/>
          </front>
        </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="CONNECT-IP">
          <front>
            <title>Proxying IP in HTTP</title>
            <author fullname="T. Pauly" initials="T." role="editor" surname="Pauly"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="A. Chernyakhovsky" initials="A." surname="Chernyakhovsky"/>
            <author fullname="M. Kühlewind" initials="M." surname="Kühlewind"/>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <date month="October" year="2023"/>
            <abstract>
              <t>This document describes how to proxy IP packets in HTTP. This protocol is similar to UDP proxying in HTTP but allows transmitting arbitrary IP packets. More specifically, this document defines a protocol that allows an HTTP client to create an IP tunnel through an HTTP server that acts as an IP proxy. This document updates RFC 9298.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9484"/>
          <seriesInfo name="DOI" value="10.17487/RFC9484"/>
        </reference>
        <reference anchor="RFC7838">
          <front>
            <title>HTTP Alternative Services</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <author fullname="J. Reschke" initials="J." surname="Reschke"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This document specifies "Alternative Services" for HTTP, which allow an origin's resources to be authoritatively available at a separate network location, possibly accessed with a different protocol configuration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7838"/>
          <seriesInfo name="DOI" value="10.17487/RFC7838"/>
        </reference>
        <reference anchor="RFC6797">
          <front>
            <title>HTTP Strict Transport Security (HSTS)</title>
            <author fullname="J. Hodges" initials="J." surname="Hodges"/>
            <author fullname="C. Jackson" initials="C." surname="Jackson"/>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="November" year="2012"/>
            <abstract>
              <t>This specification defines a mechanism enabling web sites to declare themselves accessible only via secure connections and/or for users to be able to direct their user agent(s) to interact with given sites only over secure connections. This overall policy is referred to as HTTP Strict Transport Security (HSTS). The policy is declared by web sites via the Strict-Transport-Security HTTP response header field and/or by other means, such as user agent configuration, for example. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6797"/>
          <seriesInfo name="DOI" value="10.17487/RFC6797"/>
        </reference>
        <reference anchor="RFC7469">
          <front>
            <title>Public Key Pinning Extension for HTTP</title>
            <author fullname="C. Evans" initials="C." surname="Evans"/>
            <author fullname="C. Palmer" initials="C." surname="Palmer"/>
            <author fullname="R. Sleevi" initials="R." surname="Sleevi"/>
            <date month="April" year="2015"/>
            <abstract>
              <t>This document defines a new HTTP header that allows web host operators to instruct user agents to remember ("pin") the hosts' cryptographic identities over a period of time. During that time, user agents (UAs) will require that the host presents a certificate chain including at least one Subject Public Key Info structure whose fingerprint matches one of the pinned fingerprints for that host. By effectively reducing the number of trusted authorities who can authenticate the domain during the lifetime of the pin, pinning may reduce the incidence of man-in-the-middle attacks due to compromised Certification Authorities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7469"/>
          <seriesInfo name="DOI" value="10.17487/RFC7469"/>
        </reference>
        <reference anchor="RFC8942">
          <front>
            <title>HTTP Client Hints</title>
            <author fullname="I. Grigorik" initials="I." surname="Grigorik"/>
            <author fullname="Y. Weiss" initials="Y." surname="Weiss"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>HTTP defines proactive content negotiation to allow servers to select the appropriate response for a given request, based upon the user agent's characteristics, as expressed in request headers. In practice, user agents are often unwilling to send those request headers, because it is not clear whether they will be used, and sending them impacts both performance and privacy.</t>
              <t>This document defines an Accept-CH response header that servers can use to advertise their use of request headers for proactive content negotiation, along with a set of guidelines for the creation of such headers, colloquially known as "Client Hints."</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8942"/>
          <seriesInfo name="DOI" value="10.17487/RFC8942"/>
        </reference>
        <reference anchor="RFC6265">
          <front>
            <title>HTTP State Management Mechanism</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol. Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet. This document obsoletes RFC 2965. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6265"/>
          <seriesInfo name="DOI" value="10.17487/RFC6265"/>
        </reference>
      </references>
    </references>
    <?line 266?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Amos Jeffries, Tommy Pauly, Kyle Nekritz, David Schinazi, and Kazuho Oku for close review and suggested changes.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
