<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.9 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-httpbis-h2-websockets-07" category="std" updates="6455">

  <front>
    <title abbrev="H2 Websockets">Bootstrapping WebSockets with HTTP/2</title>

    <author initials="P." surname="McManus" fullname="Patrick McManus">
      <organization>Mozilla</organization>
      <address>
        <email>mcmanus@ducksong.com</email>
      </address>
    </author>

    <date />

    <area>Applications and Real-Time</area>
    <workgroup>HTTP</workgroup>
    <keyword>Internet-Draft</keyword>

    <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>

  <middle>


<section anchor="introduction" title="Introduction">

<t>The Hypertext Transfer Protocol (HTTP) <xref target="RFC7230"/> provides compatible resource-level semantics
across different versions but it does not offer compatibility at the connection management
level. Other protocols, such as WebSockets, that rely on connection management details of HTTP must
be updated for new versions of HTTP.</t>

<t>The WebSocket Protocol <xref target="RFC6455"/> uses the HTTP/1.1
Upgrade mechanism (Section 6.7 of <xref target="RFC7230"/>) to transition a TCP connection from HTTP into a
WebSocket connection. A different approach must be taken with HTTP/2
<xref target="RFC7540"/>. HTTP/2 does not allow connection-wide header fields and status
codes such as the Upgrade and Connection request header fields or the 101
(Switching Protocols) response code due to its multiplexing nature. These are all required
by the <xref target="RFC6455"/> opening handshake.</t>

<t>Being able to bootstrap WebSockets from HTTP/2 allows one TCP
connection to be shared by both protocols and extends HTTP/2’s
more efficient use of the network to WebSockets.</t>

<t>This document extends the HTTP CONNECT method (as specified for HTTP/2 in Section 8.3 of
<xref target="RFC7540"/>). The extension allows the substitution of a new protocol name to connect to rather than
the external host normally used by CONNECT. The result is a tunnel on a single HTTP/2 stream that
can carry data for WebSockets (or any other protocol). The other streams on the connection may carry
more extended CONNECT tunnels, traditional HTTP/2 data, or a mixture of both.</t>

<t>This tunneled stream will be multiplexed with other regular streams on
the connection and enjoys the normal priority, cancellation, and flow
control features of HTTP/2.</t>

<t>Streams that successfully establish a WebSocket connection using a
tunneled stream and the modifications to the opening handshake defined
in this document then use the traditional WebSocket Protocol, treating
the stream as if were the TCP connection in that specification.</t>

</section>
<section anchor="terminology" title="Terminology">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”,
and “OPTIONAL” in this document are to be interpreted as described in
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
<section anchor="the-settingsenableconnectprotocol-settings-parameter" title="The SETTINGS_ENABLE_CONNECT_PROTOCOL SETTINGS Parameter">

<t>This document adds a new SETTINGS Parameter to those defined by
<xref target="RFC7540"/>, Section 6.5.2.</t>

<t>The new parameter name is SETTINGS_ENABLE_CONNECT_PROTOCOL. The value
of the parameter MUST be 0 or 1.</t>

<t>Upon receipt of SETTINGS_ENABLE_CONNECT_PROTOCOL with a value of 1, a client
MAY use the Extended CONNECT definition of this document when creating new
streams. Receipt of this parameter by a server does not have any
impact.</t>

<t>A sender MUST NOT send a SETTINGS_ENABLE_CONNECT_PROTOCOL parameter with the
value of 0 after previously sending a value of 1.</t>

<t>The use of a SETTINGS Parameter to opt-in to an otherwise incompatible
protocol change is a use of “Extending HTTP/2” defined by Section 5.5
of <xref target="RFC7540"/>. Specifically, the addition a new pseudo-header field “:protocol” and the change in meaning
of the “:authority” pseudo-header field in <xref target="method"/> require opt-in negotiation. If a client were to use the provisions of the extended
CONNECT method defined in this document without first receiving a
SETTINGS_ENABLE_CONNECT_PROTOCOL parameter, a non-supporting peer would
detect a malformed request and generate a stream error (Section
8.1.2.6 of <xref target="RFC7540"/>).</t>

</section>
<section anchor="method" title="The Extended CONNECT Method">

<t>Usage of the CONNECT method in HTTP/2 is defined by Section 8.3 of
<xref target="RFC7540"/>. This extension modifies the method in the following ways:</t>

<t><list style="symbols">
  <t>A new pseudo-header field :protocol MAY be included on request HEADERS indicating the desired protocol
to be spoken on the tunnel created by CONNECT. The pseudo-header field is single valued and contains a
value from the HTTP Upgrade Token Registry located at
https://www.iana.org/assignments/http-upgrade-tokens/http-upgrade-tokens.xhtml</t>
  <t>On requests that contain the :protocol pseudo-header field, the :scheme and
:path pseudo-header fields of the target URI (See <xref target="usingExtended"/>) MUST also be included.</t>
  <t>On requests bearing the :protocol pseudo-header field, the :authority
pseudo-header field is interpreted according to Section 8.1.2.3
of <xref target="RFC7540"/> instead of Section 8.3 of <xref target="RFC7540"/>. In particular, the server
MUST NOT create a tunnel to the host indicated by the :authority as it
would with a CONNECT method request that was not modified by this extension.</t>
</list></t>

<t>Upon receiving a CONNECT request bearing the :protocol pseudo-header field
the server establishes a tunnel to another service of the protocol
type indicated by the pseudo-header field. This service may or may not be
co-located with the server.</t>

</section>
<section anchor="usingExtended" title="Using Extended CONNECT To Bootstrap the WebSocket Protocol">

<t>The :protocol pseudo-header field MUST be included in the CONNECT request
and it MUST have a value of <spanx style="verb">websocket</spanx> to initiate a WebSocket
connection on an HTTP/2 stream. Other HTTP request and response
header fields, such as those for manipulating cookies, may be included in
the HEADERS with the CONNECT method as usual. This request replaces
the GET-based request in <xref target="RFC6455"/> and is used to process the
WebSockets opening handshake.</t>

<t>The scheme of the target URI (Section 5.1 of <xref target="RFC7230"/>) MUST be <spanx style="verb">https</spanx> for <spanx style="verb">wss</spanx> schemed
WebSockets and <spanx style="verb">http</spanx> for <spanx style="verb">ws</spanx> schemed WebSockets. The remainder of the Target URI is the same as
the websocket URI. The websocket URI is still used for proxy autoconfiguration.  The security
requirements for the HTTP/2 connection used by this specification are established by <xref target="RFC7540"/>
for https requests and <xref target="RFC8164"/> for http requests.</t>

<t><xref target="RFC6455"/> requires the use of Connection and Upgrade header fields that
are not part of HTTP/2. They MUST NOT be included in the CONNECT
request defined here.</t>

<t><xref target="RFC6455"/> requires the use of a Host header field which is also not part of
HTTP/2. The Host information is conveyed as part of the :authority
pseudo-header field which is required on every HTTP/2 transaction.</t>

<t>Implementations using this extended CONNECT to bootstrap WebSockets do
not do the processing of the <xref target="RFC6455"/> Sec-WebSocket-Key and
Sec-WebSocket-Accept header fields as that functionality has been superseded
by the :protocol pseudo-header field.</t>

<t>The Origin <xref target="RFC6454"/>, Sec-WebSocket-Version, Sec-WebSocket-Protocol,
and Sec-WebSocket-Extensions header fields are used in the CONNECT request
and response header fields in the same way as defined in <xref target="RFC6455"/>. Note
that HTTP/1 header field names were case-insensitive and HTTP/2 requires
they be encoded as lower case.</t>

<t>After successfully processing the opening handshake, the peers should
proceed with the WebSocket Protocol <xref target="RFC6455"/> using the HTTP/2
stream from the CONNECT transaction as if it were the TCP connection
referred to in <xref target="RFC6455"/>. The state of the WebSocket connection at
this point is OPEN as defined by <xref target="RFC6455"/>, Section 4.1.</t>

<t>The HTTP/2 stream closure is also analogous to the TCP connection closure of
<xref target="RFC6455"/>. Orderly TCP level closures are represented as END_STREAM
(<xref target="RFC7540"/>, Section 6.1) flags and RST exceptions are represented
with the RST_STREAM (<xref target="RFC7540"/>, Section 6.4) frame with the CANCEL
(<xref target="RFC7540"/>, Section 7) error code.</t>

<section anchor="example" title="Example">
<figure><artwork type="example"><![CDATA[
[[ From Client ]]                       [[ From Server ]]

                                        SETTINGS
                                        SETTINGS_ENABLE_CONNECT_[..] = 1

HEADERS + END_HEADERS
:method = CONNECT
:protocol = websocket
:scheme = https
:path = /chat
:authority = server.example.com
sec-websocket-protocol = chat, superchat
sec-websocket-extensions = permessage-deflate
sec-websocket-version = 13
origin = http://www.example.com

                                        HEADERS + END_HEADERS
                                        :status = 200
                                        sec-websocket-protocol = chat

DATA
WebSocket Data

                                        DATA + END_STREAM
                                        WebSocket Data

DATA + END_STREAM
WebSocket Data
]]></artwork></figure>

</section>
</section>
<section anchor="design-considerations" title="Design Considerations">

<t>A more native integration with HTTP/2 is certainly possible with
larger additions to HTTP/2. This design was selected to minimize the
solution complexity while still addressing the primary concern of running
HTTP/2 and WebSockets concurrently.</t>

</section>
<section anchor="about-intermediaries" title="About Intermediaries">

<t>This document does not change how WebSockets interacts with HTTP forward
proxies. If a client wishing to speak WebSockets connects via HTTP/2
to an HTTP proxy it should continue to use a traditional (i.e. not with
a :protocol pseudo-header field) CONNECT to tunnel through that proxy to the
WebSocket server via HTTP.</t>

<t>The resulting version of HTTP on that tunnel determines whether
WebSockets is initiated directly or via a modified CONNECT request
described in this document.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t><xref target="RFC6455"/> ensures that non-WebSockets clients, especially
XMLHttpRequest based clients, cannot make a WebSocket connection. Its
primary mechanism for doing that is the use of Sec- prefixed request
header fields that cannot be created by XMLHttpRequest-based clients. This
specification addresses that concern in two ways:</t>

<t><list style="symbols">
  <t>XMLHttpRequest also prohibits use of the CONNECT method in addition to Sec- prefixed request
header fields.</t>
  <t>The use of a pseudo-header field is something that is connection specific
and HTTP/2 does not ever allow to be created outside of the protocol stack.</t>
</list></t>

<t>The security considerations of <xref target="RFC6455"/> section 10 continue to apply to the use of the WebSocket
Protocol when using this specification with the exception of 10.8. That section is not relevant
because it is specific to the boostrapping handshake that is changed in this document.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document establishes an entry for the HTTP/2 Settings Registry
that was established by Section 11.3 of <xref target="RFC7540"/>.</t>

<t>Name: SETTINGS_ENABLE_CONNECT_PROTOCOL</t>

<t>Code: 0x8</t>

<t>Initial Value: 0</t>

<t>Specification: This document</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC7230" target='https://www.rfc-editor.org/info/rfc7230'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the &quot;http&quot; and &quot;https&quot; Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='7230'/>
<seriesInfo name='DOI' value='10.17487/RFC7230'/>
</reference>



<reference  anchor="RFC6455" target='https://www.rfc-editor.org/info/rfc6455'>
<front>
<title>The WebSocket Protocol</title>
<author initials='I.' surname='Fette' fullname='I. Fette'><organization /></author>
<author initials='A.' surname='Melnikov' fullname='A. Melnikov'><organization /></author>
<date year='2011' month='December' />
<abstract><t>The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code.  The security model used for this is the origin-based security model commonly used by web browsers.  The protocol consists of an opening handshake followed by basic message framing, layered over TCP.  The goal of this technology is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or &lt;iframe&gt;s and long polling).  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6455'/>
<seriesInfo name='DOI' value='10.17487/RFC6455'/>
</reference>



<reference  anchor="RFC7540" target='https://www.rfc-editor.org/info/rfc7540'>
<front>
<title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
<author initials='M.' surname='Belshe' fullname='M. Belshe'><organization /></author>
<author initials='R.' surname='Peon' fullname='R. Peon'><organization /></author>
<author initials='M.' surname='Thomson' fullname='M. Thomson' role='editor'><organization /></author>
<date year='2015' month='May' />
<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 perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t><t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t></abstract>
</front>
<seriesInfo name='RFC' value='7540'/>
<seriesInfo name='DOI' value='10.17487/RFC7540'/>
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<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="RFC8164" target='https://www.rfc-editor.org/info/rfc8164'>
<front>
<title>Opportunistic Security for HTTP/2</title>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<author initials='M.' surname='Thomson' fullname='M. Thomson'><organization /></author>
<date year='2017' month='May' />
<abstract><t>This document describes how &quot;http&quot; URIs can be accessed using Transport Layer Security (TLS) and HTTP/2 to mitigate pervasive monitoring attacks.  This mechanism not a replacement for &quot;https&quot; URIs; it is vulnerable to active attacks.</t></abstract>
</front>
<seriesInfo name='RFC' value='8164'/>
<seriesInfo name='DOI' value='10.17487/RFC8164'/>
</reference>



<reference  anchor="RFC6454" target='https://www.rfc-editor.org/info/rfc6454'>
<front>
<title>The Web Origin Concept</title>
<author initials='A.' surname='Barth' fullname='A. Barth'><organization /></author>
<date year='2011' month='December' />
<abstract><t>This document defines the concept of an &quot;origin&quot;, which is often used as the scope of authority or privilege by user agents.  Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites.  In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string.  It also defines an HTTP header field, named &quot;Origin&quot;, that indicates which origins are associated with an HTTP request.   [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6454'/>
<seriesInfo name='DOI' value='10.17487/RFC6454'/>
</reference>




    </references>



<section numbered="false" anchor="acknowledgments" title="Acknowledgments">
<t>The 2017 HTTP Workshop had a very productive discussion that helped
determine the key problem and acceptable level of solution complexity.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIANXbJ1sAA5VaW3PbOJZ+x6/Auh82nrUUy510MqpK1bptzcQ1sZ21le7d
6kolEAlJGFMEhyAtq1Pdv32+cwDwZjnJ5iGWKODgXL9zAUejkahMlemp/Nna
ylWlKgqTr+SvenFrkztdObk11Vq+nc/fPz8RarEo9f1Uvj2hFc6vEKlNcrUB
jbRUy2pkdLUcrauqWBg3Wp+Mts3KUaYq7SqR4s9Ufjk/nc/+EAm+rGy5m0pX
paIu6Ec3lT+9ePlSqFKrqTwtisxgmbG5kypP5Y1W2WhuNlpsbXm3Km1dTJlF
cad3eJRO5UVe6TLX1eiceBLCFOVUVmXtqpPj478enwhXgdInldkcrOy0E4WZ
yt8qmxxJ/GfyVOfVkXS2rEq9dPi024QPVWkS/JTYTaHChw0W4yeTZybXH4VQ
dbW25VTIkZB4CnHej+Vlcqny2uGJ19Z7RZTuOs9tuVK5+Z0lncpL+7vJMoXn
eqNMNpWbZEML/zutkztn89UYJwuR23KDHfd6KsRoNJJqQWZMIPN8bZyEcWpi
T6Z6CeagQLnRyRrnuI1c2lKWdZ6Tyau1bs0u35cWarCZfHbztzM2xqGw97rE
dofVmSY9aLWRdgmTBP+AKvJcJ8T+2DOzMWmaaSF+IIOUFpzTj8Salm93hS4r
/VDJealytwTx9lQieCi/fPkPHP/q5MfjP/6QRWnvTQoJWPOVWYCJUjtbl4ke
ZfpeZ9JBU3llEidUUloH6c0SdEl88O7YgRZ1JQ3UYUEptxUEoJMjTZOZaidV
xepoxZGgq1aaFCn4qLG8xoqSmGKOyTHqZC2V68QOXGkNUqXOdhI09pKDXSpY
15EiSWi5gY+KhZY+ElK2Ua63rQBh4dhrcY/JvNbIZtBa7SAnCcMmmown4kOx
KlWqO27w7Daw9dP4FZHvqv0Q4YDAgYEML1Fyfva+K8qytBvPucmxVImWo447
yNOOLQAypVXQFskqIWul7nTeQ5rAwssXYGEc3auxmcoyu+2QH23hGHKtIVYp
l0ZnqQcKBHmFyEosuU20Dykj6oAWnbWylPpfNQBqQAkGoD2T44l4dgsmkzXF
S1S3OyQvLGAZchjQTGtNOjPAzk2dVabI9ANtyMFLqccSVsNSQBuJwUeaUqdi
seNTesazhebYhJ1St4aSYPSfNT1R5P04ZRFhuwvZjUmgM1YVZMg1GU50DEe7
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

-->

</rfc>
