<?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.4 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpbis-connect-tcp-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.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-02"/>
    <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="2023" month="December" day="07"/>
    <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, 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>
        <t>Classic HTTP CONNECT proxies can be used to reach a target host that is specified as a domain name or an IP address.  However, because only a single target host can be specified, proxy-driven Happy Eyeballs and cross-IP fallback can only be used when the host is a domain name.  For IP-targeted requests to succeed, the client must know which address families are supported by the proxy via some out-of-band mechanism, or open multiple independent CONNECT requests and abandon any that prove unnecessary.</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 "tcp_port".  The client substitutes the destination host and port number into these variables to produce the request URI.</t>
      <t>The "target_host" variable <bcp14>MUST</bcp14> be a domain name, an IP address literal, or a list of IP addresses.  The "tcp_port" variable <bcp14>MUST</bcp14> be a single integer.  If "target_host" is a list (as in <xref section="2.4.2" sectionFormat="of" target="RFC6570"/>), the server <bcp14>SHOULD</bcp14> perform the same connection procedure as if these addresses had been returned in response to A and AAAA queries for a domain name.</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 the TCP connection before returning its response header.  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.</t>
        <figure>
          <name>Templated TCP proxy example in HTTP/1.1</name>
          <artwork><![CDATA[
Client                                                 Proxy

GET /proxy?target_host=192.0.2.1&tcp_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 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>
        <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=192.0.2.1,2001:db8::1&tcp_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>
    <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.  (This "optimistic" behavior is not permitted in HTTP/1.1 because it 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.  Implementation of "100 (Continue)" support is <bcp14>OPTIONAL</bcp14> for clients and <bcp14>REQUIRED</bcp14> for proxies.</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}/{tcp_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 anchor="multi-purpose-proxies">
        <name>Multi-purpose proxies</name>
        <t>The names of the variables in the URI Template uniquely identify the capabilities of the proxy.  Undefined variables are permitted in URI Templates, so a single template can be used for multiple purposes.</t>
        <t>Multipurpose templates can be useful when a single client may benefit from access to multiple complementary services (e.g., TCP and UDP), or when the proxy is used by a variety of clients with different needs.</t>
        <figure>
          <name>Example multipurpose template for a combined TCP, UDP, and IP proxy and DoH server</name>
          <artwork><![CDATA[
https://proxy.example/{?target_host,tcp_port,target_port,
                        target,ipproto,dns}
]]></artwork>
        </figure>
      </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>
      </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>
  </middle>
  <back>
    <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="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 259?>

<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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
XkbpRf8P7/sTMbdAAAA=

-->

</rfc>
