<?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.18 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpbis-connect-tcp-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="Templated CONNECT-TCP">Template-Driven HTTP CONNECT Proxying for TCP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-connect-tcp-05"/>
    <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="August" day="02"/>
    <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 anchor="capsule-protocol">
          <name>Use of the Capsule Protocol</name>
          <t>In this specification, use of the Capsule Protocol <xref target="RFC9297"/> is <bcp14>OPTIONAL</bcp14>.  Clients <bcp14>MAY</bcp14> request use of the Capsule Protocol by including a "Capsule-Protocol: ?1" header field in the request.</t>
          <t>Server support for the Capsule Protocol is also <bcp14>OPTIONAL</bcp14>.  If the request includes "Capsule-Protocol: ?1", and the server does not support the Capsule Protocol, the server <bcp14>MUST</bcp14> respond with a 4xx (Client Error) status and a "Capsule-Protocol: ?0" response header field, and <bcp14>MUST</bcp14> discard any data received on this request stream.  Upon receiving such a response, the client <bcp14>MUST</bcp14> retry the request without the Capsule Protocol and <bcp14>MAY</bcp14> disable use of the Capsule Protocol with this URI Template for the remainder of the session.</t>
          <t>When using the Capsule Protocol, 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 has the same semantics as what would have been sent on the data stream if the Capsule Protocol were not in use.  It is applicable whenever use of the Capsule Protocol is optional.</t>
        </section>
      </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-token">
        <name>New Upgrade Token</name>
        <t>IF APPROVED, IANA is requested to add the following entry to the HTTP Upgrade Token Registry:</t>
        <ul spacing="normal">
          <li>
            <t>Value: "connect-tcp"</t>
          </li>
          <li>
            <t>Description: Proxying of TCP payloads</t>
          </li>
          <li>
            <t>Reference: (This document)</t>
          </li>
        </ul>
        <t>For interoperability testing of this draft version, implementations <bcp14>SHALL</bcp14> use the value "connect-tcp-05".</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="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="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="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 265?>

<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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
GcSCJvrwXVCemayXS1Zb83rkIPg/Zi+GpVxFAAA=

-->

</rfc>
