<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="lib/rfc2629.xslt"?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes"?>
<?rfc subcompact="no" ?>
<?rfc linkmailto="no" ?>
<?rfc editing="no" ?>
<?rfc comments="yes" ?>
<?rfc inline="yes"?>
<?rfc rfcedstyle="yes"?>
<?rfc-ext allow-markup-in-artwork="yes" ?>
<?rfc-ext include-index="no" ?>

<rfc ipr="trust200902"
     category="std"
     docName="draft-ietf-httpbis-http2-latest"
     x:maturity-level="proposed"
     xmlns:x="http://purl.org/net/xml2rfc/ext">
  <x:feedback template="mailto:ietf-http-wg@w3.org?subject={docname},%20%22{section}%22&amp;body=&lt;{ref}&gt;:"/>
  <front>
    <title abbrev="HTTP/2">Hypertext Transfer Protocol version 2</title>

    <author initials="M." surname="Belshe" fullname="Mike Belshe">
      <organization>Twist</organization>
      <address>
        <email>mbelshe@chromium.org</email>
      </address>
    </author>

    <author initials="R." surname="Peon" fullname="Roberto Peon">
      <organization>Google, Inc</organization>
      <address>
        <email>fenix@google.com</email>
      </address>
    </author>

    <author initials="M." surname="Thomson" fullname="Martin Thomson" role="editor">
      <organization>Mozilla</organization>
      <address>
        <postal>
          <street>331 E Evelyn Street</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94041</code>
          <country>US</country>
        </postal>
        <email>martin.thomson@gmail.com</email>
      </address>
    </author>

    <date year="2014" />
    <area>Applications</area>
    <workgroup>HTTPbis</workgroup>
    <keyword>HTTP</keyword>
    <keyword>SPDY</keyword>
    <keyword>Web</keyword>

    <abstract>
      <t>
        This specification describes an optimized expression of the semantics of the Hypertext
        Transfer Protocol (HTTP). 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 messages 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>

    <note title="Editorial Note (To be removed by RFC Editor)">
      <t>
        Discussion of this draft takes place on the HTTPBIS working group mailing list
        (ietf-http-wg@w3.org), which is archived at <eref
        target="https://lists.w3.org/Archives/Public/ietf-http-wg/"/>.
      </t>
      <t>
        Working Group information can be found at <eref
        target="https://tools.ietf.org/wg/httpbis/"/>; that specific to HTTP/2 are at <eref
        target="https://http2.github.io/"/>.
      </t>
      <t>
        The changes in this draft are summarized in <xref
        target="change.log"/>.
      </t>
    </note>

  </front>

  <middle>
    <section anchor="intro" title="Introduction">

      <t>
        The Hypertext Transfer Protocol (HTTP) is a wildly successful protocol. However, the
        HTTP/1.1 message format (<xref target="RFC7230" x:fmt="," x:rel="#http.message"/>) has
        several characteristics that have a negative overall effect on application performance
        today.
      </t>
      <t>
        In particular, HTTP/1.0 allowed only one request to be outstanding at a time on a given
        TCP connection. HTTP/1.1 added request pipelining, but this only partially addressed
        request concurrency and still suffers from head-of-line blocking. Therefore, HTTP/1.1
        clients that need to make many requests typically use multiple connections to a server in
        order to achieve concurrency and thereby reduce latency.
      </t>
      <t>
        Furthermore, HTTP header fields are often repetitive and verbose, causing unnecessary
        network traffic, as well as causing the initial <xref target="TCP">TCP</xref> congestion
        window to quickly fill. This can result in excessive latency when multiple requests are
        made on a new TCP connection.
      </t>
      <t>
        HTTP/2 addresses these issues by defining an optimized mapping of HTTP's semantics to an
        underlying connection. Specifically, it allows interleaving of request and response
        messages on the same connection and uses an efficient coding for HTTP header fields. It
        also allows prioritization of requests, letting more important requests complete more
        quickly, further improving performance.
      </t>
      <t>
        The resulting protocol is more friendly to the network, because fewer TCP connections can
        be used in comparison to HTTP/1.x. This means less competition with other flows, and
        longer-lived connections, which in turn leads to better utilization of available network
        capacity.
      </t>
      <t>
        Finally, HTTP/2 also enables more efficient processing of messages through use of binary
        message framing.
      </t>
    </section>

    <section anchor="Overview" title="HTTP/2 Protocol Overview">
      <t>
        HTTP/2 provides an optimized transport for HTTP semantics.  HTTP/2 supports all of the core
        features of HTTP/1.1, but aims to be more efficient in several ways.
      </t>
      <t>
        The basic protocol unit in HTTP/2 is a <xref target="FrameHeader">frame</xref>.  Each frame
        type serves a different purpose.  For example, <x:ref>HEADERS</x:ref> and
        <x:ref>DATA</x:ref> frames form the basis of <xref target="HttpSequence">HTTP requests and
        responses</xref>; other frame types like <x:ref>SETTINGS</x:ref>,
        <x:ref>WINDOW_UPDATE</x:ref>, and <x:ref>PUSH_PROMISE</x:ref> are used in support of other
        HTTP/2 features.
      </t>
      <t>
        Multiplexing of requests is achieved by having each HTTP request-response exchange
        associated with its own <xref target="StreamsLayer">stream</xref>. Streams are largely
        independent of each other, so a blocked or stalled request or response does not prevent
        progress on other streams.
      </t>
      <t>
        Flow control and prioritization ensure that it is possible to efficiently use multiplexed
        streams.  <xref target="FlowControl">Flow control</xref> helps to ensure that only data that
        can be used by a receiver is transmitted.  <xref
        target="StreamPriority">Prioritization</xref> ensures that limited resources can be directed
        to the most important streams first.
      </t>
      <t>
        HTTP/2 adds a new interaction mode, whereby a server can <xref target="PushResources">push
        responses to a client</xref>.  Server push allows a server to speculatively send a client
        data that the server anticipates the client will need, trading off some network usage
        against a potential latency gain.  The server does this by synthesizing a request, which it
        sends as a <x:ref>PUSH_PROMISE</x:ref> frame.  The server is then able to send a response to
        the synthetic request on a separate stream.
      </t>
      <t>
        Frames that contain HTTP header fields are <xref target="HeaderBlock">compressed</xref>.
        HTTP requests can be highly redundant, so compression can reduce the size of requests and
        responses significantly.
      </t>

      <section title="Document Organization">
        <t>
          The HTTP/2 specification is split into four parts:
          <list style="symbols">
            <t>
              <xref target="starting">Starting HTTP/2</xref> covers how an HTTP/2 connection is
              initiated.
            </t>
            <t>
              The <xref target="FramingLayer">framing</xref> and <xref
              target="StreamsLayer">streams</xref> layers describe the way HTTP/2 frames are
              structured and formed into multiplexed streams.
            </t>
            <t>
              <xref target="FrameTypes">Frame</xref> and <xref target="ErrorCodes">error</xref>
              definitions include details of the frame and error types used in HTTP/2.
            </t>
            <t>
              <xref target="HTTPLayer">HTTP mappings</xref> and <xref target="HttpExtra">additional
              requirements</xref> describe how HTTP semantics are expressed using frames and
              streams.
          </t>
          </list>
        </t>
        <t>
          While some of the frame and stream layer concepts are isolated from HTTP, this
          specification does not define a completely generic framing layer. The framing and streams
          layers are tailored to the needs of the HTTP protocol and server push.
        </t>
      </section>

      <section title="Conventions and Terminology">
        <t>
          The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD
          NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as
          described in <xref target="RFC2119">RFC 2119</xref>.
        </t>
        <t>
          All numeric values are in network byte order.  Values are unsigned unless otherwise
          indicated.  Literal values are provided in decimal or hexadecimal as appropriate.
          Hexadecimal literals are prefixed with <spanx style="verb">0x</spanx> to distinguish them
          from decimal literals.
        </t>
        <t>
          The following terms are used:
          <list style="hanging">
            <t hangText="client:">
              The endpoint initiating the HTTP/2 connection.
            </t>
            <t hangText="connection:">
              A transport-layer connection between two endpoints.
            </t>
            <t hangText="connection error:">
              An error that affects the entire HTTP/2 connection.
            </t>
            <t hangText="endpoint:">
              Either the client or server of the connection.
            </t>
            <t hangText="frame:">
              The smallest unit of communication within an HTTP/2 connection, consisting of a header
              and a variable-length sequence of octets structured according to the frame type.
            </t>
            <t hangText="peer:">
              An endpoint.  When discussing a particular endpoint, "peer" refers to the endpoint
              that is remote to the primary subject of discussion.
            </t>
            <t hangText="receiver:">
              An endpoint that is receiving frames.
            </t>
            <t hangText="sender:">
              An endpoint that is transmitting frames.
            </t>
            <t hangText="server:">
              The endpoint which did not initiate the HTTP/2 connection.
            </t>
            <t hangText="stream:">
              A bi-directional flow of frames across a virtual channel within the HTTP/2 connection.
            </t>
            <t hangText="stream error:">
              An error on the individual HTTP/2 stream.
            </t>
          </list>
        </t>
        <t>
          Finally, the terms "gateway", "intermediary", "proxy", and "tunnel" are defined
          in <xref target="RFC7230" x:fmt="of" x:rel="#intermediaries"/>.
        </t>
      </section>
    </section>

    <section anchor="starting" title="Starting HTTP/2">
      <t>
        An HTTP/2 connection is an application layer protocol running on top of a TCP connection
        (<xref target="TCP"/>). The client is the TCP connection initiator.
      </t>
      <t>
        HTTP/2 uses the same "http" and "https" URI schemes used by HTTP/1.1. HTTP/2 shares the same
        default port numbers: 80 for "http" URIs and 443 for "https" URIs.  As a result,
        implementations processing requests for target resource URIs like <spanx
        style="verb">http://example.org/foo</spanx> or <spanx
        style="verb">https://example.com/bar</spanx> are required to first discover whether the
        upstream server (the immediate peer to which the client wishes to establish a connection)
        supports HTTP/2.
      </t>

      <t>
        The means by which support for HTTP/2 is determined is different for "http" and "https"
        URIs. Discovery for "http" URIs is described in <xref target="discover-http"/>.  Discovery
        for "https" URIs is described in <xref target="discover-https"/>.
      </t>

      <section anchor="versioning" title="HTTP/2 Version Identification">
        <t>
          The protocol defined in this document has two identifiers.
          <list style="symbols">
            <x:lt>
              <t>
                The string "h2" identifies the protocol where HTTP/2 uses <xref
                target="TLS12">TLS</xref>.  This identifier is used in the <xref
                target="TLS-ALPN">TLS application layer protocol negotiation extension (ALPN)</xref>
                field and any place that HTTP/2 over TLS is identified.
              </t>
              <t>
                The "h2" string is serialized into an ALPN protocol identifier as the two octet
                sequence: 0x68, 0x32.
              </t>
            </x:lt>
            <x:lt>
              <t>
                The string "h2c" identifies the protocol where HTTP/2 is run over cleartext TCP.
                This identifier is used in the HTTP/1.1 Upgrade header field and any place that
                HTTP/2 over TCP is identified.
              </t>
            </x:lt>
          </list>
        </t>
        <t>
          Negotiating "h2" or "h2c" implies the use of the transport, security, framing and message
          semantics described in this document.
        </t>
        <t>
          <cref>RFC Editor's Note: please remove the remainder of this section prior to the
          publication of a final version of this document.</cref>
        </t>
        <t>
          Only implementations of the final, published RFC can identify themselves as "h2" or "h2c".
          Until such an RFC exists, implementations MUST NOT identify themselves using these
          strings.
        </t>
        <t>
          Examples and text throughout the rest of this document use "h2" as a matter of
          editorial convenience only.  Implementations of draft versions MUST NOT identify using
          this string.
        </t>
        <t>
          Implementations of draft versions of the protocol MUST add the string "-" and the
          corresponding draft number to the identifier. For example, draft-ietf-httpbis-http2-11
          over TLS is identified using the string "h2-11".
        </t>
        <t>
          Non-compatible experiments that are based on these draft versions MUST append the string
          "-" and an experiment name to the identifier.  For example, an experimental implementation
          of packet mood-based encoding based on draft-ietf-httpbis-http2-09 might identify itself
          as "h2-09-emo".  Note that any label MUST conform to the "token" syntax defined in
          <xref target="RFC7230" x:fmt="of" x:rel="#field.components"/>.  Experimenters are
          encouraged to coordinate their experiments on the ietf-http-wg@w3.org mailing list.
        </t>
      </section>

      <section anchor="discover-http" title="Starting HTTP/2 for &quot;http&quot; URIs">
        <t>
          A client that makes a request for an "http" URI without prior knowledge about support for
          HTTP/2 uses the HTTP Upgrade mechanism (<xref target="RFC7230" x:fmt="of"
          x:rel="#header.upgrade"/>).  The client makes an HTTP/1.1 request that includes an Upgrade
          header field identifying HTTP/2 with the "h2c" token.  The HTTP/1.1 request MUST include
          exactly one <xref target="Http2SettingsHeader">HTTP2-Settings</xref> header field.
        </t>
        <figure>
          <preamble>For example:</preamble>
          <artwork type="message/http; msgtype=&#34;request&#34;" x:indent-with="  "><![CDATA[
GET / HTTP/1.1
Host: server.example.com
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
HTTP2-Settings: <base64url encoding of HTTP/2 SETTINGS payload>

]]></artwork>
        </figure>
        <t>
          Requests that contain an entity body MUST be sent in their entirety before the client can
          send HTTP/2 frames.  This means that a large request entity can block the use of the
          connection until it is completely sent.
        </t>
        <t>
          If concurrency of an initial request with subsequent requests is important, an OPTIONS
          request can be used to perform the upgrade to HTTP/2, at the cost of an additional
          round-trip.
        </t>
        <t>
          A server that does not support HTTP/2 can respond to the request as though the Upgrade
          header field were absent:
        </t>
        <figure>
          <artwork type="message/http; msgtype=&#34;response&#34;" x:indent-with="  ">
HTTP/1.1 200 OK
Content-Length: 243
Content-Type: text/html

...
</artwork>
        </figure>
        <t>
          A server MUST ignore a "h2" token in an Upgrade header field.  Presence of a token with
          "h2" implies HTTP/2 over TLS, which is instead negotiated as described in <xref
          target="discover-https"/>.
        </t>
        <t>
          A server that supports HTTP/2 can accept the upgrade with a 101 (Switching Protocols)
          response.  After the empty line that terminates the 101 response, the server can begin
          sending HTTP/2 frames.  These frames MUST include a response to the request that initiated
          the Upgrade.
        </t>

        <figure>
          <preamble>
            For example:
          </preamble>
          <artwork type="message/http; msgtype=&#34;response&#34;" x:indent-with="  ">
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

[ HTTP/2 connection ...
</artwork>
        </figure>
        <t>
          The first HTTP/2 frame sent by the server is a <x:ref>SETTINGS</x:ref> frame (<xref
          target="SETTINGS"/>) as the server connection preface (<xref
          target="ConnectionHeader"/>). Upon receiving the 101 response, the client sends a <xref
          target="ConnectionHeader">connection preface</xref>, which includes a
          <x:ref>SETTINGS</x:ref> frame.
        </t>
        <t>
          The HTTP/1.1 request that is sent prior to upgrade is assigned stream identifier 1 and is
          assigned <xref target="pri-default">default priority values</xref>.  Stream 1 is
          implicitly half closed from the client toward the server, since the request is completed
          as an HTTP/1.1 request.  After commencing the HTTP/2 connection, stream 1 is used for the
          response.
        </t>

        <section anchor="Http2SettingsHeader" title="HTTP2-Settings Header Field">
          <t>
            A request that upgrades from HTTP/1.1 to HTTP/2 MUST include exactly one <spanx
            style="verb">HTTP2-Settings</spanx> header field.  The <spanx
            style="verb">HTTP2-Settings</spanx> header field is a connection-specific header field
            that includes parameters that govern the HTTP/2 connection, provided in anticipation of
            the server accepting the request to upgrade.
          </t>
          <figure>
            <artwork type="abnf" x:indent-with="  "><![CDATA[
HTTP2-Settings    = token68
]]></artwork>
          </figure>
          <t>
            A server MUST NOT upgrade the connection to HTTP/2 if this header field is not present,
            or if more than one is present. A server MUST NOT send this header field.
          </t>

          <t>
            The content of the <spanx style="verb">HTTP2-Settings</spanx> header field is the
            payload of a <x:ref>SETTINGS</x:ref> frame (<xref target="SETTINGS"/>), encoded as a
            base64url string (that is, the URL- and filename-safe Base64 encoding described in <xref
            target="RFC4648" x:fmt="of" x:sec="5"/>, with any trailing '=' characters omitted).  The
            <xref target="RFC5234">ABNF</xref> production for <spanx style="verb">token68</spanx> is
            defined in <xref target="RFC7235" x:fmt="of" x:rel="#challenge.and.response"/>.
          </t>
          <t>
            Since the upgrade is only intended to apply to the immediate connection, a client
            sending <spanx style="verb">HTTP2-Settings</spanx> MUST also send <spanx
            style="verb">HTTP2-Settings</spanx> as a connection option in the <spanx
            style="verb">Connection</spanx> header field to prevent it from being forwarded
            downstream.
          </t>
          <t>
            A server decodes and interprets these values as it would any other
            <x:ref>SETTINGS</x:ref> frame.  <xref target="SettingsSync">Acknowledgement of the
            SETTINGS parameters</xref> is not necessary, since a 101 response serves as implicit
            acknowledgment.  Providing these values in the Upgrade request gives a client an
            opportunity to provide parameters prior to receiving any frames from the server.
          </t>
        </section>
      </section>

      <section anchor="discover-https" title="Starting HTTP/2 for &quot;https&quot; URIs">
        <t>
          A client that makes a request to an "https" URI uses <xref target="TLS12">TLS</xref>
          with the <xref target="TLS-ALPN">application layer protocol negotiation extension</xref>.
        </t>
        <t>
          HTTP/2 over TLS uses the "h2" application token.  The "h2c" token MUST NOT be sent by a
          client or selected by a server.
        </t>
        <t>
          Once TLS negotiation is complete, both the client and the server send a <xref
          target="ConnectionHeader">connection preface</xref>.
        </t>
      </section>

      <section anchor="known-http" title="Starting HTTP/2 with Prior Knowledge">
        <t>
          A client can learn that a particular server supports HTTP/2 by other means.  For example,
          <xref target="ALT-SVC"/> describes a mechanism for advertising this capability.
        </t>
        <t>
          A client MAY immediately send HTTP/2 frames to a server that is known to support HTTP/2,
          after the <xref target="ConnectionHeader">connection preface</xref>; a server can
          identify such a connection by the presence of the connection preface. This only affects
          the establishment of HTTP/2 connections over cleartext TCP; implementations that support
          HTTP/2 over TLS MUST use <xref target="TLS-ALPN">protocol negotiation in TLS</xref>.
        </t>
        <t>
          Without additional information, prior support for HTTP/2 is not a strong signal that a
          given server will support HTTP/2 for future connections. For example, it is possible for
          server configurations to change, for configurations to differ between instances in
          clustered servers, or for network conditions to change.
        </t>
      </section>

      <section anchor="ConnectionHeader" title="HTTP/2 Connection Preface">
        <t>
          Upon establishment of a TCP connection and determination that HTTP/2 will be used by both
          peers, each endpoint MUST send a connection preface as a final confirmation and to
          establish the initial SETTINGS parameters for the HTTP/2 connection.  The client and
          server each send a different connection preface.
        </t>
        <t>
          The client connection preface starts with a sequence of 24 octets, which in hex notation
          are:
        </t>
        <figure>
          <artwork type="inline" x:indent-with="  "><![CDATA[
0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a
]]></artwork>
        </figure>
        <t>
          (the string <spanx style="verb">PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n</spanx>).  This sequence
          is followed by a <x:ref>SETTINGS</x:ref> frame (<xref target="SETTINGS"/>).  The
          <x:ref>SETTINGS</x:ref> frame MAY be empty.  The client sends the client connection
          preface immediately upon receipt of a 101 Switching Protocols response (indicating a
          successful upgrade), or as the first application data octets of a TLS connection. If
          starting an HTTP/2 connection with prior knowledge of server support for the protocol, the
          client connection preface is sent upon connection establishment.
        </t>
        <t>
          <list>
            <t>
              The client connection preface is selected so that a large proportion of HTTP/1.1 or
              HTTP/1.0 servers and intermediaries do not attempt to process further frames.  Note
              that this does not address the concerns raised in <xref target="TALKING"/>.
            </t>
          </list>
        </t>
        <t>
          The server connection preface consists of a potentially empty <x:ref>SETTINGS</x:ref>
          frame (<xref target="SETTINGS"/>) that MUST be the first frame the server sends in the
          HTTP/2 connection.
        </t>
        <t>
          The <x:ref>SETTINGS</x:ref> frames received from a peer as part of the connection preface
          MUST be acknowledged (see <xref target="SettingsSync"/>) after sending the connection
          preface.
        </t>
        <t>
          To avoid unnecessary latency, clients are permitted to send additional frames to the
          server immediately after sending the client connection preface, without waiting to receive
          the server connection preface.  It is important to note, however, that the server
          connection preface <x:ref>SETTINGS</x:ref> frame might include parameters that necessarily
          alter how a client is expected to communicate with the server. Upon receiving the
          <x:ref>SETTINGS</x:ref> frame, the client is expected to honor any parameters established.
          In some configurations, it is possible for the server to transmit <x:ref>SETTINGS</x:ref>
          before the client sends additional frames, providing an opportunity to avoid this issue.
        </t>
        <t>
          Clients and servers MUST treat an invalid connection preface as a <xref
          target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.  A <x:ref>GOAWAY</x:ref> frame (<xref target="GOAWAY"/>)
          MAY be omitted in this case, since an invalid preface indicates that the peer is not using
          HTTP/2.
        </t>
      </section>
    </section>

    <section anchor="FramingLayer" title="HTTP Frames">
      <t>
        Once the HTTP/2 connection is established, endpoints can begin exchanging frames.
      </t>

      <section anchor="FrameHeader" title="Frame Format">
        <t>
          All frames begin with a fixed 9-octet header followed by a variable-length payload.
        </t>
        <figure title="Frame Layout">
          <artwork type="inline"><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                 Length (24)                   |
 +---------------+---------------+---------------+
 |   Type (8)    |   Flags (8)   |
 +-+-+-----------+---------------+-------------------------------+
 |R|                 Stream Identifier (31)                      |
 +=+=============================================================+
 |                   Frame Payload (0...)                      ...
 +---------------------------------------------------------------+
]]></artwork>
        </figure>
        <t>
          The fields of the frame header are defined as:
          <list style="hanging">
            <x:lt hangText="Length:">
              <t>
                The length of the frame payload expressed as an unsigned 24-bit integer.  Values
                greater than 2<x:sup>14</x:sup> (16,384) MUST NOT be sent unless the receiver has
                set a larger value for <x:ref>SETTINGS_MAX_FRAME_SIZE</x:ref>.
              </t>
              <t>
                The 9 octets of the frame header are not included in this value.
              </t>
            </x:lt>
            <x:lt hangText="Type:">
              <t>
                The 8-bit type of the frame.  The frame type determines the format and semantics of
                the frame.  Implementations MUST ignore and discard any frame that has a type that
                is unknown.
              </t>
            </x:lt>
            <x:lt hangText="Flags:">
              <t>
                An 8-bit field reserved for frame-type specific boolean flags.
              </t>
              <t>
                Flags are assigned semantics specific to the indicated frame type.  Flags that have
                no defined semantics for a particular frame type MUST be ignored, and MUST be left
                unset (0) when sending.
              </t>
            </x:lt>
            <x:lt hangText="R:">
              <t>
                A reserved 1-bit field.  The semantics of this bit are undefined and the bit MUST
                remain unset (0) when sending and MUST be ignored when receiving.
              </t>
            </x:lt>
            <x:lt hangText="Stream Identifier:">
              <t>
                A 31-bit stream identifier (see <xref target="StreamIdentifiers"/>).  The value 0 is
                reserved for frames that are associated with the connection as a whole as opposed to
                an individual stream.
              </t>
            </x:lt>
          </list>
        </t>
        <t>
          The structure and content of the frame payload is dependent entirely on the frame type.
        </t>
      </section>

      <section anchor="FrameSize" title="Frame Size">
        <t>
          The size of a frame payload is limited by the maximum size that a receiver advertises in
          the <x:ref>SETTINGS_MAX_FRAME_SIZE</x:ref> setting.  This setting can have any value
          between 2<x:sup>14</x:sup> (16,384) and 2<x:sup>24</x:sup>-1 (16,777,215) octets,
          inclusive.
        </t>
        <t>
          All implementations MUST be capable of receiving and minimally processing frames up to
          2<x:sup>14</x:sup> octets in length, plus the 9 octet <xref target="FrameHeader">frame
          header</xref>.  The size of the frame header is not included when describing frame sizes.
          <list style="hanging">
            <t hangText="Note:">
              Certain frame types, such as <xref target="PING">PING</xref>, impose additional limits
              on the amount of payload data allowed.
            </t>
          </list>
        </t>
        <t>
          If a frame size exceeds any defined limit, or is too small to contain mandatory frame
          data, the endpoint MUST send a <x:ref>FRAME_SIZE_ERROR</x:ref> error. A frame size error
          in a frame that could alter the state of the entire connection MUST be treated as a <xref
          target="ConnectionErrorHandler">connection error</xref>; this includes any frame carrying
          a <xref target="HeaderBlock">header block</xref> (that is, <x:ref>HEADERS</x:ref>,
          <x:ref>PUSH_PROMISE</x:ref>, and <x:ref>CONTINUATION</x:ref>), <x:ref>SETTINGS</x:ref>,
          and any <x:ref>WINDOW_UPDATE</x:ref> frame with a stream identifier of 0.
        </t>
        <t>
          Endpoints are not obligated to use all available space in a frame. Responsiveness can be
          improved by using frames that are smaller than the permitted maximum size. Sending large
          frames can result in delays in sending time-sensitive frames (such
          <x:ref>RST_STREAM</x:ref>, <x:ref>WINDOW_UPDATE</x:ref>, or <x:ref>PRIORITY</x:ref>)
          which if blocked by the transmission of a large frame, could affect performance.
        </t>
      </section>

      <section anchor="HeaderBlock" title="Header Compression and Decompression">
        <t>
          Just as in HTTP/1, a header field in HTTP/2 is a name with one or more associated values.
          They are used within HTTP request and response messages as well as server push operations
          (see <xref target="PushResources" />).
        </t>
        <t>
          Header lists are collections of zero or more header fields.  When transmitted over a
          connection, a header list is serialized into a header block using <xref
          target="COMPRESSION">HTTP Header Compression</xref>.  The serialized header block is then
          divided into one or more octet sequences, called header block fragments, and transmitted
          within the payload of <xref target="HEADERS">HEADERS</xref>, <xref
          target="PUSH_PROMISE">PUSH_PROMISE</xref> or <xref
          target="CONTINUATION">CONTINUATION</xref> frames.
        </t>
        <t>
          The <xref target="COOKIE">Cookie header field</xref> is treated specially by the HTTP
          mapping (see <xref target="CompressCookie"/>).
        </t>
        <t>
          A receiving endpoint reassembles the header block by concatenating its fragments, then
          decompresses the block to reconstruct the header list.
        </t>
        <t>
          A complete header block consists of either:
          <list style="symbols">
            <t>
              a single <x:ref>HEADERS</x:ref> or <x:ref>PUSH_PROMISE</x:ref> frame,
              with the END_HEADERS flag set, or
            </t>
            <t>
              a <x:ref>HEADERS</x:ref> or <x:ref>PUSH_PROMISE</x:ref> frame with the END_HEADERS
              flag cleared and one or more <x:ref>CONTINUATION</x:ref> frames,
              where the last <x:ref>CONTINUATION</x:ref> frame has the END_HEADERS flag set.
            </t>
          </list>
        </t>
        <t>
          Header compression is stateful.  One compression context and one decompression context is
          used for the entire connection.  Each header block is processed as a discrete unit.
          Header blocks MUST be transmitted as a contiguous sequence of frames, with no interleaved
          frames of any other type or from any other stream.  The last frame in a sequence of
          <x:ref>HEADERS</x:ref> or <x:ref>CONTINUATION</x:ref> frames MUST have the END_HEADERS
          flag set.  The last frame in a sequence of <x:ref>PUSH_PROMISE</x:ref> or
          <x:ref>CONTINUATION</x:ref> frames MUST have the END_HEADERS flag set.  This allows a
          header block to be logically equivalent to a single frame.
        </t>
        <t>
          Header block fragments can only be sent as the payload of <x:ref>HEADERS</x:ref>,
          <x:ref>PUSH_PROMISE</x:ref> or <x:ref>CONTINUATION</x:ref> frames, because these frames
          carry data that can modify the compression context maintained by a receiver.  An endpoint
          receiving <x:ref>HEADERS</x:ref>, <x:ref>PUSH_PROMISE</x:ref> or
          <x:ref>CONTINUATION</x:ref> frames MUST reassemble header blocks and perform decompression
          even if the frames are to be discarded.  A receiver MUST terminate the connection with a
          <xref target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>COMPRESSION_ERROR</x:ref> if it does not decompress a header block.
        </t>
      </section>
    </section>

    <section anchor="StreamsLayer" title="Streams and Multiplexing">
      <t>
        A "stream" is an independent, bi-directional sequence of frames exchanged between the client
        and server within an HTTP/2 connection.  Streams have several important characteristics:
        <list style="symbols">
          <t>
            A single HTTP/2 connection can contain multiple concurrently open streams, with either
            endpoint interleaving frames from multiple streams.
          </t>
          <t>
            Streams can be established and used unilaterally or shared by either the client or
            server.
          </t>
          <t>
            Streams can be closed by either endpoint.
          </t>
          <t>
            The order in which frames are sent on a stream is significant. Recipients process frames
            in the order they are received.  In particular, the order of <x:ref>HEADERS</x:ref>,
            and <x:ref>DATA</x:ref> frames is semantically significant.
          </t>
          <t>
            Streams are identified by an integer.  Stream identifiers are assigned to streams by the
            endpoint initiating the stream.
          </t>
        </list>
      </t>

      <section anchor="StreamStates" title="Stream States">
        <t>
          The lifecycle of a stream is shown in <xref target="StreamStatesFigure"/>.
        </t>

        <figure anchor="StreamStatesFigure" title="Stream States">
          <artwork type="drawing">
            <![CDATA[
                           +--------+
                     PP    |        |    PP
                  ,--------|  idle  |--------.
                 /         |        |         \
                v          +--------+          v
         +----------+          |           +----------+
         |          |          | H         |          |
     ,---| reserved |          |           | reserved |---.
     |   | (local)  |          v           | (remote) |   |
     |   +----------+      +--------+      +----------+   |
     |      |          ES  |        |  ES          |      |
     |      | H    ,-------|  open  |-------.      | H    |
     |      |     /        |        |        \     |      |
     |      v    v         +--------+         v    v      |
     |   +----------+          |           +----------+   |
     |   |   half   |          |           |   half   |   |
     |   |  closed  |          | R         |  closed  |   |
     |   | (remote) |          |           | (local)  |   |
     |   +----------+          |           +----------+   |
     |        |                v                 |        |
     |        |  ES / R    +--------+  ES / R    |        |
     |        `----------->|        |<-----------'        |
     |  R                  | closed |                  R  |
     `-------------------->|        |<--------------------'
                           +--------+

       H:  HEADERS frame (with implied CONTINUATIONs)
       PP: PUSH_PROMISE frame (with implied CONTINUATIONs)
       ES: END_STREAM flag
       R:  RST_STREAM frame
]]>
          </artwork>
        </figure>

        <t>
          Note that this diagram shows stream state transitions and the frames and flags that affect
          those transitions only.  In this regard, <x:ref>CONTINUATION</x:ref> frames do not result
          in state transitions; they are effectively part of the <x:ref>HEADERS</x:ref> or
          <x:ref>PUSH_PROMISE</x:ref> that they follow.  For this purpose, the END_STREAM flag is
          processed as a separate event to the frame that bears it; a <x:ref>HEADERS</x:ref> frame
          with the END_STREAM flag set can cause two state transitions.
        </t>
        <t>
          Both endpoints have a subjective view of the state of a stream that could be different
          when frames are in transit.  Endpoints do not coordinate the creation of streams; they are
          created unilaterally by either endpoint.  The negative consequences of a mismatch in
          states are limited to the "closed" state after sending <x:ref>RST_STREAM</x:ref>, where
          frames might be received for some time after closing.
        </t>
        <t>
          Streams have the following states:
          <list style="hanging">

            <x:lt hangText="idle:">
              <t>
                <vspace blankLines="0"/>
                All streams start in the "idle" state.  In this state, no frames have been
                exchanged.
              </t>
              <t>
                The following transitions are valid from this state:
                <list style="symbols">
                  <t>
                    Sending or receiving a <x:ref>HEADERS</x:ref> frame causes the stream to become
                    "open".  The stream identifier is selected as described in <xref
                    target="StreamIdentifiers"/>.  The same <x:ref>HEADERS</x:ref> frame can also
                    cause a stream to immediately become "half closed".
                  </t>
                  <t>
                    Sending a <x:ref>PUSH_PROMISE</x:ref> frame marks the associated stream for
                    later use.  The stream state for the reserved stream transitions to "reserved
                    (local)".
                  </t>
                  <t>
                    Receiving a <x:ref>PUSH_PROMISE</x:ref> frame marks the associated stream as
                    reserved by the remote peer.  The state of the stream becomes "reserved
                    (remote)".
                  </t>
                </list>
              </t>
              <t>
                Receiving any frames other than <x:ref>HEADERS</x:ref> or
                <x:ref>PUSH_PROMISE</x:ref> on a stream in this state MUST be treated as a <xref
                target="ConnectionErrorHandler">connection error</xref> of type
                <x:ref>PROTOCOL_ERROR</x:ref>.
              </t>
            </x:lt>

            <x:lt hangText="reserved (local):">
              <t>
                <vspace blankLines="0"/>
                A stream in the "reserved (local)" state is one that has been promised by sending a
                <x:ref>PUSH_PROMISE</x:ref> frame.  A <x:ref>PUSH_PROMISE</x:ref> frame reserves an
                idle stream by associating the stream with an open stream that was initiated by the
                remote peer (see <xref target="PushResources"/>).
              </t>
              <t>
                In this state, only the following transitions are possible:
                <list style="symbols">
                  <t>
                    The endpoint can send a <x:ref>HEADERS</x:ref> frame.  This causes the stream to
                    open in a "half closed (remote)" state.
                  </t>
                  <t>
                    Either endpoint can send a <x:ref>RST_STREAM</x:ref> frame to cause the stream
                    to become "closed".  This releases the stream reservation.
                  </t>
                </list>
              </t>
              <t>
                An endpoint MUST NOT send any type of frame other than <x:ref>HEADERS</x:ref> or
                <x:ref>RST_STREAM</x:ref> in this state.
              </t>
              <t>
                A <x:ref>PRIORITY</x:ref> frame MAY be received in this state.  Receiving any type
                of frame other than <x:ref>RST_STREAM</x:ref> or <x:ref>PRIORITY</x:ref> on a stream
                in this state MUST be treated as a <xref target="ConnectionErrorHandler">connection
                error</xref> of type <x:ref>PROTOCOL_ERROR</x:ref>.
              </t>
            </x:lt>

            <x:lt hangText="reserved (remote):">
              <t>
                <vspace blankLines="0"/>
                A stream in the "reserved (remote)" state has been reserved by a remote peer.
              </t>
              <t>
                In this state, only the following transitions are possible:
                <list style="symbols">
                  <t>
                    Receiving a <x:ref>HEADERS</x:ref> frame causes the stream to transition to
                    "half closed (local)".
                  </t>
                  <t>
                    Either endpoint can send a <x:ref>RST_STREAM</x:ref> frame to cause the stream
                    to become "closed".  This releases the stream reservation.
                  </t>
                </list>
              </t>
              <t>
                An endpoint MAY send a <x:ref>PRIORITY</x:ref> frame in this state to reprioritize
                the reserved stream.  An endpoint MUST NOT send any type of frame other than
                <x:ref>RST_STREAM</x:ref>, <x:ref>WINDOW_UPDATE</x:ref>, or <x:ref>PRIORITY</x:ref>
                in this state.
              </t>
              <t>
                Receiving any type of frame other than <x:ref>HEADERS</x:ref> or
                <x:ref>RST_STREAM</x:ref> on a stream in this state MUST be treated as a <xref
                target="ConnectionErrorHandler">connection error</xref> of type
                <x:ref>PROTOCOL_ERROR</x:ref>.
              </t>
            </x:lt>

            <x:lt hangText="open:">
              <t>
                <vspace blankLines="0"/>
                A stream in the "open" state may be used by both peers to send frames of any type.
                In this state, sending peers observe advertised <xref target="FlowControl">stream
                level flow control limits</xref>.
              </t>
              <t>
                From this state either endpoint can send a frame with an END_STREAM flag set, which
                causes the stream to transition into one of the "half closed" states: an endpoint
                sending an END_STREAM flag causes the stream state to become "half closed (local)";
                an endpoint receiving an END_STREAM flag causes the stream state to become "half
                closed (remote)".
              </t>
              <t>
                Either endpoint can send a <x:ref>RST_STREAM</x:ref> frame from this state, causing
                it to transition immediately to "closed".
              </t>
            </x:lt>

            <x:lt hangText="half closed (local):">
              <t>
                <vspace blankLines="0"/>
                A stream that is in the "half closed (local)" state cannot be used for sending
                frames.  Only <x:ref>WINDOW_UPDATE</x:ref>, <x:ref>PRIORITY</x:ref> and
                <x:ref>RST_STREAM</x:ref> frames can be sent in this state.
              </t>
              <t>
                A stream transitions from this state to "closed" when a frame that contains an
                END_STREAM flag is received, or when either peer sends a <x:ref>RST_STREAM</x:ref>
                frame.
              </t>
              <t>
                A receiver can ignore <x:ref>WINDOW_UPDATE</x:ref> frames in this state, which might
                arrive for a short period after a frame bearing the END_STREAM flag is sent.
              </t>
              <t>
                <x:ref>PRIORITY</x:ref> frames received in this state are used to reprioritize
                streams that depend on the current stream.
              </t>
            </x:lt>

            <x:lt hangText="half closed (remote):">
              <t>
                <vspace blankLines="0"/>
                A stream that is "half closed (remote)" is no longer being used by the peer to send
                frames.  In this state, an endpoint is no longer obligated to maintain a receiver
                flow control window if it performs flow control.
              </t>
              <t>
                If an endpoint receives additional frames for a stream that is in this state, other
                than <x:ref>WINDOW_UPDATE</x:ref>, <x:ref>PRIORITY</x:ref> or
                <x:ref>RST_STREAM</x:ref>, it MUST respond with a <xref
                target="StreamErrorHandler">stream error</xref> of type
                <x:ref>STREAM_CLOSED</x:ref>.
              </t>
              <t>
                A stream that is "half closed (remote)" can be used by the endpoint to send frames
                of any type. In this state, the endpoint continues to observe advertised <xref
                target="FlowControl">stream level flow control limits</xref>.
              </t>
              <t>
                A stream can transition from this state to "closed" by sending a frame that contains
                an END_STREAM flag, or when either peer sends a <x:ref>RST_STREAM</x:ref> frame.
              </t>
            </x:lt>

            <x:lt hangText="closed:">
              <t>
                <vspace blankLines="0"/>
                The "closed" state is the terminal state.
              </t>
              <t>
                An endpoint MUST NOT send frames other than <x:ref>PRIORITY</x:ref> on a closed
                stream.  An endpoint that receives any frame other than <x:ref>PRIORITY</x:ref>
                after receiving a <x:ref>RST_STREAM</x:ref> MUST treat that as a <xref
                target="StreamErrorHandler">stream error</xref> of type
                <x:ref>STREAM_CLOSED</x:ref>.  Similarly, an endpoint that receives any frames after
                receiving a frame with the END_STREAM flag set MUST treat that as a <xref
                target="ConnectionErrorHandler">connection error</xref> of type
                <x:ref>STREAM_CLOSED</x:ref>, unless the frame is permitted as described below.
              </t>
              <t>
                <x:ref>WINDOW_UPDATE</x:ref> or <x:ref>RST_STREAM</x:ref> frames can be received in
                this state for a short period after a <x:ref>DATA</x:ref> or <x:ref>HEADERS</x:ref>
                frame containing an END_STREAM flag is sent.  Until the remote peer receives and
                processes <x:ref>RST_STREAM</x:ref> or the frame bearing the END_STREAM flag, it
                might send frames of these types.  Endpoints MUST ignore
                <x:ref>WINDOW_UPDATE</x:ref> or <x:ref>RST_STREAM</x:ref> frames received in this
                state, though endpoints MAY choose to treat frames that arrive a significant time
                after sending END_STREAM as a <xref target="ConnectionErrorHandler">connection
                error</xref> of type <x:ref>PROTOCOL_ERROR</x:ref>.
              </t>
              <t>
                <x:ref>PRIORITY</x:ref> frames can be sent on closed streams to prioritize streams
                that are dependent on the closed stream.  Endpoints SHOULD process
                <x:ref>PRIORITY</x:ref> frame, though they can be ignored if the stream has been
                removed from the dependency tree (see <xref target="priority-gc"/>).
              </t>
              <t>
                If this state is reached as a result of sending a <x:ref>RST_STREAM</x:ref> frame,
                the peer that receives the <x:ref>RST_STREAM</x:ref> might have already sent - or
                enqueued for sending - frames on the stream that cannot be withdrawn.  An endpoint
                MUST ignore frames that it receives on closed streams after it has sent a
                <x:ref>RST_STREAM</x:ref> frame.  An endpoint MAY choose to limit the period over
                which it ignores frames and treat frames that arrive after this time as being in
                error.
              </t>
              <t>
                Flow controlled frames (i.e., <x:ref>DATA</x:ref>) received after sending
                <x:ref>RST_STREAM</x:ref> are counted toward the connection flow control window.
                Even though these frames might be ignored, because they are sent before the sender
                receives the <x:ref>RST_STREAM</x:ref>, the sender will consider the frames to count
                against the flow control window.
              </t>
              <t>
                An endpoint might receive a <x:ref>PUSH_PROMISE</x:ref> frame after it sends
                <x:ref>RST_STREAM</x:ref>.  <x:ref>PUSH_PROMISE</x:ref> causes a stream to become
                "reserved" even if the associated stream has been reset.  Therefore, a
                <x:ref>RST_STREAM</x:ref> is needed to close an unwanted promised stream.
              </t>
            </x:lt>
          </list>
        </t>
        <t>
          In the absence of more specific guidance elsewhere in this document, implementations
          SHOULD treat the receipt of a frame that is not expressly permitted in the description of
          a state as a <xref target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.  Frame of unknown types are ignored.
        </t>
        <t>
          An example of the state transitions for an HTTP request/response exchange can be found in
          <xref target="HttpSequence"/>.  An example of the state transitions for server push can be
          found in <xref target="PushRequests"/> and <xref target="PushResponses"/>.
        </t>

        <section anchor="StreamIdentifiers" title="Stream Identifiers">
          <t>
            Streams are identified with an unsigned 31-bit integer.  Streams initiated by a client
            MUST use odd-numbered stream identifiers; those initiated by the server MUST use
            even-numbered stream identifiers.  A stream identifier of zero (0x0) is used for
            connection control messages; the stream identifier zero cannot be used to establish a
            new stream.
          </t>
          <t>
            HTTP/1.1 requests that are upgraded to HTTP/2 (see <xref target="discover-http"/>) are
            responded to with a stream identifier of one (0x1).  After the upgrade
            completes, stream 0x1 is "half closed (local)" to the client.  Therefore, stream 0x1
            cannot be selected as a new stream identifier by a client that upgrades from HTTP/1.1.
          </t>
          <t>
            The identifier of a newly established stream MUST be numerically greater than all
            streams that the initiating endpoint has opened or reserved.  This governs streams that
            are opened using a <x:ref>HEADERS</x:ref> frame and streams that are reserved using
            <x:ref>PUSH_PROMISE</x:ref>.  An endpoint that receives an unexpected stream identifier
            MUST respond with a <xref target="ConnectionErrorHandler">connection error</xref> of
            type <x:ref>PROTOCOL_ERROR</x:ref>.
          </t>
          <t>
            The first use of a new stream identifier implicitly closes all streams in the "idle"
            state that might have been initiated by that peer with a lower-valued stream identifier.
            For example, if a client sends a <x:ref>HEADERS</x:ref> frame on stream 7 without ever
            sending a frame on stream 5, then stream 5 transitions to the "closed" state when the
            first frame for stream 7 is sent or received.
          </t>
          <t>
            Stream identifiers cannot be reused.  Long-lived connections can result in an endpoint
            exhausting the available range of stream identifiers.  A client that is unable to
            establish a new stream identifier can establish a new connection for new streams.  A
            server that is unable to establish a new stream identifier can send a
            <x:ref>GOAWAY</x:ref> frame so that the client is forced to open a new connection for
            new streams.
          </t>
        </section>

        <section title="Stream Concurrency">
          <t>
            A peer can limit the number of concurrently active streams using the
            <x:ref>SETTINGS_MAX_CONCURRENT_STREAMS</x:ref> parameter (see <xref
            target="SettingValues"/>) within a <x:ref>SETTINGS</x:ref> frame. The maximum concurrent
            streams setting is specific to each endpoint and applies only to the peer that receives
            the setting. That is, clients specify the maximum number of concurrent streams the
            server can initiate, and servers specify the maximum number of concurrent streams the
            client can initiate.
          </t>
          <t>
            Streams that are in the "open" state, or either of the "half closed" states count toward
            the maximum number of streams that an endpoint is permitted to open.  Streams in any of
            these three states count toward the limit advertised in the
            <x:ref>SETTINGS_MAX_CONCURRENT_STREAMS</x:ref> setting.  Streams in either of the
            "reserved" states do not count toward the stream limit.
          </t>
          <t>
            Endpoints MUST NOT exceed the limit set by their peer.  An endpoint that receives a
            <x:ref>HEADERS</x:ref> frame that causes their advertised concurrent stream limit to be
            exceeded MUST treat this as a <xref target="StreamErrorHandler">stream error</xref>.  An
            endpoint that wishes to reduce the value of
            <x:ref>SETTINGS_MAX_CONCURRENT_STREAMS</x:ref> to a value that is below the current
            number of open streams can either close streams that exceed the new value or allow
            streams to complete.
          </t>
        </section>
      </section>

     <section anchor="FlowControl" title="Flow Control">
        <t>
          Using streams for multiplexing introduces contention over use of the TCP connection,
          resulting in blocked streams.  A flow control scheme ensures that streams on the same
          connection do not destructively interfere with each other.  Flow control is used for both
          individual streams and for the connection as a whole.
        </t>
        <t>
          HTTP/2 provides for flow control through use of the <xref
          target="WINDOW_UPDATE">WINDOW_UPDATE frame</xref>.
        </t>

        <section anchor="fc-principles" title="Flow Control Principles">
          <t>
            HTTP/2 stream flow control aims to allow a variety of flow control algorithms to be
            used without requiring protocol changes. Flow control in HTTP/2 has the following
            characteristics:
            <list style="numbers">
              <t>
                Flow control is specific to a connection; i.e., it is "hop-by-hop", not
                "end-to-end".
              </t>
              <t>
                Flow control is based on window update frames.  Receivers advertise how many octets
                they are prepared to receive on a stream and for the entire connection.  This is a
                credit-based scheme.
              </t>
              <t>
                Flow control is directional with overall control provided by the receiver.  A
                receiver MAY choose to set any window size that it desires for each stream and for
                the entire connection.  A sender MUST respect flow control limits imposed by a
                receiver.  Clients, servers and intermediaries all independently advertise their
                flow control window as a receiver and abide by the flow control limits set by
                their peer when sending.
              </t>
              <t>
                The initial value for the flow control window is 65,535 octets for both new streams
                and the overall connection.
              </t>
              <t>
                The frame type determines whether flow control applies to a frame.  Of the frames
                specified in this document, only <x:ref>DATA</x:ref> frames are subject to flow
                control; all other frame types do not consume space in the advertised flow control
                window.  This ensures that important control frames are not blocked by flow control.
              </t>
              <t>
                Flow control cannot be disabled.
              </t>
              <t>
                HTTP/2 defines only the format and semantics of the <x:ref>WINDOW_UPDATE</x:ref>
                frame (<xref target="WINDOW_UPDATE"/>).  This document does not stipulate how a
                receiver decides when to send this frame or the value that it sends, nor does it
                specify how a sender chooses to send packets.  Implementations are able to select
                any algorithm that suits their needs.
              </t>
            </list>
          </t>
          <t>
            Implementations are also responsible for managing how requests and responses are sent
            based on priority; choosing how to avoid head of line blocking for requests; and
            managing the creation of new streams.  Algorithm choices for these could interact with
            any flow control algorithm.
          </t>
        </section>

        <section anchor="DisableFlowControl" title="Appropriate Use of Flow Control">
          <t>
            Flow control is defined to protect endpoints that are operating under resource
            constraints.  For example, a proxy needs to share memory between many connections, and
            also might have a slow upstream connection and a fast downstream one.  Flow control
            addresses cases where the receiver is unable process data on one stream, yet wants to
            continue to process other streams in the same connection.
          </t>
          <t>
            Deployments that do not require this capability can advertise a flow control window of
            the maximum size, incrementing the available space when new data is received.  This
            effectively disables flow control for that receiver.  Conversely, a sender is always
            subject to the flow control window advertised by the receiver.
          </t>
          <t>
            Deployments with constrained resources (for example, memory) can employ flow control to
            limit the amount of memory a peer can consume.  Note, however, that this can lead to
            suboptimal use of available network resources if flow control is enabled without
            knowledge of the bandwidth-delay product (see <xref target="RFC1323"/>).
          </t>
          <t>
            Even with full awareness of the current bandwidth-delay product, implementation of flow
            control can be difficult.  When using flow control, the receiver MUST read from the TCP
            receive buffer in a timely fashion.  Failure to do so could lead to a deadlock when
            critical frames, such as <x:ref>WINDOW_UPDATE</x:ref>, are not read and acted upon.
          </t>
        </section>
      </section>

      <section anchor="StreamPriority" title="Stream priority">
        <t>
          A client can assign a priority for a new stream by including prioritization information in
          the <xref target="HEADERS">HEADERS frame</xref> that opens the stream.  For an existing
          stream, the <xref target="PRIORITY">PRIORITY frame</xref> can be used to change the
          priority.
        </t>
        <t>
          The purpose of prioritization is to allow an endpoint to express how it would prefer its
          peer allocate resources when managing concurrent streams.  Most importantly, priority can
          be used to select streams for transmitting frames when there is limited capacity for
          sending.
        </t>
        <t>
          Streams can be prioritized by marking them as dependent on the completion of other streams
          (<xref target="pri-depend"/>).  Each dependency is assigned a relative weight, a number
          that is used to determine the relative proportion of available resources that are assigned
          to streams dependent on the same stream.
        </t>
        <!--
          Note that stream dependencies have not yet been validated in practice.  The theory
          might be fairly sound, but there are no implementations currently sending these.  If it
          turns out that they are not useful, or actively harmful, implementations will be requested
          to avoid creating stream dependencies.
        -->
        <t>
          Explicitly setting the priority for a stream is input to a prioritization process.  It
          does not guarantee any particular processing or transmission order for the stream relative
          to any other stream.  An endpoint cannot force a peer to process concurrent streams in a
          particular order using priority.  Expressing priority is therefore only ever a suggestion.
        </t>
        <t>
          Providing prioritization information is optional, so default values are used if no
          explicit indicator is provided (<xref target="pri-default"/>).
        </t>

        <section title="Stream Dependencies" anchor="pri-depend">
          <t>
            Each stream can be given an explicit dependency on another stream.  Including a
            dependency expresses a preference to allocate resources to the identified stream rather
            than to the dependent stream.
          </t>
          <t>
            A stream that is not dependent on any other stream is given a stream dependency of 0x0.
            In other words, the non-existent stream 0 forms the root of the tree.
          </t>
          <t>
            A stream that depends on another stream is a dependent stream. The stream upon which a
            stream is dependent is a parent stream. A dependency on a stream that is not currently
            in the tree - such as a stream in the "idle" state - results in that stream being given
            a <xref target="pri-default">default priority</xref>.
          </t>
          <t>
            When assigning a dependency on another stream, the stream is added as a new dependency
            of the parent stream.  Dependent streams that share the same parent are not ordered with
            respect to each other.  For example, if streams B and C are dependent on stream A, and
            if stream D is created with a dependency on stream A, this results in a dependency order
            of A followed by B, C, and D in any order.
          </t>
          <figure title="Example of Default Dependency Creation">
            <artwork type="inline"><![CDATA[
    A                 A
   / \      ==>      /|\
  B   C             B D C
]]></artwork>
          </figure>
          <t>
            An exclusive flag allows for the insertion of a new level of dependencies.  The
            exclusive flag causes the stream to become the sole dependency of its parent stream,
            causing other dependencies to become dependent on the exclusive stream.  In the
            previous example, if stream D is created with an exclusive dependency on stream A, this
            results in D becoming the dependency parent of B and C.
          </t>
          <figure title="Example of Exclusive Dependency Creation">
            <artwork type="inline"><![CDATA[
                      A
    A                 |
   / \      ==>       D
  B   C              / \
                    B   C
]]></artwork>
          </figure>
          <t>
            Inside the dependency tree, a dependent stream SHOULD only be allocated resources if all
            of the streams that it depends on (the chain of parent streams up to 0x0) are either
            closed, or it is not possible to make progress on them.
          </t>
          <t>
            A stream cannot depend on itself.  An endpoint MUST treat this as a <xref
            target="StreamErrorHandler">stream error</xref> of type <x:ref>PROTOCOL_ERROR</x:ref>.
          </t>
        </section>

        <section title="Dependency Weighting">
          <t>
            All dependent streams are allocated an integer weight between 1 and 256 (inclusive).
          </t>
          <t>
            Streams with the same parent SHOULD be allocated resources proportionally based on their
            weight.  Thus, if stream B depends on stream A with weight 4, and C depends on stream A
            with weight 12, and if no progress can be made on A, stream B ideally receives one third
            of the resources allocated to stream C.
          </t>
        </section>

        <section anchor="reprioritize" title="Reprioritization">
          <t>
            Stream priorities are changed using the <x:ref>PRIORITY</x:ref> frame.  Setting a
            dependency causes a stream to become dependent on the identified parent stream.
          </t>
          <t>
            Dependent streams move with their parent stream if the parent is reprioritized.  Setting
            a dependency with the exclusive flag for a reprioritized stream moves all the
            dependencies of the new parent stream to become dependent on the reprioritized stream.
          </t>
          <t>
            If a stream is made dependent on one of its own dependencies, the formerly dependent
            stream is first moved to be dependent on the reprioritized stream's previous parent.
            The moved dependency retains its weight.
          </t>
          <figure title="Example of Dependency Reordering">
            <preamble>
              For example, consider an original dependency tree where B and C depend on A, D and E
              depend on C, and F depends on D.  If A is made dependent on D, then D takes the place
              of A.  All other dependency relationships stay the same, except for F, which becomes
              dependent on A if the reprioritization is exclusive.
            </preamble>
            <artwork type="inline"><![CDATA[
    ?                ?                ?                 ?
    |               / \               |                 |
    A              D   A              D                 D
   / \            /   / \            / \                |
  B   C     ==>  F   B   C   ==>    F   A       OR      A
     / \                 |             / \             /|\
    D   E                E            B   C           B C F
    |                                     |             |
    F                                     E             E
               (intermediate)   (non-exclusive)    (exclusive)
]]></artwork>
          </figure>
        </section>

        <section anchor="priority-gc" title="Prioritization State Management">
          <t>
            When a stream is removed from the dependency tree, its dependencies can be moved to
            become dependent on the parent of the closed stream.  The weights of new dependencies
            are recalculated by distributing the weight of the dependency of the closed stream
            proportionally based on the weights of its dependencies.
          </t>
          <t>
            Streams that are removed from the dependency tree cause some prioritization information
            to be lost.  Resources are shared between streams with the same parent stream, which
            means that if a stream in that set closes or becomes blocked, any spare capacity
            allocated to a stream is distributed to the immediate neighbors of the stream.  However,
            if the common dependency is removed from the tree, those streams share resources with
            streams at the next highest level.
          </t>
          <t>
            For example, assume streams A and B share a parent, and streams C and D both depend on
            stream A. Prior to the removal of stream A, if streams A and D are unable to proceed,
            then stream C receives all the resources dedicated to stream A.  If stream A is removed
            from the tree, the weight of stream A is divided between streams C and D.  If stream D
            is still unable to proceed, this results in stream C receiving a reduced proportion of
            resources.  For equal starting weights, C receives one third, rather than one half, of
            available resources.
          </t>
          <t>
            It is possible for a stream to become closed while prioritization information that
            creates a dependency on that stream is in transit.  If a stream identified in a
            dependency has no associated priority information, then the dependent stream is instead
            assigned a <xref target="pri-default">default priority</xref>.  This potentially creates
            suboptimal prioritization, since the stream could be given a priority that is different
            to what is intended.
          </t>
          <t>
            To avoid these problems, an endpoint SHOULD retain stream prioritization state for a
            period after streams become closed.  The longer state is retained, the lower the chance
            that streams are assigned incorrect or default priority values.
          </t>
          <t>
            This could create a large state burden for an endpoint, so this state MAY be limited.
            An endpoint MAY apply a fixed upper limit on the number of closed streams for which
            prioritization state is tracked to limit state exposure.  The amount of additional state
            an endpoint maintains could be dependent on load; under high load, prioritization state
            can be discarded to limit resource commitments.  In extreme cases, an endpoint could
            even discard prioritization state for active or reserved streams. If a fixed limit is
            applied, endpoints SHOULD maintain state for at least as many streams as allowed by
            their setting for <x:ref>SETTINGS_MAX_CONCURRENT_STREAMS</x:ref>.
          </t>
          <t>
            An endpoint receiving a <x:ref>PRIORITY</x:ref> frame that changes the priority of a
            closed stream SHOULD alter the dependencies of the streams that depend on it, if it has
            retained enough state to do so.
          </t>
        </section>

        <section title="Default Priorities" anchor="pri-default">
          <t>
            Providing priority information is optional.  Streams are assigned a non-exclusive
            dependency on stream 0x0 by default.  <xref target="PushResources">Pushed streams</xref>
            initially depend on their associated stream.  In both cases, streams are assigned a
            default weight of 16.
          </t>
        </section>
      </section>

      <section title="Error Handling">
        <t>
          HTTP/2 framing permits two classes of error:
          <list style="symbols">
            <t>
              An error condition that renders the entire connection unusable is a connection error.
            </t>
            <t>
              An error in an individual stream is a stream error.
            </t>
          </list>
        </t>
        <t>
          A list of error codes is included in <xref target="ErrorCodes"/>.
        </t>

        <section anchor="ConnectionErrorHandler" title="Connection Error Handling">
          <t>
            A connection error is any error which prevents further processing of the framing layer,
            or which corrupts any connection state.
          </t>
          <t>
            An endpoint that encounters a connection error SHOULD first send a <x:ref>GOAWAY</x:ref>
            frame (<xref target="GOAWAY"/>) with the stream identifier of the last stream that it
            successfully received from its peer.  The <x:ref>GOAWAY</x:ref> frame includes an error
            code that indicates why the connection is terminating.  After sending the
            <x:ref>GOAWAY</x:ref> frame, the endpoint MUST close the TCP connection.
          </t>
          <t>
            It is possible that the <x:ref>GOAWAY</x:ref> will not be reliably received by the
            receiving endpoint (see <xref target="RFC7230" x:fmt=","
            x:rel="#persistent.tear-down"/>).  In the event of a connection error,
            <x:ref>GOAWAY</x:ref> only provides a best effort attempt to communicate with the peer
            about why the connection is being terminated.
          </t>
          <t>
            An endpoint can end a connection at any time.  In particular, an endpoint MAY choose to
            treat a stream error as a connection error.  Endpoints SHOULD send a
            <x:ref>GOAWAY</x:ref> frame when ending a connection, providing that circumstances
            permit it.
          </t>
        </section>

        <section anchor="StreamErrorHandler" title="Stream Error Handling">
          <t>
            A stream error is an error related to a specific stream that does not affect processing
            of other streams.
          </t>
          <t>
            An endpoint that detects a stream error sends a <x:ref>RST_STREAM</x:ref> frame (<xref
            target="RST_STREAM"/>) that contains the stream identifier of the stream where the error
            occurred.  The <x:ref>RST_STREAM</x:ref> frame includes an error code that indicates the
            type of error.
          </t>
          <t>
            A <x:ref>RST_STREAM</x:ref> is the last frame that an endpoint can send on a stream.
            The peer that sends the <x:ref>RST_STREAM</x:ref> frame MUST be prepared to receive any
            frames that were sent or enqueued for sending by the remote peer.  These frames can be
            ignored, except where they modify connection state (such as the state maintained for
            <xref target="HeaderBlock">header compression</xref>, or flow control).
          </t>
          <t>
            Normally, an endpoint SHOULD NOT send more than one <x:ref>RST_STREAM</x:ref> frame for
            any stream. However, an endpoint MAY send additional <x:ref>RST_STREAM</x:ref> frames if
            it receives frames on a closed stream after more than a round-trip time.  This behavior
            is permitted to deal with misbehaving implementations.
          </t>
          <t>
            An endpoint MUST NOT send a <x:ref>RST_STREAM</x:ref> in response to an
            <x:ref>RST_STREAM</x:ref> frame, to avoid looping.
          </t>
        </section>

        <section title="Connection Termination">
          <t>
            If the TCP connection is closed or reset while streams remain in open or half closed
            states, then the endpoint MUST assume that those streams were abnormally interrupted and
            could be incomplete.
          </t>
        </section>
      </section>

      <section anchor="extensibility" title="Extending HTTP/2">
        <t>
          HTTP/2 permits extension of the protocol.  Protocol extensions can be used to provide
          additional services or alter any aspect of the protocol, within the limitations described
          in this section.  Extensions are effective only within the scope of a single HTTP/2
          connection.
        </t>
        <t>
          Extensions are permitted to use new <xref target="FrameHeader">frame types</xref>, new
          <xref target="SettingValues">settings</xref>, or new <xref target="ErrorCodes">error
          codes</xref>.  Registries are established for managing these extension points: <xref
          target="iana-frames">frame types</xref>, <xref target="iana-settings">settings</xref> and
          <xref target="iana-errors">error codes</xref>.
        </t>
        <t>
          Implementations MUST ignore unknown or unsupported values in all extensible protocol
          elements.  Implementations MUST discard frames that have unknown or unsupported types.
          This means that any of these extension points can be safely used by extensions without
          prior arrangement or negotiation.  However, extension frames that appear in the middle of
          a <xref target="HeaderBlock">header block</xref> are not permitted; these MUST be treated
          as a <xref target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>
        <t>
          However, extensions that could change the semantics of existing protocol components MUST
          be negotiated before being used.  For example, an extension that changes the layout of the
          <x:ref>HEADERS</x:ref> frame cannot be used until the peer has given a positive signal
          that this is acceptable.  In this case, it could also be necessary to coordinate when the
          revised layout comes into effect.  Note that treating any frame other than
          <x:ref>DATA</x:ref> frames as flow controlled is such a change in semantics, and can only
          be done through negotiation.
        </t>
        <t>
          This document doesn't mandate a specific method for negotiating the use of an extension,
          but notes that a <xref target="SettingValues">setting</xref> could be used for that
          purpose.  If both peers set a value that indicates willingness to use the extension, then
          the extension can be used.  If a setting is used for extension negotiation, the initial
          value MUST be defined so that the extension is initially disabled.
        </t>
      </section>
    </section>

    <section anchor="FrameTypes" title="Frame Definitions">
      <t>
        This specification defines a number of frame types, each identified by a unique 8-bit type
        code. Each frame type serves a distinct purpose either in the establishment and management
        of the connection as a whole, or of individual streams.
      </t>
      <t>
        The transmission of specific frame types can alter the state of a connection. If endpoints
        fail to maintain a synchronized view of the connection state, successful communication
        within the connection will no longer be possible. Therefore, it is important that endpoints
        have a shared comprehension of how the state is affected by the use any given frame.
      </t>

      <section anchor="DATA" title="DATA">
        <t>
          DATA frames (type=0x0) convey arbitrary, variable-length sequences of octets associated
          with a stream. One or more DATA frames are used, for instance, to carry HTTP request or
          response payloads.
        </t>
        <t>
          DATA frames MAY also contain arbitrary padding.  Padding can be added to DATA frames to
          obscure the size of messages.
        </t>
        <figure title="DATA Frame Payload">
          <artwork type="inline"><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |Pad Length? (8)|
 +---------------+-----------------------------------------------+
 |                            Data (*)                         ...
 +---------------------------------------------------------------+
 |                           Padding (*)                       ...
 +---------------------------------------------------------------+
]]></artwork>
        </figure>
        <t>
          The DATA frame contains the following fields:
          <list style="hanging">
            <t hangText="Pad Length:">
              An 8-bit field containing the length of the frame padding in units of octets.  This
              field is optional and is only present if the PADDED flag is set.
            </t>
            <t hangText="Data:">
              Application data.  The amount of data is the remainder of the frame payload after
              subtracting the length of the other fields that are present.
            </t>
            <t hangText="Padding:">
              Padding octets that contain no application semantic value.  Padding octets MUST be set
              to zero when sending and ignored when receiving.
            </t>
          </list>
        </t>

        <t>
          The DATA frame defines the following flags:
          <list style="hanging">
            <t hangText="END_STREAM (0x1):">
              Bit 1 being set indicates that this frame is the last that the endpoint will send for
              the identified stream.  Setting this flag causes the stream to enter one of <xref
              target="StreamStates">the "half closed" states or the "closed" state</xref>.
            </t>
            <t hangText="PADDED (0x8):">
              Bit 4 being set indicates that the Pad Length field and any padding that it describes
              is present.
            </t>
          </list>
        </t>
        <t>
          DATA frames MUST be associated with a stream. If a DATA frame is received whose stream
          identifier field is 0x0, the recipient MUST respond with a <xref
          target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>
        <t>
          DATA frames are subject to flow control and can only be sent when a stream is in the
          "open" or "half closed (remote)" states. The entire DATA frame payload is included in flow
          control, including Pad Length and Padding fields if present.  If a DATA frame is received
          whose stream is not in "open" or "half closed (local)" state, the recipient MUST respond
          with a <xref target="StreamErrorHandler">stream error</xref> of type
          <x:ref>STREAM_CLOSED</x:ref>.
        </t>
        <t>
          The total number of padding octets is determined by the value of the Pad Length field. If
          the length of the padding is greater than the length of the frame payload, the recipient
          MUST treat this as a <xref target="ConnectionErrorHandler">connection error</xref> of
          type <x:ref>PROTOCOL_ERROR</x:ref>.
          <list style="hanging">
            <t hangText="Note:">
              A frame can be increased in size by one octet by including a Pad Length field with a
              value of zero.
            </t>
          </list>
        </t>
        <t>
          Padding is a security feature; see <xref target="padding"/>.
        </t>
      </section>

      <section anchor="HEADERS" title="HEADERS">
        <t>
          The HEADERS frame (type=0x1) is used to <xref target="StreamStates">open a stream</xref>,
          and additionally carries a header block fragment. HEADERS frames can be sent on a stream
          in the "open" or "half closed (remote)" states.
        </t>
        <figure title="HEADERS Frame Payload">
          <artwork type="inline"><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |Pad Length? (8)|
 +-+-------------+-----------------------------------------------+
 |E|                 Stream Dependency? (31)                     |
 +-+-------------+-----------------------------------------------+
 |  Weight? (8)  |
 +-+-------------+-----------------------------------------------+
 |                   Header Block Fragment (*)                 ...
 +---------------------------------------------------------------+
 |                           Padding (*)                       ...
 +---------------------------------------------------------------+
]]></artwork>
        </figure>
        <t>
          The HEADERS frame payload has the following fields:
          <list style="hanging">
            <t hangText="Pad Length:">
              An 8-bit field containing the length of the frame padding in units of octets.  This
              field is only present if the PADDED flag is set.
            </t>
            <t hangText="E:">
              A single bit flag indicates that the stream dependency is exclusive, see <xref
              target="StreamPriority"/>.  This field is only present if the PRIORITY flag is set.
            </t>
            <t hangText="Stream Dependency:">
              A 31-bit stream identifier for the stream that this stream depends on, see <xref
              target="StreamPriority"/>.  This field is only present if the PRIORITY flag is set.
            </t>
            <t hangText="Weight:">
              An 8-bit weight for the stream, see <xref target="StreamPriority"/>.  Add one to the
              value to obtain a weight between 1 and 256.  This field is only present if the
              PRIORITY flag is set.
            </t>
            <t hangText="Header Block Fragment:">
              A <xref target="HeaderBlock">header block fragment</xref>.
            </t>
            <t hangText="Padding:">
              Padding octets that contain no application semantic value.  Padding octets MUST be set
              to zero when sending and ignored when receiving.
            </t>
          </list>
        </t>

        <t>
          The HEADERS frame defines the following flags:
          <list style="hanging">
            <x:lt hangText="END_STREAM (0x1):">
              <t>
                Bit 1 being set indicates that the <xref target="HeaderBlock">header block</xref> is
                the last that the endpoint will send for the identified stream.  Setting this flag
                causes the stream to enter one of <xref target="StreamStates">"half closed"
                states</xref>.
              </t>
              <t>
                A HEADERS frame carries the END_STREAM flag that signals the end of a stream.
                However, a HEADERS frame with the END_STREAM flag set can be followed by
                <x:ref>CONTINUATION</x:ref> frames on the same stream.  Logically, the
                <x:ref>CONTINUATION</x:ref> frames are part of the HEADERS frame.
              </t>
            </x:lt>
            <x:lt hangText="END_HEADERS (0x4):">
              <t>
                Bit 3 being set indicates that this frame contains an entire <xref
                target="HeaderBlock">header block</xref> and is not followed by any
                <x:ref>CONTINUATION</x:ref> frames.
              </t>
              <t>
                A HEADERS frame without the END_HEADERS flag set MUST be followed by a
                <x:ref>CONTINUATION</x:ref> frame for the same stream.  A receiver MUST treat the
                receipt of any other type of frame or a frame on a different stream as a <xref
                target="ConnectionErrorHandler">connection error</xref> of type
                <x:ref>PROTOCOL_ERROR</x:ref>.
              </t>
            </x:lt>
            <x:lt hangText="PADDED (0x8):">
              <t>
                Bit 4 being set indicates that the Pad Length field and any padding that it
                describes is present.
              </t>
            </x:lt>
            <x:lt hangText="PRIORITY (0x20):">
              <t>
                Bit 6 being set indicates that the Exclusive Flag (E), Stream Dependency, and Weight
                fields are present; see <xref target="StreamPriority"/>.
              </t>
            </x:lt>
          </list>
        </t>

        <t>
          The payload of a HEADERS frame contains a <xref target="HeaderBlock">header block
          fragment</xref>.  A header block that does not fit within a HEADERS frame is continued in
          a <xref target="CONTINUATION">CONTINUATION frame</xref>.
        </t>

        <t>
          HEADERS frames MUST be associated with a stream. If a HEADERS frame is received whose
          stream identifier field is 0x0, the recipient MUST respond with a <xref
          target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>

        <t>
          The HEADERS frame changes the connection state as described in <xref
          target="HeaderBlock"/>.
        </t>

        <t>
          The HEADERS frame includes optional padding.  Padding fields and flags are identical to
          those defined for <xref target="DATA">DATA frames</xref>.
        </t>
        <t>
          Prioritization information in a HEADERS frame is logically equivalent to a separate
          <x:ref>PRIORITY</x:ref> frame, but inclusion in HEADERS avoids the potential for churn in
          stream prioritization when new streams are created.  Priorization fields in HEADERS frames
          subsequent to the first on a stream <xref target="reprioritize">reprioritize the
          stream</xref>.
        </t>
      </section>

      <section anchor="PRIORITY" title="PRIORITY">
        <t>
          The PRIORITY frame (type=0x2) specifies the <xref target="StreamPriority">sender-advised
          priority of a stream</xref>.  It can be sent at any time for an existing stream, including
          closed streams.  This enables reprioritization of existing streams.
        </t>
        <figure title="PRIORITY Frame Payload">
          <artwork type="inline"><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |E|                  Stream Dependency (31)                     |
 +-+-------------+-----------------------------------------------+
 |   Weight (8)  |
 +-+-------------+
]]></artwork>
        </figure>
        <t>
          The payload of a PRIORITY frame contains the following fields:
          <list style="hanging">
            <t hangText="E:">
              A single bit flag indicates that the stream dependency is exclusive, see <xref
              target="StreamPriority"/>.
            </t>
            <t hangText="Stream Dependency:">
              A 31-bit stream identifier for the stream that this stream depends on, see <xref
              target="StreamPriority"/>.
            </t>
            <t hangText="Weight:">
              An 8-bit weight for the identified stream dependency, see <xref
              target="StreamPriority"/>.  Add one to the value to obtain a weight between 1 and 256.
            </t>
          </list>
        </t>

        <t>
          The PRIORITY frame does not define any flags.
        </t>

        <t>
          The PRIORITY frame is associated with an existing stream. If a PRIORITY frame is received
          with a stream identifier of 0x0, the recipient MUST respond with a <xref
          target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>
        <t>
          The PRIORITY frame can be sent on a stream in any of the "reserved (remote)", "open",
          "half closed (local)", "half closed (remote)", or "closed" states, though it cannot be
          sent between consecutive frames that comprise a single <xref target="HeaderBlock">header
          block</xref>.  Note that this frame could arrive after processing or frame sending has
          completed, which would cause it to have no effect on the current stream.  For a stream
          that is in the "half closed (remote)" or "closed" - state, this frame can only affect
          processing of the current stream and not frame transmission.
        </t>
        <t>
          The PRIORITY frame is the only frame that can be sent for a stream in the "closed" state.
          This allows for the reprioritization of a group of dependent streams by altering the
          priority of a parent stream, which might be closed.  However, a PRIORITY frame sent on a
          closed stream risks being ignored due to the peer having discarded priority state
          information for that stream.
        </t>
      </section>

      <section anchor="RST_STREAM" title="RST_STREAM">
        <t>
          The RST_STREAM frame (type=0x3) allows for abnormal termination of a stream.  When sent by
          the initiator of a stream, it indicates that they wish to cancel the stream or that an
          error condition has occurred.  When sent by the receiver of a stream, it indicates that
          either the receiver is rejecting the stream, requesting that the stream be cancelled, or
          that an error condition has occurred.
        </t>
        <figure title="RST_STREAM Frame Payload">
          <artwork type="inline"><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                        Error Code (32)                        |
 +---------------------------------------------------------------+
]]></artwork>
        </figure>

        <t>
          The RST_STREAM frame contains a single unsigned, 32-bit integer identifying the <xref
          target="ErrorCodes">error code</xref>.  The error code indicates why the stream is being
          terminated.
        </t>

        <t>
          The RST_STREAM frame does not define any flags.
        </t>

        <t>
          The RST_STREAM frame fully terminates the referenced stream and causes it to enter the
          closed state. After receiving a RST_STREAM on a stream, the receiver MUST NOT send
          additional frames for that stream, with the exception of <x:ref>PRIORITY</x:ref>. However,
          after sending the RST_STREAM, the sending endpoint MUST be prepared to receive and process
          additional frames sent on the stream that might have been sent by the peer prior to the
          arrival of the RST_STREAM.
        </t>

        <t>
          RST_STREAM frames MUST be associated with a stream.  If a RST_STREAM frame is received
          with a stream identifier of 0x0, the recipient MUST treat this as a <xref
          target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>

        <t>
          RST_STREAM frames MUST NOT be sent for a stream in the "idle" state.  If a RST_STREAM
          frame identifying an idle stream is received, the recipient MUST treat this as a <xref
          target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>

      </section>

      <section anchor="SETTINGS" title="SETTINGS">
        <t>
          The SETTINGS frame (type=0x4) conveys configuration parameters that affect how endpoints
          communicate, such as preferences and constraints on peer behavior.  The SETTINGS frame is
          also used to acknowledge the receipt of those parameters.  Individually, a SETTINGS
          parameter can also be referred to as a "setting".
        </t>
        <t>
          SETTINGS parameters are not negotiated; they describe characteristics of the sending peer,
          which are used by the receiving peer. Different values for the same parameter can be
          advertised by each peer. For example, a client might set a high initial flow control
          window, whereas a server might set a lower value to conserve resources.
        </t>

        <t>
          A SETTINGS frame MUST be sent by both endpoints at the start of a connection, and MAY be
          sent at any other time by either endpoint over the lifetime of the connection.
          Implementations MUST support all of the parameters defined by this specification.
        </t>

        <t>
          Each parameter in a SETTINGS frame replaces any existing value for that parameter.
          Parameters are processed in the order in which they appear, and a receiver of a SETTINGS
          frame does not need to maintain any state other than the current value of its
          parameters. Therefore, the value of a SETTINGS parameter is the last value that is seen by
          a receiver.
        </t>
        <t>
          SETTINGS parameters are acknowledged by the receiving peer. To enable this, the SETTINGS
          frame defines the following flag:
          <list style="hanging">
            <t hangText="ACK (0x1):">
              Bit 1 being set indicates that this frame acknowledges receipt and application of the
              peer's SETTINGS frame.  When this bit is set, the payload of the SETTINGS frame MUST
              be empty.  Receipt of a SETTINGS frame with the ACK flag set and a length field value
              other than 0 MUST be treated as a <xref target="ConnectionErrorHandler">connection
              error</xref> of type <x:ref>FRAME_SIZE_ERROR</x:ref>.  For more info, see <xref
              target="SettingsSync">Settings Synchronization</xref>.
            </t>
          </list>
        </t>
        <t>
          SETTINGS frames always apply to a connection, never a single stream.  The stream
          identifier for a SETTINGS frame MUST be zero (0x0). If an endpoint receives a SETTINGS
          frame whose stream identifier field is anything other than 0x0, the endpoint MUST respond
          with a <xref target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>
        <t>
          The SETTINGS frame affects connection state.  A badly formed or incomplete SETTINGS frame
          MUST be treated as a <xref target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>

        <section title="SETTINGS Format" anchor="SettingFormat">
          <t>
            The payload of a SETTINGS frame consists of zero or more parameters, each consisting of
            an unsigned 16-bit setting identifier and an unsigned 32-bit value.
          </t>

          <figure title="Setting Format">
            <artwork type="inline"><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |       Identifier (16)         |
 +-------------------------------+-------------------------------+
 |                        Value (32)                             |
 +---------------------------------------------------------------+
]]></artwork>
          </figure>
        </section>

        <section anchor="SettingValues" title="Defined SETTINGS Parameters">
          <t>
            The following parameters are defined:
            <list style="hanging">
              <x:lt hangText="SETTINGS_HEADER_TABLE_SIZE (0x1):"
                    anchor="SETTINGS_HEADER_TABLE_SIZE">
                <t>
                  Allows the sender to inform the remote endpoint of the maximum size of the header
                  compression table used to decode header blocks, in octets. The encoder can select
                  any size equal to or less than this value by using signaling specific to the
                  header compression format inside a header block. The initial value is 4,096
                  octets.
                </t>
              </x:lt>
              <x:lt hangText="SETTINGS_ENABLE_PUSH (0x2):"
                    anchor="SETTINGS_ENABLE_PUSH">
                <t>
                  This setting can be use to disable <xref target="PushResources">server
                  push</xref>. An endpoint MUST NOT send a <x:ref>PUSH_PROMISE</x:ref> frame if it
                  receives this parameter set to a value of 0. An endpoint that has both set this
                  parameter to 0 and had it acknowledged MUST treat the receipt of a
                  <x:ref>PUSH_PROMISE</x:ref> frame as a <xref
                  target="ConnectionErrorHandler">connection error</xref> of type
                  <x:ref>PROTOCOL_ERROR</x:ref>.
                </t>
                <t>
                  The initial value is 1, which indicates that server push is permitted.  Any value
                  other than 0 or 1 MUST be treated as a <xref
                  target="ConnectionErrorHandler">connection error</xref> of type
                  <x:ref>PROTOCOL_ERROR</x:ref>.
                </t>
              </x:lt>
              <x:lt hangText="SETTINGS_MAX_CONCURRENT_STREAMS (0x3):"
                    anchor="SETTINGS_MAX_CONCURRENT_STREAMS">
                <t>
                  Indicates the maximum number of concurrent streams that the sender will allow.
                  This limit is directional: it applies to the number of streams that the sender
                  permits the receiver to create. Initially there is no limit to this value.  It is
                  recommended that this value be no smaller than 100, so as to not unnecessarily
                  limit parallelism.
                </t>
                <t>
                  A value of 0 for SETTINGS_MAX_CONCURRENT_STREAMS SHOULD NOT be treated as special
                  by endpoints.  A zero value does prevent the creation of new streams, however this
                  can also happen for any limit that is exhausted with active streams.  Servers
                  SHOULD only set a zero value for short durations; if a server does not wish to
                  accept requests, closing the connection could be preferable.
                </t>
              </x:lt>
              <x:lt hangText="SETTINGS_INITIAL_WINDOW_SIZE (0x4):"
                    anchor="SETTINGS_INITIAL_WINDOW_SIZE">
                <t>
                  Indicates the sender's initial window size (in octets) for stream level flow
                  control.  The initial value is 2<x:sup>16</x:sup>-1 (65,535) octets.
                </t>
                <t>
                  This setting affects the window size of all streams, including existing streams,
                  see <xref target="InitialWindowSize"/>.
                </t>
                <t>
                  Values above the maximum flow control window size of 2<x:sup>31</x:sup>-1 MUST
                  be treated as a <xref target="ConnectionErrorHandler">connection error</xref> of
                  type <x:ref>FLOW_CONTROL_ERROR</x:ref>.
                </t>
              </x:lt>
              <x:lt hangText="SETTINGS_MAX_FRAME_SIZE (0x5):"
                    anchor="SETTINGS_MAX_FRAME_SIZE">
                <t>
                  Indicates the size of the largest frame payload that the sender is willing to
                  receive, in octets.
                </t>
                <t>
                  The initial value is 2<x:sup>14</x:sup> (16,384) octets.  The value advertised by
                  an endpoint MUST be between this initial value and the maximum allowed frame size
                  (2<x:sup>24</x:sup>-1 or 16,777,215 octets), inclusive.  Values outside this range
                  MUST be treated as a <xref target="ConnectionErrorHandler">connection error</xref>
                  of type <x:ref>PROTOCOL_ERROR</x:ref>.
                </t>
              </x:lt>
              <x:lt hangText="SETTINGS_MAX_HEADER_LIST_SIZE (0x6):"
                    anchor="SETTINGS_MAX_HEADER_LIST_SIZE">
                <t>
                  This advisory setting informs a peer of the maximum size of header list that the
                  sender is prepared to accept, in octets. The value is based on the uncompressed
                  size of header fields, including the length of the name and value in octets plus
                  an overhead of 32 octets for each header field.
                </t>
                <t>
                  For any given request, a lower limit than what is advertised MAY be enforced.  The
                  initial value of this setting is unlimited.
                </t>
              </x:lt>
            </list>
          </t>
          <t>
            An endpoint that receives a SETTINGS frame with any unknown or unsupported identifier
            MUST ignore that setting.
          </t>
        </section>

        <section anchor="SettingsSync" title="Settings Synchronization">
          <t>
            Most values in SETTINGS benefit from or require an understanding of when the peer has
            received and applied the changed parameter values. In order to provide
            such synchronization timepoints, the recipient of a SETTINGS frame in which the ACK flag
            is not set MUST apply the updated parameters as soon as possible upon receipt.
          </t>
          <t>
            The values in the SETTINGS frame MUST be processed in the order they appear, with no
            other frame processing between values.  Unsupported parameters MUST be ignored.  Once
            all values have been processed, the recipient MUST immediately emit a SETTINGS frame
            with the ACK flag set. Upon receiving a SETTINGS frame with the ACK flag set, the sender
            of the altered parameters can rely on the setting having been applied.
          </t>
          <t>
            If the sender of a SETTINGS frame does not receive an acknowledgement within a
            reasonable amount of time, it MAY issue a <xref
            target="ConnectionErrorHandler">connection error</xref> of type
            <x:ref>SETTINGS_TIMEOUT</x:ref>.
          </t>
        </section>
      </section>

      <section anchor="PUSH_PROMISE" title="PUSH_PROMISE">
        <t>
          The PUSH_PROMISE frame (type=0x5) is used to notify the peer endpoint in advance of
          streams the sender intends to initiate.  The PUSH_PROMISE frame includes the unsigned
          31-bit identifier of the stream the endpoint plans to create along with a set of headers
          that provide additional context for the stream.  <xref target="PushResources"/> contains a
          thorough description of the use of PUSH_PROMISE frames.
        </t>

        <figure title="PUSH_PROMISE Payload Format">
          <artwork type="inline"><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |Pad Length? (8)|
 +-+-------------+-----------------------------------------------+
 |R|                  Promised Stream ID (31)                    |
 +-+-----------------------------+-------------------------------+
 |                   Header Block Fragment (*)                 ...
 +---------------------------------------------------------------+
 |                           Padding (*)                       ...
 +---------------------------------------------------------------+
]]></artwork>
        </figure>
        <t>
          The PUSH_PROMISE frame payload has the following fields:
          <list style="hanging">
            <t hangText="Pad Length:">
              An 8-bit field containing the length of the frame padding in units of octets.  This
              field is only present if the PADDED flag is set.
            </t>
            <t hangText="R:">
              A single reserved bit.
            </t>
            <t hangText="Promised Stream ID:">
              An unsigned 31-bit integer that identifies the stream that is reserved by the
              PUSH_PROMISE.  The promised stream identifier MUST be a valid choice for the next
              stream sent by the sender (see <xref target="StreamIdentifiers">new stream
              identifier</xref>).
            </t>
            <t hangText="Header Block Fragment:">
              A <xref target="HeaderBlock">header block fragment</xref> containing request header
              fields.
            </t>
            <t hangText="Padding:">
              Padding octets.
            </t>
          </list>
        </t>

        <t>
          The PUSH_PROMISE frame defines the following flags:
          <list style="hanging">
            <x:lt hangText="END_HEADERS (0x4):">
              <t>
                Bit 3 being set indicates that this frame contains an entire <xref
                target="HeaderBlock">header block</xref> and is not followed by any
                <x:ref>CONTINUATION</x:ref> frames.
              </t>
              <t>
                A PUSH_PROMISE frame without the END_HEADERS flag set MUST be followed by a
                CONTINUATION frame for the same stream.  A receiver MUST treat the receipt of any
                other type of frame or a frame on a different stream as a <xref
                target="ConnectionErrorHandler">connection error</xref> of type
                <x:ref>PROTOCOL_ERROR</x:ref>.
              </t>
            </x:lt>
            <x:lt hangText="PADDED (0x8):">
              <t>
                Bit 4 being set indicates that the Pad Length field and any padding that it
                describes is present.
              </t>
            </x:lt>
          </list>
        </t>

        <t>
          PUSH_PROMISE frames MUST be associated with an existing, peer-initiated stream. The stream
          identifier of a PUSH_PROMISE frame indicates the stream it is associated with.  If the
          stream identifier field specifies the value 0x0, a recipient MUST respond with a <xref
          target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>

        <t>
          Promised streams are not required to be used in the order they are promised.  The
          PUSH_PROMISE only reserves stream identifiers for later use.
        </t>

        <t>
          PUSH_PROMISE MUST NOT be sent if the <x:ref>SETTINGS_ENABLE_PUSH</x:ref> setting of the
          peer endpoint is set to 0.  An endpoint that has set this setting and has received
          acknowledgement MUST treat the receipt of a PUSH_PROMISE frame as a <xref
          target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>
        <t>
          Recipients of PUSH_PROMISE frames can choose to reject promised streams by returning a
          <x:ref>RST_STREAM</x:ref> referencing the promised stream identifier back to the sender of
          the PUSH_PROMISE.
        </t>

       <t>
          A PUSH_PROMISE frame modifies the connection state in two ways.  The inclusion of a <xref
          target="HeaderBlock">header block</xref> potentially modifies the state maintained for
          header compression.  PUSH_PROMISE also reserves a stream for later use, causing the
          promised stream to enter the "reserved" state.  A sender MUST NOT send a PUSH_PROMISE on a
          stream unless that stream is either "open" or "half closed (remote)"; the sender MUST
          ensure that the promised stream is a valid choice for a <xref
          target="StreamIdentifiers">new stream identifier</xref> (that is, the promised stream MUST
          be in the "idle" state).
        </t>
        <t>
          Since PUSH_PROMISE reserves a stream, ignoring a PUSH_PROMISE frame causes the stream
          state to become indeterminate.  A receiver MUST treat the receipt of a PUSH_PROMISE on a
          stream that is neither "open" nor "half closed (local)" as a <xref
          target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.  However, an endpoint that has sent
          <x:ref>RST_STREAM</x:ref> on the associated stream MUST handle PUSH_PROMISE frames that
          might have been created before the <x:ref>RST_STREAM</x:ref> frame is received and
          processed.
        </t>
        <t>
          A receiver MUST treat the receipt of a PUSH_PROMISE that promises an <xref
          target="StreamIdentifiers">illegal stream identifier</xref> (that is, an identifier for a
          stream that is not currently in the "idle" state) as a <xref
          target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>

        <t>
          The PUSH_PROMISE frame includes optional padding.  Padding fields and flags are identical
          to those defined for <xref target="DATA">DATA frames</xref>.
        </t>
      </section>

      <section anchor="PING" title="PING">
        <t>
          The PING frame (type=0x6) is a mechanism for measuring a minimal round trip time from the
          sender, as well as determining whether an idle connection is still functional.  PING
          frames can be sent from any endpoint.
        </t>
        <figure title="PING Payload Format">
          <artwork type="inline"><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |                      Opaque Data (64)                         |
 |                                                               |
 +---------------------------------------------------------------+
]]></artwork>
        </figure>

        <t>
          In addition to the frame header, PING frames MUST contain 8 octets of data in the payload.
          A sender can include any value it chooses and use those bytes in any fashion.
        </t>
        <t>
          Receivers of a PING frame that does not include an ACK flag MUST send a PING frame with
          the ACK flag set in response, with an identical payload.  PING responses SHOULD be given
          higher priority than any other frame.
        </t>

        <t>
          The PING frame defines the following flags:
          <list style="hanging">
            <t hangText="ACK (0x1):">
              Bit 1 being set indicates that this PING frame is a PING response.  An endpoint MUST
              set this flag in PING responses.  An endpoint MUST NOT respond to PING frames
              containing this flag.
            </t>
          </list>
        </t>
        <t>
          PING frames are not associated with any individual stream. If a PING frame is received
          with a stream identifier field value other than 0x0, the recipient MUST respond with a
          <xref target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>
        <t>
          Receipt of a PING frame with a length field value other than 8 MUST be treated as a <xref
          target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>FRAME_SIZE_ERROR</x:ref>.
        </t>

      </section>

      <section anchor="GOAWAY" title="GOAWAY">
        <t>
          The GOAWAY frame (type=0x7) informs the remote peer to stop creating streams on this
          connection.  GOAWAY can be sent by either the client or the server.  Once sent, the sender
          will ignore frames sent on any new streams with identifiers higher than the included last
          stream identifier.  Receivers of a GOAWAY frame MUST NOT open additional streams on the
          connection, although a new connection can be established for new streams.
        </t>
        <t>
          The purpose of this frame is to allow an endpoint to gracefully stop accepting new
          streams, while still finishing processing of previously established streams.  This enables
          administrative actions, like server maintenance.
        </t>
        <t>
          There is an inherent race condition between an endpoint starting new streams and the
          remote sending a GOAWAY frame.  To deal with this case, the GOAWAY contains the stream
          identifier of the last peer-initiated stream which was or might be processed on the
          sending endpoint in this connection.  For instance, if the server sends a GOAWAY frame,
          the identified stream is the highest numbered stream initiated by the client.
        </t>
        <t>
          If the receiver of the GOAWAY has sent data on streams with a higher stream identifier
          than what is indicated in the GOAWAY frame, those streams are not or will not be
          processed.  The receiver of the GOAWAY frame can treat the streams as though they had
          never been created at all, thereby allowing those streams to be retried later on a new
          connection.
        </t>
        <t>
          Endpoints SHOULD always send a GOAWAY frame before closing a connection so that the remote
          can know whether a stream has been partially processed or not.  For example, if an HTTP
          client sends a POST at the same time that a server closes a connection, the client cannot
          know if the server started to process that POST request if the server does not send a
          GOAWAY frame to indicate what streams it might have acted on.
        </t>
        <t>
          An endpoint might choose to close a connection without sending GOAWAY for misbehaving
          peers.
        </t>

        <figure title="GOAWAY Payload Format">
          <artwork type="inline"><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |R|                  Last-Stream-ID (31)                        |
 +-+-------------------------------------------------------------+
 |                      Error Code (32)                          |
 +---------------------------------------------------------------+
 |                  Additional Debug Data (*)                    |
 +---------------------------------------------------------------+
]]></artwork>
        </figure>
        <t>
          The GOAWAY frame does not define any flags.
        </t>
        <t>
          The GOAWAY frame applies to the connection, not a specific stream.  An endpoint MUST treat
          a <x:ref>GOAWAY</x:ref> frame with a stream identifier other than 0x0 as a <xref
          target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>
        <t>
          The last stream identifier in the GOAWAY frame contains the highest numbered stream
          identifier for which the sender of the GOAWAY frame might have taken some action on, or
          might yet take action on.  All streams up to and including the identified stream might
          have been processed in some way.  The last stream identifier can be set to 0 if no streams
          were processed.
          <list style="hanging">
            <t hangText="Note:">
              In this context, "processed" means that some data from the stream was passed to some
              higher layer of software that might have taken some action as a result.
            </t>
          </list>
          If a connection terminates without a GOAWAY frame, the last stream identifier is
          effectively the highest possible stream identifier.
        </t>
        <t>
          On streams with lower or equal numbered identifiers that were not closed completely prior
          to the connection being closed, re-attempting requests, transactions, or any protocol
          activity is not possible, with the exception of idempotent actions like HTTP GET, PUT, or
          DELETE.  Any protocol activity that uses higher numbered streams can be safely retried
          using a new connection.
        </t>
        <t>
          Activity on streams numbered lower or equal to the last stream identifier might still
          complete successfully.  The sender of a GOAWAY frame might gracefully shut down a
          connection by sending a GOAWAY frame, maintaining the connection in an open state until
          all in-progress streams complete.
        </t>
        <t>
          An endpoint MAY send multiple GOAWAY frames if circumstances change.  For instance, an
          endpoint that sends GOAWAY with <x:ref>NO_ERROR</x:ref> during graceful shutdown could
          subsequently encounter an condition that requires immediate termination of the connection.
          The last stream identifier from the last GOAWAY frame received indicates which streams
          could have been acted upon.  Endpoints MUST NOT increase the value they send in the last
          stream identifier, since the peers might already have retried unprocessed requests on
          another connection.
        </t>
        <t>
          A client that is unable to retry requests loses all requests that are in flight when the
          server closes the connection.  This is especially true for intermediaries that might
          not be serving clients using HTTP/2.  A server that is attempting to gracefully shut down
          a connection SHOULD send an initial GOAWAY frame with the last stream identifier set to
          2<x:sup>31</x:sup>-1 and a <x:ref>NO_ERROR</x:ref> code.  This signals to the client that
          a shutdown is imminent and that no further requests can be initiated.  After waiting at
          least one round trip time, the server can send another GOAWAY frame with an updated last
          stream identifier.  This ensures that a connection can be cleanly shut down without losing
          requests.
        </t>

        <t>
          After sending a GOAWAY frame, the sender can discard frames for streams with identifiers
          higher than the identified last stream.  However, any frames that alter connection state
          cannot be completely ignored.  For instance, <x:ref>HEADERS</x:ref>,
          <x:ref>PUSH_PROMISE</x:ref> and <x:ref>CONTINUATION</x:ref> frames MUST be minimally
          processed to ensure the state maintained for header compression is consistent (see <xref
          target="HeaderBlock"/>); similarly DATA frames MUST be counted toward the connection flow
          control window.  Failure to process these frames can cause flow control or header
          compression state to become unsynchronized.
        </t>

        <t>
          The GOAWAY frame also contains a 32-bit <xref target="ErrorCodes">error code</xref> that
          contains the reason for closing the connection.
        </t>
        <t>
          Endpoints MAY append opaque data to the payload of any GOAWAY frame.  Additional debug
          data is intended for diagnostic purposes only and carries no semantic value.  Debug
          information could contain security- or privacy-sensitive data.  Logged or otherwise
          persistently stored debug data MUST have adequate safeguards to prevent unauthorized
          access.
        </t>
      </section>

      <section anchor="WINDOW_UPDATE" title="WINDOW_UPDATE">
        <t>
          The WINDOW_UPDATE frame (type=0x8) is used to implement flow control; see <xref
          target="FlowControl"/> for an overview.
        </t>
        <t>
          Flow control operates at two levels: on each individual stream and on the entire
          connection.
        </t>
        <t>
          Both types of flow control are hop-by-hop; that is, only between the two endpoints.
          Intermediaries do not forward WINDOW_UPDATE frames between dependent connections.
          However, throttling of data transfer by any receiver can indirectly cause the propagation
          of flow control information toward the original sender.
        </t>
        <t>
          Flow control only applies to frames that are identified as being subject to flow control.
          Of the frame types defined in this document, this includes only <x:ref>DATA</x:ref> frames.
          Frames that are exempt from flow control MUST be accepted and processed, unless the
          receiver is unable to assign resources to handling the frame.  A receiver MAY respond with
          a <xref target="StreamErrorHandler">stream error</xref> or <xref
          target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>FLOW_CONTROL_ERROR</x:ref> if it is unable to accept a frame.
        </t>
        <figure title="WINDOW_UPDATE Payload Format">
          <artwork type="inline"><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |R|              Window Size Increment (31)                     |
 +-+-------------------------------------------------------------+
]]></artwork>
        </figure>
        <t>
          The payload of a WINDOW_UPDATE frame is one reserved bit, plus an unsigned 31-bit integer
          indicating the number of octets that the sender can transmit in addition to the existing
          flow control window.  The legal range for the increment to the flow control window is 1 to
          2<x:sup>31</x:sup>-1 (0x7fffffff) octets.
        </t>
        <t>
          The WINDOW_UPDATE frame does not define any flags.
        </t>
        <t>
          The WINDOW_UPDATE frame can be specific to a stream or to the entire connection.  In the
          former case, the frame's stream identifier indicates the affected stream; in the latter,
          the value "0" indicates that the entire connection is the subject of the frame.
        </t>
        <t>
          A receiver MUST treat the receipt of a WINDOW_UPDATE frame with an flow control window
          increment of 0 as a <xref target="StreamErrorHandler">stream error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>; errors on the connection flow control window MUST be
          treated as a <xref target="ConnectionErrorHandler">connection error</xref>.
        </t>
        <t>
          WINDOW_UPDATE can be sent by a peer that has sent a frame bearing the END_STREAM flag.
          This means that a receiver could receive a WINDOW_UPDATE frame on a "half closed (remote)"
          or "closed" stream.  A receiver MUST NOT treat this as an error, see <xref
          target="StreamStates"/>.
        </t>
        <t>
          A receiver that receives a flow controlled frame MUST always account for its contribution
          against the connection flow control window, unless the receiver treats this as a <xref
          target="ConnectionErrorHandler">connection error</xref>.  This is necessary even if the
          frame is in error.  Since the sender counts the frame toward the flow control window, if
          the receiver does not, the flow control window at sender and receiver can become
          different.
        </t>

        <section title="The Flow Control Window">
          <t>
            Flow control in HTTP/2 is implemented using a window kept by each sender on every
            stream. The flow control window is a simple integer value that indicates how many octets
            of data the sender is permitted to transmit; as such, its size is a measure of the
            buffering capacity of the receiver.
          </t>
          <t>
            Two flow control windows are applicable: the stream flow control window and the
            connection flow control window.  The sender MUST NOT send a flow controlled frame with a
            length that exceeds the space available in either of the flow control windows advertised
            by the receiver.  Frames with zero length with the END_STREAM flag set (that is, an
            empty <x:ref>DATA</x:ref> frame) MAY be sent if there is no available space in either
            flow control window.
          </t>
          <t>
            For flow control calculations, the 9 octet frame header is not counted.
          </t>
          <t>
            After sending a flow controlled frame, the sender reduces the space available in both
            windows by the length of the transmitted frame.
          </t>
          <t>
            The receiver of a frame sends a WINDOW_UPDATE frame as it consumes data and frees up
            space in flow control windows.  Separate WINDOW_UPDATE frames are sent for the stream
            and connection level flow control windows.
          </t>
          <t>
            A sender that receives a WINDOW_UPDATE frame updates the corresponding window by the
            amount specified in the frame.
          </t>
          <t>
            A sender MUST NOT allow a flow control window to exceed 2<x:sup>31</x:sup>-1 octets.
            If a sender receives a WINDOW_UPDATE that causes a flow control window to exceed this
            maximum it MUST terminate either the stream or the connection, as appropriate.  For
            streams, the sender sends a <x:ref>RST_STREAM</x:ref> with the error code of
            <x:ref>FLOW_CONTROL_ERROR</x:ref> code; for the connection, a <x:ref>GOAWAY</x:ref>
            frame with a <x:ref>FLOW_CONTROL_ERROR</x:ref> code.
          </t>
          <t>
            Flow controlled frames from the sender and WINDOW_UPDATE frames from the receiver are
            completely asynchronous with respect to each other. This property allows a receiver to
            aggressively update the window size kept by the sender to prevent streams from stalling.
          </t>
        </section>

        <section anchor="InitialWindowSize" title="Initial Flow Control Window Size">
          <t>
            When an HTTP/2 connection is first established, new streams are created with an initial
            flow control window size of 65,535 octets. The connection flow control window is 65,535
            octets. Both endpoints can adjust the initial window size for new streams by including
            a value for <x:ref>SETTINGS_INITIAL_WINDOW_SIZE</x:ref> in the <x:ref>SETTINGS</x:ref>
            frame that forms part of the connection preface. The connection flow control window can
            only be changed using WINDOW_UPDATE frames.
          </t>
          <t>
            Prior to receiving a <x:ref>SETTINGS</x:ref> frame that sets a value for
            <x:ref>SETTINGS_INITIAL_WINDOW_SIZE</x:ref>, an endpoint can only use the default
            initial window size when sending flow controlled frames.  Similarly, the connection flow
            control window is set to the default initial window size until a WINDOW_UPDATE frame is
            received.
          </t>
          <t>
            A <x:ref>SETTINGS</x:ref> frame can alter the initial flow control window size for all
            current streams. When the value of <x:ref>SETTINGS_INITIAL_WINDOW_SIZE</x:ref> changes,
            a receiver MUST adjust the size of all stream flow control windows that it maintains by
            the difference between the new value and the old value.
          </t>
          <t>
            A change to <x:ref>SETTINGS_INITIAL_WINDOW_SIZE</x:ref> can cause the available space in
            a flow control window to become negative.  A sender MUST track the negative flow control
            window, and MUST NOT send new flow controlled frames until it receives WINDOW_UPDATE
            frames that cause the flow control window to become positive.
          </t>
          <t>
            For example, if the client sends 60KB immediately on connection establishment, and the
            server sets the initial window size to be 16KB, the client will recalculate the
            available flow control window to be -44KB on receipt of the <x:ref>SETTINGS</x:ref>
            frame.  The client retains a negative flow control window until WINDOW_UPDATE frames
            restore the window to being positive, after which the client can resume sending.
          </t>
          <t>
            A <x:ref>SETTINGS</x:ref> frame cannot alter the connection flow control window.
          </t>
          <t>
            An endpoint MUST treat a change to <x:ref>SETTINGS_INITIAL_WINDOW_SIZE</x:ref> that
            causes any flow control window to exceed the maximum size as a <xref
            target="ConnectionErrorHandler">connection error</xref> of type
            <x:ref>FLOW_CONTROL_ERROR</x:ref>.
          </t>
        </section>

        <section title="Reducing the Stream Window Size">
          <t>
            A receiver that wishes to use a smaller flow control window than the current size can
            send a new <x:ref>SETTINGS</x:ref> frame.  However, the receiver MUST be prepared to
            receive data that exceeds this window size, since the sender might send data that
            exceeds the lower limit prior to processing the <x:ref>SETTINGS</x:ref> frame.
          </t>
          <t>
            After sending a SETTINGS frame that reduces the initial flow control window size, a
            receiver has two options for handling streams that exceed flow control limits:
            <list style="numbers">
              <t>
                The receiver can immediately send <x:ref>RST_STREAM</x:ref> with
                <x:ref>FLOW_CONTROL_ERROR</x:ref> error code for the affected streams.
              </t>
              <t>
                The receiver can accept the streams and tolerate the resulting head of line
                blocking, sending WINDOW_UPDATE frames as it consumes data.
              </t>
            </list>
          </t>
        </section>
      </section>

      <section anchor="CONTINUATION" title="CONTINUATION">
        <t>
          The CONTINUATION frame (type=0x9) is used to continue a sequence of <xref
          target="HeaderBlock">header block fragments</xref>.  Any number of CONTINUATION frames can
          be sent on an existing stream, as long as the preceding frame is on the same stream and is
          a <x:ref>HEADERS</x:ref>, <x:ref>PUSH_PROMISE</x:ref> or CONTINUATION frame without the
          END_HEADERS flag set.
        </t>

        <figure title="CONTINUATION Frame Payload">
          <artwork type="inline"><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                   Header Block Fragment (*)                 ...
 +---------------------------------------------------------------+
]]></artwork>
        </figure>
        <t>
          The CONTINUATION frame payload contains a <xref target="HeaderBlock">header block
          fragment</xref>.
        </t>

        <t>
          The CONTINUATION frame defines the following flag:
          <list style="hanging">
            <x:lt hangText="END_HEADERS (0x4):">
              <t>
                Bit 3 being set indicates that this frame ends a <xref target="HeaderBlock">header
                block</xref>.
              </t>
              <t>
                If the END_HEADERS bit is not set, this frame MUST be followed by another
                CONTINUATION frame.  A receiver MUST treat the receipt of any other type of frame or
                a frame on a different stream as a <xref target="ConnectionErrorHandler">connection
                error</xref> of type <x:ref>PROTOCOL_ERROR</x:ref>.
              </t>
            </x:lt>
          </list>
        </t>

        <t>
          The CONTINUATION frame changes the connection state as defined in <xref
          target="HeaderBlock" />.
        </t>

        <t>
          CONTINUATION frames MUST be associated with a stream. If a CONTINUATION frame is received
          whose stream identifier field is 0x0, the recipient MUST respond with a <xref
          target="ConnectionErrorHandler">connection error</xref> of type PROTOCOL_ERROR.
        </t>

        <t>
          A CONTINUATION frame MUST be preceded by a <x:ref>HEADERS</x:ref>,
          <x:ref>PUSH_PROMISE</x:ref> or CONTINUATION frame without the END_HEADERS flag set.  A
          recipient that observes violation of this rule MUST respond with a <xref
          target="ConnectionErrorHandler"> connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>
      </section>
    </section>

    <section anchor="ErrorCodes" title="Error Codes">
      <t>
        Error codes are 32-bit fields that are used in <x:ref>RST_STREAM</x:ref> and
        <x:ref>GOAWAY</x:ref> frames to convey the reasons for the stream or connection error.
      </t>

      <t>
        Error codes share a common code space.  Some error codes apply only to either streams or the
        entire connection and have no defined semantics in the other context.
      </t>

      <t>
        The following error codes are defined:
        <list style="hanging">
          <t hangText="NO_ERROR (0x0):" anchor="NO_ERROR">
            The associated condition is not as a result of an error.  For example, a
            <x:ref>GOAWAY</x:ref> might include this code to indicate graceful shutdown of a
            connection.
          </t>
          <t hangText="PROTOCOL_ERROR (0x1):" anchor="PROTOCOL_ERROR">
            The endpoint detected an unspecific protocol error.  This error is for use when a more
            specific error code is not available.
          </t>
          <t hangText="INTERNAL_ERROR (0x2):" anchor="INTERNAL_ERROR">
            The endpoint encountered an unexpected internal error.
          </t>
          <t hangText="FLOW_CONTROL_ERROR (0x3):" anchor="FLOW_CONTROL_ERROR">
            The endpoint detected that its peer violated the flow control protocol.
          </t>
          <t hangText="SETTINGS_TIMEOUT (0x4):" anchor="SETTINGS_TIMEOUT">
            The endpoint sent a <x:ref>SETTINGS</x:ref> frame, but did not receive a response in a
            timely manner.  See <xref target="SettingsSync">Settings Synchronization</xref>.
          </t>
          <t hangText="STREAM_CLOSED (0x5):" anchor="STREAM_CLOSED">
            The endpoint received a frame after a stream was half closed.
          </t>
          <t hangText="FRAME_SIZE_ERROR (0x6):" anchor="FRAME_SIZE_ERROR">
            The endpoint received a frame with an invalid size.
          </t>
          <t hangText="REFUSED_STREAM (0x7):" anchor="REFUSED_STREAM">
            The endpoint refuses the stream prior to performing any application processing, see
            <xref target="Reliability"/> for details.
          </t>
          <t hangText="CANCEL (0x8):" anchor="CANCEL">
            Used by the endpoint to indicate that the stream is no longer needed.
          </t>
          <t hangText="COMPRESSION_ERROR (0x9):" anchor="COMPRESSION_ERROR">
            The endpoint is unable to maintain the header compression context for the connection.
          </t>
          <t hangText="CONNECT_ERROR (0xa):" anchor="CONNECT_ERROR">
            The connection established in response to a <xref target="CONNECT">CONNECT
            request</xref> was reset or abnormally closed.
          </t>
          <t hangText="ENHANCE_YOUR_CALM (0xb):" anchor="ENHANCE_YOUR_CALM">
            The endpoint detected that its peer is exhibiting a behavior that might be generating
            excessive load.
          </t>
          <t hangText="INADEQUATE_SECURITY (0xc):" anchor="INADEQUATE_SECURITY">
            The underlying transport has properties that do not meet minimum security
            requirements (see <xref target="TLSUsage"/>).
          </t>
        </list>
      </t>
      <t>
        Unknown or unsupported error codes MUST NOT trigger any special behavior.  These MAY be
        treated by an implementation as being equivalent to <x:ref>INTERNAL_ERROR</x:ref>.
      </t>
    </section>

    <section anchor="HTTPLayer" title="HTTP Message Exchanges">
      <t>
        HTTP/2 is intended to be as compatible as possible with current uses of HTTP. This means
        that, from the application perspective, the features of the protocol are largely
        unchanged. To achieve this, all request and response semantics are preserved, although the
        syntax of conveying those semantics has changed.
      </t>
      <t>
        Thus, the specification and requirements of HTTP/1.1 Semantics and Content <xref
        target="RFC7231"/>, Conditional Requests <xref target="RFC7232"/>, Range Requests <xref
        target="RFC7233"/>, Caching <xref target="RFC7234"/> and Authentication <xref
        target="RFC7235"/> are applicable to HTTP/2. Selected portions of HTTP/1.1 Message Syntax
        and Routing <xref target="RFC7230"/>, such as the HTTP and HTTPS URI schemes, are also
        applicable in HTTP/2, but the expression of those semantics for this protocol are defined
        in the sections below.
      </t>

      <section anchor="HttpSequence" title="HTTP Request/Response Exchange">
        <t>
          A client sends an HTTP request on a new stream, using a previously unused <xref
          target="StreamIdentifiers">stream identifier</xref>.  A server sends an HTTP response on
          the same stream as the request.
        </t>
        <t>
          An HTTP message (request or response) consists of:
          <list style="numbers">
            <t>
              for a response only, zero or more <x:ref>HEADERS</x:ref> frames (each followed by zero
              or more <x:ref>CONTINUATION</x:ref> frames) containing the message headers of
              informational (1xx) HTTP responses (see <xref target="RFC7230" x:fmt=","
              x:rel="#header.fields"/> and <xref target="RFC7231" x:fmt="," x:rel="#status.1xx"/>),
              and
            </t>
            <t>
              one <x:ref>HEADERS</x:ref> frame (followed by zero or more <x:ref>CONTINUATION</x:ref>
              frames) containing the message headers (see <xref target="RFC7230" x:fmt=","
              x:rel="#header.fields"/>), and
            </t>
            <t>
              zero or more <x:ref>DATA</x:ref> frames containing the message payload (see <xref
              target="RFC7230" x:fmt="," x:rel="#message.body"/>), and
            </t>
            <t>
              optionally, one <x:ref>HEADERS</x:ref> frame, followed by zero or more
              <x:ref>CONTINUATION</x:ref> frames containing the trailer-part, if present (see <xref
              target="RFC7230" x:fmt="," x:rel="#chunked.trailer.part"/>).
            </t>
          </list>
          The last frame in the sequence bears an END_STREAM flag, noting that a
          <x:ref>HEADERS</x:ref> frame bearing the END_STREAM flag can be followed by
          <x:ref>CONTINUATION</x:ref> frames that carry any remaining portions of the header block.
        </t>
        <t>
          Other frames (from any stream) MUST NOT occur between either <x:ref>HEADERS</x:ref> frame
          and any <x:ref>CONTINUATION</x:ref> frames that might follow.
        </t>

        <t>
          Trailing header fields are carried in a header block that also terminates the stream.
          That is, a sequence starting with a <x:ref>HEADERS</x:ref> frame, followed by zero or more
          <x:ref>CONTINUATION</x:ref> frames, where the <x:ref>HEADERS</x:ref> frame bears an
          END_STREAM flag.  Header blocks after the first that do not terminate the stream are not
          part of an HTTP request or response.
        </t>
        <t>
          A <x:ref>HEADERS</x:ref> frame (and associated <x:ref>CONTINUATION</x:ref> frames) can
          only appear at the start or end of a stream.  An endpoint that receives a
          <x:ref>HEADERS</x:ref> frame without the END_STREAM flag set after receiving a final
          (non-informational) status code MUST treat the corresponding request or response as <xref
          target="malformed">malformed</xref>.
        </t>

        <t>
          An HTTP request/response exchange fully consumes a single stream.  A request starts with
          the <x:ref>HEADERS</x:ref> frame that puts the stream into an "open" state. The request
          ends with a frame bearing END_STREAM, which causes the stream to become "half closed
          (local)" for the client and "half closed (remote)" for the server.  A response starts with
          a <x:ref>HEADERS</x:ref> frame and ends with a frame bearing END_STREAM, which places the
          stream in the "closed" state.
          <!-- Yes, the response might be completed before the request does, but that's not a detail
               we need to expand upon.  It's complicated enough explaining this as it is.  -->
        </t>

        <section anchor="informational-responses" title="Upgrading From HTTP/2">
          <t>
            HTTP/2 removes support for the 101 (Switching Protocols) informational status code
            (<xref target="RFC7231" x:fmt="," x:rel="#status.101"/>).
          </t>
          <t>
            The semantics of 101 (Switching Protocols) aren't applicable to a multiplexed protocol.
            Alternative protocols are able to use the same mechanisms that HTTP/2 uses to negotiate
            their use (see <xref target="starting"/>).
          </t>
        </section>

        <section anchor="HttpHeaders" title="HTTP Header Fields">
          <t>
            HTTP header fields carry information as a series of key-value pairs. For a listing of
            registered HTTP headers, see the Message Header Field Registry maintained at <eref
            target="https://www.iana.org/assignments/message-headers"/>.
          </t>

          <section anchor="PseudoHeaderFields" title="Pseudo-Header Fields">
            <t>
              While HTTP/1.x used the message start-line (see <xref target="RFC7230" x:fmt=","
              x:rel="#start.line"/>) to convey the target URI and method of the request, and the
              status code for the response, HTTP/2 uses special pseudo-header fields beginning with
              ':' character (ASCII 0x3a) for this purpose.
            </t>
            <t>
              Pseudo-header fields are not HTTP header fields. Endpoints MUST NOT generate
              pseudo-header fields other than those defined in this document.
            </t>
            <t>
              Pseudo-header fields are only valid in the context in which they are defined.
              Pseudo-header fields defined for requests MUST NOT appear in responses; pseudo-header
              fields defined for responses MUST NOT appear in requests.  Pseudo-header fields MUST
              NOT appear in trailers.  Endpoints MUST treat a request or response that contains
              undefined or invalid pseudo-header fields as <xref
              target="malformed">malformed</xref>.
            </t>
            <t>
              Just as in HTTP/1.x, header field names are strings of ASCII characters that are
              compared in a case-insensitive fashion. However, header field names MUST be converted
              to lowercase prior to their encoding in HTTP/2. A request or response containing
              uppercase header field names MUST be treated as <xref
              target="malformed">malformed</xref>.
            </t>
            <t>
              All pseudo-header fields MUST appear in the header block before regular header fields.
              Any request or response that contains a pseudo-header field that appears in a header
              block after a regular header field MUST be treated as <xref
              target="malformed">malformed</xref>.
            </t>
          </section>

          <section title="Connection-Specific Header Fields">
            <t>
              HTTP/2 does not use the <spanx style="verb">Connection</spanx> header field to
              indicate connection-specific header fields; in this protocol, connection-specific
              metadata is conveyed by other means.  An endpoint MUST NOT generate a HTTP/2 message
              containing connection-specific header fields; any message containing
              connection-specific header fields MUST be treated as <xref
              target="malformed">malformed</xref>.
            </t>
            <t>
              This means that an intermediary transforming an HTTP/1.x message to HTTP/2 will need
              to remove any header fields nominated by the Connection header field, along with the
              Connection header field itself. Such intermediaries SHOULD also remove other
              connection-specific header fields, such as Keep-Alive, Proxy-Connection,
              Transfer-Encoding and Upgrade, even if they are not nominated by Connection.
            </t>
            <t>
              One exception to this is the TE header field, which MAY be present in an HTTP/2
              request, but when it is MUST NOT contain any value other than "trailers".
            </t>
            <t>
              <list style="hanging">
                <t hangText="Note:">
                  HTTP/2 purposefully does not support upgrade to another protocol.  The handshake
                  methods described in <xref target="starting"/> are believed sufficient to
                  negotiate the use of alternative protocols.
                </t>
              </list>
            </t>
          </section>

          <section anchor="HttpRequest" title="Request Pseudo-Header Fields">
            <t>
              The following pseudo-header fields are defined for HTTP/2 requests:
              <list style="symbols">
                <x:lt>
                  <t>
                    The <spanx style="verb">:method</spanx> pseudo-header field includes the HTTP
                    method (<xref target="RFC7231" x:fmt="," x:rel="#methods"/>).
                  </t>
                </x:lt>
                <x:lt>
                  <t>
                    The <spanx style="verb">:scheme</spanx> pseudo-header field includes the scheme
                    portion of the target URI (<xref target="RFC3986" x:fmt="," x:sec="3.1"/>).
                  </t>
                  <t>
                    <spanx style="verb">:scheme</spanx> is not restricted to <spanx
                    style="verb">http</spanx> and <spanx style="verb">https</spanx> schemed URIs.  A
                    proxy or gateway can translate requests for non-HTTP schemes, enabling the use
                    of HTTP to interact with non-HTTP services.
                  </t>
                </x:lt>
                <x:lt>
                  <t>
                    The <spanx style="verb">:authority</spanx> pseudo-header field includes the
                    authority portion of the target URI (<xref target="RFC3986" x:fmt=","
                    x:sec="3.2"/>). The authority MUST NOT include the deprecated <spanx
                    style="verb">userinfo</spanx> subcomponent for <spanx style="verb">http</spanx>
                    or <spanx style="verb">https</spanx> schemed URIs.
                  </t>
                  <t>
                    To ensure that the HTTP/1.1 request line can be reproduced accurately, this
                    pseudo-header field MUST be omitted when translating from an HTTP/1.1 request
                    that has a request target in origin or asterisk form (see <xref
                    target="RFC7230" x:fmt="," x:rel="#request-target"/>). Clients that generate
                    HTTP/2 requests directly SHOULD use the <spanx>:authority</spanx> pseudo-header
                    field instead of the <spanx style="verb">Host</spanx> header field. An
                    intermediary that converts an HTTP/2 request to HTTP/1.1 MUST create a <spanx
                    style="verb">Host</spanx> header field if one is not present in a request by
                    copying the value of the <spanx style="verb">:authority</spanx> pseudo-header
                    field.
                  </t>
                </x:lt>
                <x:lt>
                  <t>
                    The <spanx style="verb">:path</spanx> pseudo-header field includes the path and
                    query parts of the target URI (the <spanx style="verb">path-absolute</spanx>
                    production from <xref target="RFC3986"/> and optionally a '?' character
                    followed by the <spanx style="verb">query</spanx> production, see <xref
                    target="RFC3986" x:fmt="," x:sec="3.3"/> and <xref target="RFC3986" x:fmt=","
                    x:sec="3.4"/>). A request in asterisk form includes the value '*' for the
                    <spanx style="verb">:path</spanx> pseudo-header field.
                  </t>
                  <t>
                    This pseudo-header field MUST NOT be empty for <spanx style="verb">http</spanx>
                    or <spanx style="verb">https</spanx> URIs; <spanx style="verb">http</spanx> or
                    <spanx style="verb">https</spanx> URIs that do not contain a path component
                    MUST include a value of '/'. The exception to this rule is an OPTIONS request
                    for an <spanx style="verb">http</spanx> or <spanx style="verb">https</spanx>
                    URI that does not include a path component; these MUST include a <spanx
                    style="verb">:path</spanx> pseudo-header field with a value of '*' (see <xref
                    target="RFC7230" x:fmt="," x:rel="#asterisk-form"/>).
                  </t>
                </x:lt>
              </list>
            </t>
            <t>
              All HTTP/2 requests MUST include exactly one valid value for the <spanx
              style="verb">:method</spanx>, <spanx style="verb">:scheme</spanx>, and <spanx
              style="verb">:path</spanx> pseudo-header fields, unless it is a <xref
              target="CONNECT">CONNECT request</xref>. An HTTP request that omits mandatory
              pseudo-header fields is <xref target="malformed">malformed</xref>.
            </t>
            <t>
              HTTP/2 does not define a way to carry the version identifier that is included in the
              HTTP/1.1 request line.
            </t>
          </section>

          <section anchor="HttpResponse" title="Response Pseudo-Header Fields">
            <t>
              For HTTP/2 responses, a single <spanx style="verb">:status</spanx> pseudo-header
              field is defined that carries the HTTP status code field (see <xref target="RFC7231"
              x:fmt="," x:rel="#status.codes"/>). This pseudo-header field MUST be included in all
              responses, otherwise the response is <xref target="malformed">malformed</xref>.
            </t>
            <t>
              HTTP/2 does not define a way to carry the version or reason phrase that is included in
              an HTTP/1.1 status line.
            </t>
          </section>

         <section anchor="CompressCookie" title="Compressing the Cookie Header Field">
            <t>
              The <xref target="COOKIE">Cookie header field</xref> can carry a significant amount of
              redundant data.
            </t>
            <t>
              The Cookie header field uses a semi-colon (";") to delimit cookie-pairs (or "crumbs").
              This header field doesn't follow the list construction rules in HTTP (see <xref
              target="RFC7230" x:fmt="," x:rel="#field.order"/>), which prevents cookie-pairs from
              being separated into different name-value pairs.  This can significantly reduce
              compression efficiency as individual cookie-pairs are updated.
            </t>
            <t>
              To allow for better compression efficiency, the Cookie header field MAY be split into
              separate header fields, each with one or more cookie-pairs.  If there are multiple
              Cookie header fields after decompression, these MUST be concatenated into a single
              octet string using the two octet delimiter of 0x3B, 0x20 (the ASCII string "; ")
              before being passed into a non-HTTP/2 context, such as an HTTP/1.1 connection, or a
              generic HTTP server application.
            </t>
            <figure>
              <preamble>
                Therefore, the following two lists of Cookie header fields are semantically
                equivalent.
              </preamble>
              <artwork type="inline"><![CDATA[
  cookie: a=b; c=d; e=f

  cookie: a=b
  cookie: c=d
  cookie: e=f
]]></artwork>
            </figure>
          </section>

          <section anchor="malformed" title="Malformed Requests and Responses">
            <t>
              A malformed request or response is one that is an otherwise valid sequence of HTTP/2
              frames, but is otherwise invalid due to the presence of extraneous frames, prohibited
              header fields, the absence of mandatory header fields, or the inclusion of uppercase
              header field names.
            </t>
            <t>
              A request or response that includes an entity body can include a <spanx
              style="verb">content-length</spanx> header field.  A request or response is also
              malformed if the value of a <spanx style="verb">content-length</spanx> header field
              does not equal the sum of the <x:ref>DATA</x:ref> frame payload lengths that form the
              body.  A response that is defined to have no payload, as described in <xref
              target="RFC7230" x:fmt="," x:rel="#header.content-length"/>, can have a non-zero
              <spanx style="verb">content-length</spanx> header field, even though no content is
              included in <x:ref>DATA</x:ref> frames.
            </t>
            <t>
              Intermediaries that process HTTP requests or responses (i.e., any intermediary not
              acting as a tunnel) MUST NOT forward a malformed request or response.  Malformed
              requests or responses that are detected MUST be treated as a <xref
              target="StreamErrorHandler">stream error</xref> of type <x:ref>PROTOCOL_ERROR</x:ref>.
            </t>
            <t>
              For malformed requests, a server MAY send an HTTP response prior to closing or
              resetting the stream.  Clients MUST NOT accept a malformed response. Note that these
              requirements are intended to protect against several types of common attacks against
              HTTP; they are deliberately strict, because being permissive can expose
              implementations to these vulnerabilities.
            </t>
          </section>
        </section>

        <section title="Examples">
          <t>
            This section shows HTTP/1.1 requests and responses, with illustrations of equivalent
            HTTP/2 requests and responses.
          </t>
          <t>
            An HTTP GET request includes request header fields and no body and is therefore
            transmitted as a single <x:ref>HEADERS</x:ref> frame, followed by zero or more
            <x:ref>CONTINUATION</x:ref> frames containing the serialized block of request header
            fields.  The <x:ref>HEADERS</x:ref> frame in the following has both the END_HEADERS and
            END_STREAM flags set; no <x:ref>CONTINUATION</x:ref> frames are sent:
          </t>

          <figure>
            <artwork type="inline"><![CDATA[
  GET /resource HTTP/1.1           HEADERS
  Host: example.org          ==>     + END_STREAM
  Accept: image/jpeg                 + END_HEADERS
                                       :method = GET
                                       :scheme = https
                                       :path = /resource
                                       host = example.org
                                       accept = image/jpeg
]]></artwork>
          </figure>

          <t>
            Similarly, a response that includes only response header fields is transmitted as a
            <x:ref>HEADERS</x:ref> frame (again, followed by zero or more
            <x:ref>CONTINUATION</x:ref> frames) containing the serialized block of response header
            fields.
          </t>

          <figure>
            <artwork type="inline"><![CDATA[
  HTTP/1.1 304 Not Modified        HEADERS
  ETag: "xyzzy"              ==>     + END_STREAM
  Expires: Thu, 23 Jan ...           + END_HEADERS
                                       :status = 304
                                       etag = "xyzzy"
                                       expires = Thu, 23 Jan ...
]]></artwork>
          </figure>

          <t>
            An HTTP POST request that includes request header fields and payload data is transmitted
            as one <x:ref>HEADERS</x:ref> frame, followed by zero or more
            <x:ref>CONTINUATION</x:ref> frames containing the request header fields, followed by one
            or more <x:ref>DATA</x:ref> frames, with the last <x:ref>CONTINUATION</x:ref> (or
            <x:ref>HEADERS</x:ref>) frame having the END_HEADERS flag set and the final
            <x:ref>DATA</x:ref> frame having the END_STREAM flag set:
          </t>

          <figure>
            <artwork type="inline"><![CDATA[
  POST /resource HTTP/1.1          HEADERS
  Host: example.org          ==>     - END_STREAM
  Content-Type: image/jpeg           - END_HEADERS
  Content-Length: 123                  :method = POST
                                       :path = /resource
  {binary data}                        :scheme = https

                                   CONTINUATION
                                     + END_HEADERS
                                       content-type = image/jpeg
                                       host = example.org
                                       content-length = 123

                                   DATA
                                     + END_STREAM
                                   {binary data}
]]></artwork>
            <postamble>
              Note that data contributing to any given header field could be spread between header
              block fragments.  The allocation of header fields to frames in this example is
              illustrative only.
            </postamble>
          </figure>

          <t>
            A response that includes header fields and payload data is transmitted as a
            <x:ref>HEADERS</x:ref> frame, followed by zero or more <x:ref>CONTINUATION</x:ref>
            frames, followed by one or more <x:ref>DATA</x:ref> frames, with the last
            <x:ref>DATA</x:ref> frame in the sequence having the END_STREAM flag set:
          </t>

          <figure>
            <artwork type="inline"><![CDATA[
  HTTP/1.1 200 OK                  HEADERS
  Content-Type: image/jpeg   ==>     - END_STREAM
  Content-Length: 123                + END_HEADERS
                                       :status = 200
  {binary data}                        content-type = image/jpeg
                                       content-length = 123

                                   DATA
                                     + END_STREAM
                                   {binary data}
]]></artwork>
          </figure>

          <t>
            Trailing header fields are sent as a header block after both the request or response
            header block and all the <x:ref>DATA</x:ref> frames have been sent.  The
            <x:ref>HEADERS</x:ref> frame starting the trailers header block has the END_STREAM flag
            set.
          </t>

          <figure>
            <artwork type="inline"><![CDATA[
  HTTP/1.1 200 OK                  HEADERS
  Content-Type: image/jpeg   ==>     - END_STREAM
  Transfer-Encoding: chunked         + END_HEADERS
  Trailer: Foo                         :status = 200
                                       content-length = 123
  123                                  content-type = image/jpeg
  {binary data}                        trailer = Foo
  0
  Foo: bar                         DATA
                                     - END_STREAM
                                   {binary data}

                                   HEADERS
                                     + END_STREAM
                                     + END_HEADERS
                                       foo = bar
]]></artwork>
          </figure>


          <figure>
           <preamble>
             An informational response using a 1xx status code other than 101 is transmitted as a
             <x:ref>HEADERS</x:ref> frame, followed by zero or more <x:ref>CONTINUATION</x:ref>
             frames:
           </preamble>
           <artwork type="inline"><![CDATA[
  HTTP/1.1 103 BAR                 HEADERS
  Extension-Field: bar       ==>     - END_STREAM
                                     + END_HEADERS
                                       :status = 103
                                       extension-field = bar
]]></artwork>
 </figure>
        </section>

        <section anchor="Reliability" title="Request Reliability Mechanisms in HTTP/2">
          <t>
            In HTTP/1.1, an HTTP client is unable to retry a non-idempotent request when an error
            occurs, because there is no means to determine the nature of the error.  It is possible
            that some server processing occurred prior to the error, which could result in
            undesirable effects if the request were reattempted.
          </t>
          <t>
            HTTP/2 provides two mechanisms for providing a guarantee to a client that a request has
            not been processed:
            <list style="symbols">
              <t>
                The <x:ref>GOAWAY</x:ref> frame indicates the highest stream number that might have
                been processed.  Requests on streams with higher numbers are therefore guaranteed to
                be safe to retry.
              </t>
              <t>
                The <x:ref>REFUSED_STREAM</x:ref> error code can be included in a
                <x:ref>RST_STREAM</x:ref> frame to indicate that the stream is being closed prior to
                any processing having occurred.  Any request that was sent on the reset stream can
                be safely retried.
              </t>
            </list>
          </t>
          <t>
            Requests that have not been processed have not failed; clients MAY automatically retry
            them, even those with non-idempotent methods.
          </t>
          <t>
            A server MUST NOT indicate that a stream has not been processed unless it can guarantee
            that fact.  If frames that are on a stream are passed to the application layer for any
            stream, then <x:ref>REFUSED_STREAM</x:ref> MUST NOT be used for that stream, and a
            <x:ref>GOAWAY</x:ref> frame MUST include a stream identifier that is greater than or
            equal to the given stream identifier.
          </t>
          <t>
            In addition to these mechanisms, the <x:ref>PING</x:ref> frame provides a way for a
            client to easily test a connection.  Connections that remain idle can become broken as
            some middleboxes (for instance, network address translators, or load balancers) silently
            discard connection bindings.  The <x:ref>PING</x:ref> frame allows a client to safely
            test whether a connection is still active without sending a request.
          </t>
        </section>
      </section>

      <section anchor="PushResources" title="Server Push">
        <t>
          HTTP/2 allows a server to pre-emptively send (or "push") responses (along with
          corresponding "promised" requests) to a client in association with a previous
          client-initiated request. This can be useful when the server knows the client will need
          to have those responses available in order to fully process the response to the original
          request.
        </t>

        <t>
          Pushing additional message exchanges in this fashion is optional, and is negotiated
          between individual endpoints. The <x:ref>SETTINGS_ENABLE_PUSH</x:ref> setting can be set
          to 0 to indicate that server push is disabled.
        </t>
        <t>
          Promised requests MUST be cacheable (see <xref target="RFC7231" x:fmt=","
          x:rel="#cacheable.methods"/>), MUST be safe (see <xref target="RFC7231" x:fmt=","
          x:rel="#safe.methods"/>) and MUST NOT include a request body. Clients that receive a
          promised request that is not cacheable, unsafe or that includes a request body MUST
          reset the stream with a <xref target="StreamErrorHandler">stream error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>
        <t>
          Pushed responses that are cacheable (see <xref target="RFC7234" x:fmt=","
          x:rel="#response.cacheability"/>) can be stored by the client, if it implements a HTTP
          cache.  Pushed responses are considered successfully validated on the origin server (e.g.,
          if the "no-cache" cache response directive <xref target="RFC7234" x:fmt=","
          x:rel="#cache-response-directive"/> is present) while the stream identified by the
          promised stream ID is still open.
        </t>
        <t>
          Pushed responses that are not cacheable MUST NOT be stored by any HTTP cache. They MAY
          be made available to the application separately.
        </t>
        <t>
          An intermediary can receive pushes from the server and choose not to forward them on to
          the client. In other words, how to make use of the pushed information is up to that
          intermediary. Equally, the intermediary might choose to make additional pushes to the
          client, without any action taken by the server.
        </t>
        <t>
          A client cannot push. Thus, servers MUST treat the receipt of a
          <x:ref>PUSH_PROMISE</x:ref> frame as a <xref target="ConnectionErrorHandler">connection
          error</xref> of type <x:ref>PROTOCOL_ERROR</x:ref>. Clients MUST reject any attempt to
          change the <x:ref>SETTINGS_ENABLE_PUSH</x:ref> setting to a value other than 0 by treating
          the message as a <xref target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>PROTOCOL_ERROR</x:ref>.
        </t>

        <section anchor="PushRequests" title="Push Requests">
          <t>
            Server push is semantically equivalent to a server responding to a request; however, in
            this case that request is also sent by the server, as a <x:ref>PUSH_PROMISE</x:ref>
            frame.
          </t>
          <t>
            The <x:ref>PUSH_PROMISE</x:ref> frame includes a header block that contains a complete
            set of request header fields that the server attributes to the request. It is not
            possible to push a response to a request that includes a request body.
          </t>

          <t>
            Pushed responses are always associated with an explicit request from the client. The
            <x:ref>PUSH_PROMISE</x:ref> frames sent by the server are sent on that explicit
            request's stream. The <x:ref>PUSH_PROMISE</x:ref> frame also includes a promised stream
            identifier, chosen from the stream identifiers available to the server (see <xref
            target="StreamIdentifiers"/>).
          </t>

          <t>
            The header fields in <x:ref>PUSH_PROMISE</x:ref> and any subsequent
            <x:ref>CONTINUATION</x:ref> frames MUST be a valid and complete set of <xref
            target="HttpRequest">request header fields</xref>.  The server MUST include a method in
            the <spanx style="verb">:method</spanx> header field that is safe and cacheable.  If a
            client receives a <x:ref>PUSH_PROMISE</x:ref> that does not include a complete and valid
            set of header fields, or the <spanx style="verb">:method</spanx> header field identifies
            a method that is not safe, it MUST respond with a <xref
            target="StreamErrorHandler">stream error</xref> of type <x:ref>PROTOCOL_ERROR</x:ref>.
          </t>

          <t>
            The server SHOULD send <x:ref>PUSH_PROMISE</x:ref> (<xref target="PUSH_PROMISE"/>)
            frames prior to sending any frames that reference the promised responses. This avoids a
            race where clients issue requests prior to receiving any <x:ref>PUSH_PROMISE</x:ref>
            frames.
          </t>
          <t>
            For example, if the server receives a request for a document containing embedded links
            to multiple image files, and the server chooses to push those additional images to the
            client, sending push promises before the <x:ref>DATA</x:ref> frames that contain the
            image links ensures that the client is able to see the promises before discovering
            embedded links. Similarly, if the server pushes responses referenced by the header block
            (for instance, in Link header fields), sending the push promises before sending the
            header block ensures that clients do not request them.
          </t>

          <t>
            <x:ref>PUSH_PROMISE</x:ref> frames MUST NOT be sent by the client.
          </t>
          <t>
            <x:ref>PUSH_PROMISE</x:ref> frames can be sent by the server in response to any
            client-initiated stream, but the stream MUST be in either the "open" or "half closed
            (remote)" state with respect to the server.  <x:ref>PUSH_PROMISE</x:ref> frames are
            interspersed with the frames that comprise a response, though they cannot be
            interspersed with <x:ref>HEADERS</x:ref> and <x:ref>CONTINUATION</x:ref> frames that
            comprise a single header block.
          </t>
          <t>
            Sending a <x:ref>PUSH_PROMISE</x:ref> frame creates a new stream and puts the stream
            into the “reserved (local)” state for the server and the “reserved (remote)” state for
            the client.
          </t>
        </section>

        <section anchor="PushResponses" title="Push Responses">
          <t>
            After sending the <x:ref>PUSH_PROMISE</x:ref> frame, the server can begin delivering the
            pushed response as a <xref target="HttpResponse">response</xref> on a server-initiated
            stream that uses the promised stream identifier.  The server uses this stream to
            transmit an HTTP response, using the same sequence of frames as defined in <xref
            target="HttpSequence"/>.  This stream becomes <xref target="StreamStates">"half closed"
            to the client</xref> after the initial <x:ref>HEADERS</x:ref> frame is sent.
          </t>

          <t>
            Once a client receives a <x:ref>PUSH_PROMISE</x:ref> frame and chooses to accept the
            pushed response, the client SHOULD NOT issue any requests for the promised response
            until after the promised stream has closed.
          </t>

          <t>
            If the client determines, for any reason, that it does not wish to receive the pushed
            response from the server, or if the server takes too long to begin sending the promised
            response, the client can send an <x:ref>RST_STREAM</x:ref> frame, using either the
            <x:ref>CANCEL</x:ref> or <x:ref>REFUSED_STREAM</x:ref> codes, and referencing the pushed
            stream's identifier.
          </t>
          <t>
            A client can use the <x:ref>SETTINGS_MAX_CONCURRENT_STREAMS</x:ref> setting to limit the
            number of responses that can be concurrently pushed by a server.  Advertising a
            <x:ref>SETTINGS_MAX_CONCURRENT_STREAMS</x:ref> value of zero disables server push by
            preventing the server from creating the necessary streams.  This does not prohibit a
            server from sending <x:ref>PUSH_PROMISE</x:ref> frames; clients need to reset any
            promised streams that are not wanted.
          </t>

          <t>
            Clients receiving a pushed response MUST validate that either the server is
            authoritative (see <xref target="authority"/>), or the proxy that provided the pushed
            response is configured for the corresponding request. For example, a server that offers
            a certificate for only the <spanx style="verb">example.com</spanx> DNS-ID or Common Name
            is not permitted to push a response for <spanx
            style="verb">https://www.example.org/doc</spanx>.
          </t>
          <t>
            The response for a <x:ref>PUSH_PROMISE</x:ref> stream begins with a
            <x:ref>HEADERS</x:ref> frame, which immediately puts the stream into the “half closed
            (remote)” state for the server and “half closed (local)” state for the client, and ends
            with a frame bearing END_STREAM, which places the stream in the "closed" state.
            <list style="hanging">
              <t hangText="Note:">
                The client never sends a frame with the END_STREAM flag for a server push.
              </t>
            </list>
          </t>
        </section>

      </section>

      <section anchor="CONNECT" title="The CONNECT Method">
        <t>
          In HTTP/1.x, the pseudo-method CONNECT (<xref target="RFC7231" x:fmt=","
          x:rel="#CONNECT"/>) is used to convert an HTTP connection into a tunnel to a remote host.
          CONNECT is primarily used with HTTP proxies to establish a TLS session with an origin
          server for the purposes of interacting with <spanx style="verb">https</spanx> resources.
        </t>
        <t>
          In HTTP/2, the CONNECT method is used to establish a tunnel over a single HTTP/2 stream to
          a remote host, for similar purposes. The HTTP header field mapping works as defined in
          <xref target="HttpRequest">Request Header Fields</xref>, with a few
          differences. Specifically:
          <list style="symbols">
            <t>
              The <spanx style="verb">:method</spanx> header field is set to <spanx
              style="verb">CONNECT</spanx>.
            </t>
            <t>
              The <spanx style="verb">:scheme</spanx> and <spanx style="verb">:path</spanx> header
              fields MUST be omitted.
            </t>
            <t>
              The <spanx style="verb">:authority</spanx> header field contains the host and port to
              connect to (equivalent to the authority-form of the request-target of CONNECT
              requests, see <xref target="RFC7230" x:fmt="," x:rel="#request-target"/>).
            </t>
          </list>
        </t>
        <t>
          A proxy that supports CONNECT establishes a <xref target="TCP">TCP connection</xref> to
          the server identified in the <spanx style="verb">:authority</spanx> header field. Once
          this connection is successfully established, the proxy sends a <x:ref>HEADERS</x:ref>
          frame containing a 2xx series status code to the client, as defined in <xref
          target="RFC7231" x:fmt="," x:rel="#CONNECT"/>.
        </t>
        <t>
          After the initial <x:ref>HEADERS</x:ref> frame sent by each peer, all subsequent
          <x:ref>DATA</x:ref> frames correspond to data sent on the TCP connection.  The payload of
          any <x:ref>DATA</x:ref> frames sent by the client is transmitted by the proxy to the TCP
          server; data received from the TCP server is assembled into <x:ref>DATA</x:ref> frames by
          the proxy.  Frame types other than <x:ref>DATA</x:ref> or stream management frames
          (<x:ref>RST_STREAM</x:ref>, <x:ref>WINDOW_UPDATE</x:ref>, and <x:ref>PRIORITY</x:ref>)
          MUST NOT be sent on a connected stream, and MUST be treated as a <xref
          target="StreamErrorHandler">stream error</xref> if received.
        </t>
        <t>
          The TCP connection can be closed by either peer.  The END_STREAM flag on a
          <x:ref>DATA</x:ref> frame is treated as being equivalent to the TCP FIN bit.  A client is
          expected to send a <x:ref>DATA</x:ref> frame with the END_STREAM flag set after receiving
          a frame bearing the END_STREAM flag.  A proxy that receives a <x:ref>DATA</x:ref> frame
          with the END_STREAM flag set sends the attached data with the FIN bit set on the last TCP
          segment.  A proxy that receives a TCP segment with the FIN bit set sends a
          <x:ref>DATA</x:ref> frame with the END_STREAM flag set.  Note that the final TCP segment
          or <x:ref>DATA</x:ref> frame could be empty.
        </t>
        <t>
          A TCP connection error is signaled with <x:ref>RST_STREAM</x:ref>.  A proxy treats any
          error in the TCP connection, which includes receiving a TCP segment with the RST bit set,
          as a <xref target="StreamErrorHandler">stream error</xref> of type
          <x:ref>CONNECT_ERROR</x:ref>.  Correspondingly, a proxy MUST send a TCP segment with the
          RST bit set if it detects an error with the stream or the HTTP/2 connection.
        </t>
      </section>
    </section>

    <section anchor="HttpExtra" title="Additional HTTP Requirements/Considerations">
      <t>
        This section outlines attributes of the HTTP protocol that improve interoperability, reduce
        exposure to known security vulnerabilities, or reduce the potential for implementation
        variation.
      </t>

      <section title="Connection Management">
        <t>
          HTTP/2 connections are persistent.  For best performance, it is expected clients will not
          close connections until it is determined that no further communication with a server is
          necessary (for example, when a user navigates away from a particular web page), or until
          the server closes the connection.
        </t>
        <t>
          Clients SHOULD NOT open more than one HTTP/2 connection to a given host and port pair,
          where host is derived from a URI, a selected <xref target="ALT-SVC">alternative
          service</xref>, or a configured proxy.
        </t>
        <t>
          A client can create additional connections as replacements, either to replace connections
          that are near to exhausting the available <xref target="StreamIdentifiers">stream
          identifier space</xref>, to refresh the keying material for a TLS connection, or to
          replace connections that have encountered <xref
          target="ConnectionErrorHandler">errors</xref>.
        </t>
        <t>
          A client MAY open multiple connections to the same IP address and TCP port using different
          <xref target="TLS-EXT">Server Name Indication</xref> values or to provide different TLS
          client certificates, but SHOULD avoid creating multiple connections with the same
          configuration.
        </t>
        <t>
          Servers are encouraged to maintain open connections for as long as possible, but are
          permitted to terminate idle connections if necessary.  When either endpoint chooses to
          close the transport-layer TCP connection, the terminating endpoint SHOULD first send a
          <x:ref>GOAWAY</x:ref> (<xref target="GOAWAY"/>) frame so that both endpoints can reliably
          determine whether previously sent frames have been processed and gracefully complete or
          terminate any necessary remaining tasks.
        </t>

        <section anchor="reuse" title="Connection Reuse">
          <t>
            Connections that are made to an origin servers, either directly or through a tunnel
            created using the <xref target="CONNECT">CONNECT method</xref> MAY be reused for
            requests with multiple different URI authority components.  A connection can be reused
            as long as the origin server is <xref target="authority">authoritative</xref>.  For
            <spanx style="verb">http</spanx> resources, this depends on the host having resolved to
            the same IP address.
          </t>
          <t>
            For <spanx style="verb">https</spanx> resources, connection reuse additionally depends
            on having a certificate that is valid for the host in the URI.  An origin server might
            offer a certificate with multiple <spanx style="verb">subjectAltName</spanx> attributes,
            or names with wildcards, one of which is valid for the authority in the URI.  For
            example, a certificate with a <spanx style="verb">subjectAltName</spanx> of <spanx
            style="verb">*.example.com</spanx> might permit the use of the same connection for
            requests to URIs starting with <spanx style="verb">https://a.example.com/</spanx> and
            <spanx style="verb">https://b.example.com/</spanx>.
          </t>
          <t>
            In some deployments, reusing a connection for multiple origins can result in requests
            being directed to the wrong origin server.  For example, TLS termination might be
            performed by a middlebox that uses the TLS <xref target="TLS-EXT">Server Name Indication
            (SNI)</xref> extension to select an origin server.  This means that it is possible
            for clients to send confidential information to servers that might not be the intended
            target for the request, even though the server is otherwise authoritative.
          </t>
          <t>
            A server that does not wish clients to reuse connections can indicate that it is not
            authoritative for a request by sending a 421 (Misdirected Request) status code in response
            to the request (see <xref target="MisdirectedRequest"/>).
          </t>
          <t>
            A client that is configured to use a proxy over HTTP/2 directs requests to that proxy
            through a single connection.  That is, all requests sent via a proxy reuse the
            connection to the proxy.
          </t>
        </section>

        <section anchor="MisdirectedRequest" title="The 421 (Misdirected Request) Status Code">
          <t>
            The 421 (Misdirected Request) status code indicates that the request was directed at a
            server that is not able to produce a response.  This can be sent by a server that is not
            configured to produce responses for the combination of scheme and authority that are
            included in the request URI.
          </t>
          <t>
            Clients receiving a 421 (Misdirected Request) response from a server MAY retry the
            request - whether the request method is idempotent or not - over a different connection.
            This is possible if a connection is reused (<xref target="reuse"/>) or if an alternative
            service is selected (<xref target="ALT-SVC"/>).
          </t>
          <t>
            This status code MUST NOT be generated by proxies.
          </t>
          <t>
            A 421 response is cacheable by default; i.e., unless otherwise indicated by the method
            definition or explicit cache controls (see <xref target="RFC7234"
            x:rel="#heuristic.freshness" x:fmt="of"/>).
          </t>
        </section>
      </section>

      <section title="Use of TLS Features" anchor="TLSUsage">
        <t>
          Implementations of HTTP/2 MUST support <xref target="TLS12">TLS 1.2</xref> for HTTP/2 over
          TLS.  The general TLS usage guidance in <xref target="TLSBCP"/> SHOULD be followed, with
          some additional restrictions that are specific to HTTP/2.
        </t>

        <t>
          An implementation of HTTP/2 over TLS MUST use TLS 1.2 or higher with the restrictions on
          feature set and cipher suite described in this section.  Due to implementation
          limitations, it might not be possible to fail TLS negotiation.  An endpoint MUST
          immediately terminate an HTTP/2 connection that does not meet these minimum requirements
          with a <xref target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>INADEQUATE_SECURITY</x:ref>.
        </t>

        <section anchor="TLSFeatures" title="TLS Features">
          <t>
            The TLS implementation MUST support the <xref target="TLS-EXT">Server Name Indication
            (SNI)</xref> extension to TLS. HTTP/2 clients MUST indicate the target domain name when
            negotiating TLS.
          </t>
          <t>
            The TLS implementation MUST disable compression.  TLS compression can lead to the
            exposure of information that would not otherwise be revealed <xref target="RFC3749"/>.
            Generic compression is unnecessary since HTTP/2 provides compression features that are
            more aware of context and therefore likely to be more appropriate for use for
            performance, security or other reasons.
          </t>
          <t>
            The TLS implementation MUST disable renegotiation.  An endpoint MUST treat a TLS
            renegotiation as a <xref target="ConnectionErrorHandler">connection error</xref> of type
            <x:ref>PROTOCOL_ERROR</x:ref>.  Note that disabling renegotiation can result in
            long-lived connections becoming unusable due to limits on the number of messages the
            underlying cipher suite can encipher.
          </t>
          <t>
            A client MAY use renegotiation to provide confidentiality protection for client
            credentials offered in the handshake, but any renegotiation MUST occur prior to sending
            the connection preface.  A server SHOULD request a client certificate if it sees a
            renegotiation request immediately after establishing a connection.
          </t>
          <t>
            This effectively prevents the use of renegotiation in response to a request for a
            specific protected resource.  A future specification might provide a way to support this
            use case. <!-- <cref> We are tracking this in a non-blocking fashion in issue #496 and
            with a new draft. -->
          </t>
        </section>

        <section title="TLS Cipher Suites">
          <t>
            The set of TLS cipher suites that are permitted in HTTP/2 is restricted.  HTTP/2 MUST
            only be used with cipher suites that have ephemeral key exchange, such as the <xref
            target="TLS12">ephemeral Diffie-Hellman (DHE)</xref> or the <xref
            target="RFC4492">elliptic curve variant (ECDHE)</xref>.  Ephemeral key exchange MUST
            have a minimum size of 2048 bits for DHE or security level of 128 bits for ECDHE.
            Clients MUST accept DHE sizes of up to 4096 bits.  HTTP MUST NOT be used with cipher
            suites that use stream or block ciphers.  Authenticated Encryption with Additional Data
            (AEAD) modes, such as the <xref target="RFC5288">Galois Counter Model (GCM) mode for
            AES</xref> are acceptable.
          </t>
          <t>
            The effect of these restrictions is that TLS 1.2 implementations could have
            non-intersecting sets of available cipher suites, since these prevent the use of the
            cipher suite that TLS 1.2 makes mandatory.  To avoid this problem, implementations of
            HTTP/2 that use TLS 1.2 MUST support TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 <xref
            target="TLS-ECDHE"/> with P256 <xref target="FIPS186"/>.
          </t>
          <t>
            Clients MAY advertise support of cipher suites that are prohibited by the above
            restrictions in order to allow for connection to servers that do not support HTTP/2.
            This enables a fallback to protocols without these constraints without the additional
            latency imposed by using a separate connection for fallback.
          </t>
        </section>
      </section>
    </section>

    <section anchor="security" title="Security Considerations">
      <section title="Server Authority" anchor="authority">
        <t>
          HTTP/2 relies on the HTTP/1.1 definition of authority for determining whether a server is
          authoritative in providing a given response, see <xref target="RFC7230" x:fmt=","
          x:rel="#establishing.authority"/>.  This relies on local name resolution for the "http"
          URI scheme, and the authenticated server identity for the "https" scheme (see <xref
          target="RFC2818" x:fmt="," x:sec="3"/>).
        </t>
      </section>

      <section title="Cross-Protocol Attacks">
        <t>
          In a cross-protocol attack, an attacker causes a client to initiate a transaction in one
          protocol toward a server that understands a different protocol.  An attacker might be able
          to cause the transaction to appear as valid transaction in the second protocol.  In
          combination with the capabilities of the web context, this can be used to interact with
          poorly protected servers in private networks.
        </t>
        <t>
          Completing a TLS handshake with an ALPN identifier for HTTP/2 can be considered sufficient
          protection against cross protocol attacks.  ALPN provides a positive indication that a
          server is willing to proceed with HTTP/2, which prevents attacks on other TLS-based
          protocols.
        </t>
        <t>
          The encryption in TLS makes it difficult for attackers to control the data which could be
          used in a cross-protocol attack on a cleartext protocol.
        </t>
        <t>
          The cleartext version of HTTP/2 has minimal protection against cross-protocol attacks.
          The <xref target="ConnectionHeader">connection preface</xref> contains a string that is
          designed to confuse HTTP/1.1 servers, but no special protection is offered for other
          protocols.  A server that is willing to ignore parts of an HTTP/1.1 request containing an
          Upgrade header field in addition to the client connection preface could be exposed to a
          cross-protocol attack.
        </t>
      </section>

      <section title="Intermediary Encapsulation Attacks">
        <t>
          HTTP/2 header field names and values are encoded as sequences of octets with a length
          prefix.  This enables HTTP/2 to carry any string of octets as the name or value of a
          header field.  An intermediary that translates HTTP/2 requests or responses into HTTP/1.1
          directly could permit the creation of corrupted HTTP/1.1 messages.  An attacker might
          exploit this behavior to cause the intermediary to create HTTP/1.1 messages with illegal
          header fields, extra header fields, or even new messages that are entirely falsified.
        </t>
        <t>
          Header field names or values that contain characters not permitted by HTTP/1.1, including
          carriage return (ASCII 0xd) or line feed (ASCII 0xa) MUST NOT be translated verbatim by an
          intermediary, as stipulated in <xref target="RFC7230" x:rel="#field.parsing" x:fmt=","/>.
        </t>
        <t>
          Translation from HTTP/1.x to HTTP/2 does not produce the same opportunity to an attacker.
          Intermediaries that perform translation to HTTP/2 MUST remove any instances of the <spanx
          style="verb">obs-fold</spanx> production from header field values.
        </t>
      </section>

      <section title="Cacheability of Pushed Responses">
        <t>
          Pushed responses do not have an explicit request from the client; the request
          is provided by the server in the <x:ref>PUSH_PROMISE</x:ref> frame.
        </t>
        <t>
          Caching responses that are pushed is possible based on the guidance provided by the origin
          server in the Cache-Control header field.  However, this can cause issues if a single
          server hosts more than one tenant.  For example, a server might offer multiple users each
          a small portion of its URI space.
        </t>
        <t>
          Where multiple tenants share space on the same server, that server MUST ensure that
          tenants are not able to push representations of resources that they do not have authority
          over.  Failure to enforce this would allow a tenant to provide a representation that would
          be served out of cache, overriding the actual representation that the authoritative tenant
          provides.
        </t>
        <t>
          Pushed responses for which an origin server is not authoritative (see
          <xref target="authority"/>) are never cached or used.
        </t>
      </section>

      <section anchor="dos" title="Denial of Service Considerations">
        <t>
          An HTTP/2 connection can demand a greater commitment of resources to operate than a
          HTTP/1.1 connection.  The use of header compression and flow control depend on a
          commitment of resources for storing a greater amount of state.  Settings for these
          features ensure that memory commitments for these features are strictly bounded.
        </t>
        <t>
          The number of <x:ref>PUSH_PROMISE</x:ref> frames is not constrained in the same fashion.
          A client that accepts server push SHOULD limit the number of streams it allows to be in
          the "reserved (remote)" state.  Excessive number of server push streams can be treated as
          a <xref target="StreamErrorHandler">stream error</xref> of type
          <x:ref>ENHANCE_YOUR_CALM</x:ref>.
        </t>
        <t>
          Processing capacity cannot be guarded as effectively as state capacity.
        </t>
        <t>
          The <x:ref>SETTINGS</x:ref> frame can be abused to cause a peer to expend additional
          processing time. This might be done by pointlessly changing SETTINGS parameters, setting
          multiple undefined parameters, or changing the same setting multiple times in the same
          frame.  <x:ref>WINDOW_UPDATE</x:ref> or <x:ref>PRIORITY</x:ref> frames can be abused to
          cause an unnecessary waste of resources.
        </t>
        <t>
          Large numbers of small or empty frames can be abused to cause a peer to expend time
          processing frame headers.  Note however that some uses are entirely legitimate, such as
          the sending of an empty <x:ref>DATA</x:ref> frame to end a stream.
        </t>
        <t>
          Header compression also offers some opportunities to waste processing resources; see <xref
          target="COMPRESSION" x:fmt="of" x:rel="#Security"/> for more details on potential abuses.
        </t>
        <t>
          Limits in <x:ref>SETTINGS</x:ref> parameters cannot be reduced instantaneously, which
          leaves an endpoint exposed to behavior from a peer that could exceed the new limits. In
          particular, immediately after establishing a connection, limits set by a server are not
          known to clients and could be exceeded without being an obvious protocol violation.
        </t>
        <t>
          All these features - i.e., <x:ref>SETTINGS</x:ref> changes, small frames, header
          compression - have legitimate uses.  These features become a burden only when they are
          used unnecessarily or to excess.
        </t>
        <t>
          An endpoint that doesn't monitor this behavior exposes itself to a risk of denial of
          service attack.  Implementations SHOULD track the use of these features and set limits on
          their use.  An endpoint MAY treat activity that is suspicious as a <xref
          target="ConnectionErrorHandler">connection error</xref> of type
          <x:ref>ENHANCE_YOUR_CALM</x:ref>.
        </t>

        <section anchor="MaxHeaderBlock" title="Limits on Header Block Size">
          <t>
            A large <xref target="HeaderBlock">header block</xref> can cause an implementation to
            commit a large amount of state.  Header fields that are critical for routing can appear
            toward the end of a header block, which prevents streaming of header fields to their
            ultimate destination. For this an other reasons, such as ensuring cache correctness,
            means that an endpoint might need to buffer the entire header block.  Since there is no
            hard limit to the size of a header block, some endpoints could be forced commit a large
            amount of available memory for header fields.
          </t>
          <t>
            An endpoint can use the <x:ref>SETTINGS_MAX_HEADER_LIST_SIZE</x:ref> to advise peers of
            limits that might apply on the size of header blocks.  This setting is only advisory, so
            endpoints MAY choose to send header blocks that exceed this limit and risk having the
            request or response being treated as malformed.  This setting specific to a connection,
            so any request or response could encounter a hop with a lower, unknown limit.  An
            intermediary can attempt to avoid this problem by passing on values presented by
            different peers, but they are not obligated to do so.
          </t>
          <t>
            A server that receives a larger header block than it is willing to handle can send an
            HTTP 431 (Request Header Fields Too Large) status code <xref target="RFC6585"/>.  A
            client can discard responses that it cannot process.  The header block MUST be processed
            to ensure a consistent connection state, unless the connection is closed.
          </t>
        </section>
      </section>

      <section title="Use of Compression">
        <t>
          HTTP/2 enables greater use of compression for both header fields (<xref
          target="HeaderBlock"/>) and entity bodies.  Compression can allow an attacker to recover
          secret data when it is compressed in the same context as data under attacker control.
        </t>
        <t>
          There are demonstrable attacks on compression that exploit the characteristics of the web
          (e.g., <xref target="BREACH"/>).  The attacker induces multiple requests containing
          varying plaintext, observing the length of the resulting ciphertext in each, which
          reveals a shorter length when a guess about the secret is correct.
        </t>
        <t>
          Implementations communicating on a secure channel MUST NOT compress content that includes
          both confidential and attacker-controlled data unless separate compression dictionaries
          are used for each source of data.  Compression MUST NOT be used if the source of data
          cannot be reliably determined.  Generic stream compression, such as that provided by TLS
          MUST NOT be used with HTTP/2 (<xref target="TLSFeatures"/>).
        </t>
        <t>
          Further considerations regarding the compression of header fields are described in <xref
          target="COMPRESSION"/>.
        </t>
      </section>

      <section title="Use of Padding" anchor="padding">
        <t>
          Padding within HTTP/2 is not intended as a replacement for general purpose padding, such
          as might be provided by <xref target="TLS12">TLS</xref>.  Redundant padding could even be
          counterproductive.  Correct application can depend on having specific knowledge of the
          data that is being padded.
        </t>
        <t>
          To mitigate attacks that rely on compression, disabling or limiting compression might be
          preferable to padding as a countermeasure.
        </t>
        <t>
          Padding can be used to obscure the exact size of frame content, and is provided to
          mitigate specific attacks within HTTP.  For example, attacks where compressed content
          includes both attacker-controlled plaintext and secret data (see for example, <xref
          target="BREACH"/>).
        </t>
        <t>
          Use of padding can result in less protection than might seem immediately obvious.  At
          best, padding only makes it more difficult for an attacker to infer length information by
          increasing the number of frames an attacker has to observe.  Incorrectly implemented
          padding schemes can be easily defeated.  In particular, randomized padding with a
          predictable distribution provides very little protection; similarly, padding payloads to a
          fixed size exposes information as payload sizes cross the fixed size boundary, which could
          be possible if an attacker can control plaintext.
        </t>
        <t>
          Intermediaries SHOULD retain padding for <x:ref>DATA</x:ref> frames, but MAY drop padding
          for <x:ref>HEADERS</x:ref> and <x:ref>PUSH_PROMISE</x:ref> frames.  A valid reason for an
          intermediary to change the amount of padding of frames is to improve the protections that
          padding provides.
        </t>
      </section>

      <section title="Privacy Considerations">
        <t>
          Several characteristics of HTTP/2 provide an observer an opportunity to correlate actions
          of a single client or server over time.  This includes the value of settings, the manner
          in which flow control windows are managed, the way priorities are allocated to streams,
          timing of reactions to stimulus, and handling of any optional features.
        </t>
        <t>
          As far as this creates observable differences in behavior, they could be used as a basis
          for fingerprinting a specific client, as defined in <xref target="HTML5" x:fmt="of"
          x:sec="1.8" x:rel="introduction.html#fingerprint"/>.
        </t>
      </section>
    </section>

    <section anchor="iana" title="IANA Considerations">
      <t>
        A string for identifying HTTP/2 is entered into the "Application Layer Protocol Negotiation
        (ALPN) Protocol IDs" registry established in <xref target="TLS-ALPN"/>.
      </t>
      <t>
        This document establishes a registry for frame types, settings, and error codes.  These new
        registries are entered into a new "Hypertext Transfer Protocol (HTTP) 2 Parameters" section.
      </t>
      <t>
        This document registers the <spanx style="verb">HTTP2-Settings</spanx> header field for
        use in HTTP; and the 421 (Misdirected Request) status code.
      </t>
      <t>
        This document registers the <spanx style="verb">PRI</spanx> method for use in HTTP, to avoid
        collisions with the <xref target="ConnectionHeader">connection preface</xref>.
      </t>

      <section anchor="iana-alpn" title="Registration of HTTP/2 Identification Strings">
        <t>
          This document creates two registrations for the identification of HTTP/2 in the
          "Application Layer Protocol Negotiation (ALPN) Protocol IDs" registry established in <xref
          target="TLS-ALPN"/>.
        </t>
        <t>
          The "h2" string identifies HTTP/2 when used over TLS:
          <list style="hanging">
            <t hangText="Protocol:">HTTP/2 over TLS</t>
            <t hangText="Identification Sequence:">0x68 0x32 ("h2")</t>
            <t hangText="Specification:">This document</t>
          </list>
        </t>
        <t>
          The "h2c" string identifies HTTP/2 when used over cleartext TCP:
          <list style="hanging">
            <t hangText="Protocol:">HTTP/2 over TCP</t>
            <t hangText="Identification Sequence:">0x68 0x32 0x63 ("h2c")</t>
            <t hangText="Specification:">This document</t>
          </list>
        </t>
      </section>

      <section anchor="iana-frames" title="Frame Type Registry">
        <t>
          This document establishes a registry for HTTP/2 frame type codes.  The "HTTP/2 Frame
          Type" registry manages an 8-bit space.  The "HTTP/2 Frame Type" registry operates under
          either of the <xref target="RFC5226">"IETF Review" or "IESG Approval" policies</xref> for
          values between 0x00 and 0xef, with values between 0xf0 and 0xff being reserved for
          experimental use.
        </t>
        <t>
          New entries in this registry require the following information:
          <list style="hanging">
            <t hangText="Frame Type:">
              A name or label for the frame type.
            </t>
            <t hangText="Code:">
              The 8-bit code assigned to the frame type.
            </t>
            <t hangText="Specification:">
              A reference to a specification that includes a description of the frame layout,
              it's semantics and flags that the frame type uses, including any parts of the frame
              that are conditionally present based on the value of flags.
            </t>
          </list>
        </t>
        <t>
          The entries in the following table are registered by this document.
        </t>
        <texttable align="left" suppress-title="true">
          <ttcol>Frame Type</ttcol>
          <ttcol>Code</ttcol>
          <ttcol>Section</ttcol>
          <c>DATA</c><c>0x0</c><c><xref target="DATA"/></c>
          <c>HEADERS</c><c>0x1</c><c><xref target="HEADERS"/></c>
          <c>PRIORITY</c><c>0x2</c><c><xref target="PRIORITY"/></c>
          <c>RST_STREAM</c><c>0x3</c><c><xref target="RST_STREAM"/></c>
          <c>SETTINGS</c><c>0x4</c><c><xref target="SETTINGS"/></c>
          <c>PUSH_PROMISE</c><c>0x5</c><c><xref target="PUSH_PROMISE"/></c>
          <c>PING</c><c>0x6</c><c><xref target="PING"/></c>
          <c>GOAWAY</c><c>0x7</c><c><xref target="GOAWAY"/></c>
          <c>WINDOW_UPDATE</c><c>0x8</c><c><xref target="WINDOW_UPDATE"/></c>
          <c>CONTINUATION</c><c>0x9</c><c><xref target="CONTINUATION"/></c>
        </texttable>
      </section>

      <section anchor="iana-settings" title="Settings Registry">
        <t>
          This document establishes a registry for HTTP/2 settings.  The "HTTP/2 Settings" registry
          manages a 16-bit space.  The "HTTP/2 Settings" registry operates under the <xref
          target="RFC5226">"Expert Review" policy</xref> for values in the range from 0x0000 to
          0xefff, with values between and 0xf000 and 0xffff being reserved for experimental use.
        </t>
        <t>
          New registrations are advised to provide the following information:
          <list style="hanging">
            <t hangText="Name:">
              A symbolic name for the setting.  Specifying a setting name is optional.
            </t>
            <t hangText="Code:">
              The 16-bit code assigned to the setting.
            </t>
            <t hangText="Initial Value:">
              An initial value for the setting.
            </t>
            <t hangText="Specification:">
              An optional reference to a specification that describes the use of the setting.
            </t>
          </list>
        </t>
        <t>
          An initial set of setting registrations can be found in <xref target="SettingValues"/>.
        </t>
        <texttable align="left" suppress-title="true">
          <ttcol>Name</ttcol>
          <ttcol>Code</ttcol>
          <ttcol>Initial Value</ttcol>
          <ttcol>Specification</ttcol>
          <c>HEADER_TABLE_SIZE</c>
          <c>0x1</c><c>4096</c><c><xref target="SettingValues"/></c>
          <c>ENABLE_PUSH</c>
          <c>0x2</c><c>1</c><c><xref target="SettingValues"/></c>
          <c>MAX_CONCURRENT_STREAMS</c>
          <c>0x3</c><c>(infinite)</c><c><xref target="SettingValues"/></c>
          <c>INITIAL_WINDOW_SIZE</c>
          <c>0x4</c><c>65535</c><c><xref target="SettingValues"/></c>
          <c>MAX_FRAME_SIZE</c>
          <c>0x5</c><c>16384</c><c><xref target="SettingValues"/></c>
          <c>MAX_HEADER_LIST_SIZE</c>
          <c>0x6</c><c>(infinite)</c><c><xref target="SettingValues"/></c>
        </texttable>

      </section>

      <section anchor="iana-errors" title="Error Code Registry">
        <t>
          This document establishes a registry for HTTP/2 error codes.  The "HTTP/2 Error Code"
          registry manages a 32-bit space.  The "HTTP/2 Error Code" registry operates under the
          <xref target="RFC5226">"Expert Review" policy</xref>.
        </t>
        <t>
          Registrations for error codes are required to include a description of the error code.  An
          expert reviewer is advised to examine new registrations for possible duplication with
          existing error codes.  Use of existing registrations is to be encouraged, but not
          mandated.
        </t>
        <t>
          New registrations are advised to provide the following information:
          <list style="hanging">
            <t hangText="Name:">
              A name for the error code.  Specifying an error code name is optional.
            </t>
            <t hangText="Code:">
              The 32-bit error code value.
            </t>
            <t hangText="Description:">
              A brief description of the error code semantics, longer if no detailed specification
              is provided.
            </t>
            <t hangText="Specification:">
              An optional reference for a specification that defines the error code.
            </t>
          </list>
        </t>
        <t>
          The entries in the following table are registered by this document.
        </t>
        <texttable align="left" suppress-title="true">
          <ttcol>Name</ttcol>
          <ttcol>Code</ttcol>
          <ttcol>Description</ttcol>
          <ttcol>Specification</ttcol>
          <c>NO_ERROR</c><c>0x0</c>
          <c>Graceful shutdown</c>
          <c><xref target="ErrorCodes"/></c>
          <c>PROTOCOL_ERROR</c><c>0x1</c>
          <c>Protocol error detected</c>
          <c><xref target="ErrorCodes"/></c>
          <c>INTERNAL_ERROR</c><c>0x2</c>
          <c>Implementation fault</c>
          <c><xref target="ErrorCodes"/></c>
          <c>FLOW_CONTROL_ERROR</c><c>0x3</c>
          <c>Flow control limits exceeded</c>
          <c><xref target="ErrorCodes"/></c>
          <c>SETTINGS_TIMEOUT</c><c>0x4</c>
          <c>Settings not acknowledged</c>
          <c><xref target="ErrorCodes"/></c>
          <c>STREAM_CLOSED</c><c>0x5</c>
          <c>Frame received for closed stream</c>
          <c><xref target="ErrorCodes"/></c>
          <c>FRAME_SIZE_ERROR</c><c>0x6</c>
          <c>Frame size incorrect</c>
          <c><xref target="ErrorCodes"/></c>
          <c>REFUSED_STREAM</c><c>0x7</c>
          <c>Stream not processed</c>
          <c><xref target="ErrorCodes"/></c>
          <c>CANCEL</c><c>0x8</c>
          <c>Stream cancelled</c>
          <c><xref target="ErrorCodes"/></c>
          <c>COMPRESSION_ERROR</c><c>0x9</c>
          <c>Compression state not updated</c>
          <c><xref target="ErrorCodes"/></c>
          <c>CONNECT_ERROR</c><c>0xa</c>
          <c>TCP connection error for CONNECT method</c>
          <c><xref target="ErrorCodes"/></c>
          <c>ENHANCE_YOUR_CALM</c><c>0xb</c>
          <c>Processing capacity exceeded</c>
          <c><xref target="ErrorCodes"/></c>
          <c>INADEQUATE_SECURITY</c><c>0xc</c>
          <c>Negotiated TLS parameters not acceptable</c>
          <c><xref target="ErrorCodes"/></c>
        </texttable>

      </section>

      <section title="HTTP2-Settings Header Field Registration">
        <t>
          This section registers the <spanx style="verb">HTTP2-Settings</spanx> header field in the
          <xref target="BCP90">Permanent Message Header Field Registry</xref>.
          <list style="hanging">
            <t hangText="Header field name:">
              HTTP2-Settings
            </t>
            <t hangText="Applicable protocol:">
              http
            </t>
            <t hangText="Status:">
              standard
            </t>
            <t hangText="Author/Change controller:">
              IETF
            </t>
            <t hangText="Specification document(s):">
              <xref target="Http2SettingsHeader"/> of this document
            </t>
            <t hangText="Related information:">
              This header field is only used by an HTTP/2 client for Upgrade-based negotiation.
            </t>
          </list>
        </t>
      </section>

      <section title="PRI Method Registration">
        <t>
          This section registers the <spanx style="verb">PRI</spanx> method in the HTTP Method
          Registry (<xref target="RFC7231" x:fmt="," x:rel="#method.registry"/>).
          <list style="hanging">
            <t hangText="Method Name:">
              PRI
            </t>
            <t hangText="Safe">
              No
            </t>
            <t hangText="Idempotent">
              No
            </t>
            <t hangText="Specification document(s)">
              <xref target="ConnectionHeader"/> of this document
            </t>
            <t hangText="Related information:">
              This method is never used by an actual client. This method will appear to be used
              when an HTTP/1.1 server or intermediary attempts to parse an HTTP/2 connection
              preface.
            </t>
          </list>
        </t>
      </section>

      <section title="The 421 (Misdirected Request) HTTP Status Code"
               anchor="iana-MisdirectedRequest">
        <t>
          This document registers the 421 (Misdirected Request) HTTP Status code in the Hypertext
          Transfer Protocol (HTTP) Status Code Registry (<xref target="RFC7231" x:fmt=","
          x:rel="#status.code.registry"/>).
        </t>
        <t>
          <list style="hanging">
            <t hangText="Status Code:">
              421
            </t>
            <t hangText="Short Description:">
              Misdirected Request
            </t>
            <t hangText="Specification:">
              <xref target="MisdirectedRequest"/> of this document
            </t>
          </list>
        </t>
      </section>

    </section>

    <section title="Acknowledgements">
      <t>
        This document includes substantial input from the following individuals:
        <list style="symbols">
          <t>
            Adam Langley, Wan-Teh Chang, Jim Morrison, Mark Nottingham, Alyssa Wilk, Costin
            Manolache, William Chan, Vitaliy Lvin, Joe Chan, Adam Barth, Ryan Hamilton, Gavin
            Peters, Kent Alstad, Kevin Lindsay, Paul Amer, Fan Yang, Jonathan Leighton (SPDY
            contributors).
          </t>
          <t>
            Gabriel Montenegro and Willy Tarreau (Upgrade mechanism).
          </t>
          <t>
            William Chan, Salvatore Loreto, Osama Mazahir, Gabriel Montenegro, Jitu Padhye, Roberto
            Peon, Rob Trace (Flow control).
          </t>
          <t>
            Mike Bishop (Extensibility).
          </t>
          <t>
            Mark Nottingham, Julian Reschke, James Snell, Jeff Pinner, Mike Bishop, Herve Ruellan
            (Substantial editorial contributions).
          </t>
          <t>
            Kari Hurtta, Tatsuhiro Tsujikawa, Greg Wilkins, Poul-Henning Kamp.
          </t>
          <t>
            Alexey Melnikov was an editor of this document during 2013.
          </t>
          <t>
            A substantial proportion of Martin's contribution was supported by Microsoft during his
            employment there.
          </t>
        </list>
      </t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <reference anchor="COMPRESSION">
        <front>
          <title>HPACK - Header Compression for HTTP/2</title>
          <author initials="H." surname="Ruellan" fullname="Herve Ruellan"/>
          <author initials="R." surname="Peon" fullname="Roberto Peon"/>
          <date month="July" year="2014" />
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-header-compression-09" />
        <x:source href="refs/draft-ietf-httpbis-header-compression-09.xml"/>
      </reference>

      <reference anchor="TCP">
        <front>
          <title abbrev="Transmission Control Protocol">
            Transmission Control Protocol
          </title>
          <author initials="J." surname="Postel" fullname="Jon Postel">
            <organization>University of Southern California (USC)/Information Sciences
            Institute</organization>
          </author>
          <date year="1981" month="September" />
        </front>
        <seriesInfo name="STD" value="7" />
        <seriesInfo name="RFC" value="793" />
      </reference>

      <reference anchor="RFC2119">
        <front>
          <title>
            Key words for use in RFCs to Indicate Requirement Levels
          </title>
          <author initials="S." surname="Bradner" fullname="Scott Bradner">
            <organization>Harvard University</organization>
            <address><email>sob@harvard.edu</email></address>
          </author>
          <date month="March" year="1997"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
      </reference>

     <reference anchor="RFC2818">
        <front>
          <title>
            HTTP Over TLS
          </title>
          <author initials="E." surname="Rescorla" fullname="Eric Rescorla"/>
          <date month="May" year="2000"/>
        </front>
        <seriesInfo name="RFC" value="2818"/>
      </reference>

      <reference anchor="RFC3986">
        <front>
          <title abbrev="URI Generic Syntax">Uniform Resource Identifier (URI): Generic
          Syntax</title>
          <author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee"></author>
          <author initials="R." surname="Fielding" fullname="Roy T. Fielding"></author>
          <author initials="L." surname="Masinter" fullname="Larry Masinter"></author>
          <date year="2005" month="January" />
        </front>
        <seriesInfo name="STD" value="66" />
        <seriesInfo name="RFC" value="3986" />
      </reference>

      <reference anchor="RFC4648">
        <front>
          <title>The Base16, Base32, and Base64 Data Encodings</title>
          <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
          <date year="2006" month="October"/>
        </front>
        <seriesInfo value="4648" name="RFC"/>
      </reference>

      <reference anchor="RFC5226">
        <front>
          <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
          <author initials="T." surname="Narten" fullname="T. Narten"/>
          <author initials="H." surname="Alvestrand" fullname="H. Alvestrand"/>
          <date year="2008" month="May" />
        </front>
        <seriesInfo name="BCP" value="26" />
        <seriesInfo name="RFC" value="5226" />
      </reference>

      <reference anchor="RFC5234">
        <front>
          <title>Augmented BNF for Syntax Specifications: ABNF</title>
          <author initials="D." surname="Crocker" fullname="D. Crocker"/>
          <author initials="P." surname="Overell" fullname="P. Overell"/>
          <date year="2008" month="January" />
        </front>
        <seriesInfo name="STD" value="68" />
        <seriesInfo name="RFC" value="5234" />
      </reference>

      <reference anchor="TLS12">
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
          <author initials="T." surname="Dierks" fullname="Tim Dierks"/>
          <author initials="E." surname="Rescorla" fullname="Eric Rescorla"/>
          <date year="2008" month="August" />
        </front>
        <seriesInfo name="RFC" value="5246" />
      </reference>

      <reference anchor="TLS-EXT">
        <front>
          <title>
            Transport Layer Security (TLS) Extensions: Extension Definitions
          </title>
          <author initials="D." surname="Eastlake" fullname="D. Eastlake"/>
          <date year="2011" month="January"/>
        </front>
        <seriesInfo name="RFC" value="6066"/>
      </reference>

      <reference anchor="TLS-ALPN">
        <front>
          <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
          <author initials="S." surname="Friedl" fullname="Stephan Friedl"></author>
          <author initials="A." surname="Popov" fullname="Andrei Popov"></author>
          <author initials="A." surname="Langley" fullname="Adam Langley"></author>
          <author initials="E." surname="Stephan" fullname="Emile Stephan"></author>
          <date month="July" year="2014" />
        </front>
        <seriesInfo name="RFC" value="7301" />
      </reference>

      <reference anchor="TLS-ECDHE">
        <front>
          <title>
            TLS Elliptic Curve Cipher Suites with SHA-256/384 and AES Galois
            Counter Mode (GCM)
          </title>
          <author initials="E." surname="Rescorla" fullname="E. Rescorla"/>
          <date year="2008" month="August" />
        </front>
        <seriesInfo name="RFC" value="5289" />
      </reference>

      <reference anchor="FIPS186">
        <front>
          <title>
            Digital Signature Standard (DSS)
          </title>
          <author><organization>NIST</organization></author>
          <date year="2013" month="July" />
        </front>
        <seriesInfo name="FIPS" value="PUB 186-4" />
      </reference>

      <reference anchor="RFC7230">
        <front>
          <title>
          Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
          <author fullname="Roy T. Fielding" initials="R." role="editor" surname="Fielding">
            <organization abbrev="Adobe">Adobe Systems Incorporated</organization>
            <address><email>fielding@gbiv.com</email></address>
          </author>
          <author fullname="Julian F. Reschke" initials="J. F." role="editor" surname="Reschke">
            <organization abbrev="greenbytes">greenbytes GmbH</organization>
            <address><email>julian.reschke@greenbytes.de</email></address>
          </author>
          <date month="June" year="2014" />
        </front>
        <seriesInfo name="RFC" value="7230" />
        <x:source href="refs/rfc7230.xml"
                  basename="https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7230"/>
      </reference>
      <reference anchor="RFC7231">
        <front>
          <title>
          Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
          <author fullname="Roy T. Fielding" initials="R." role="editor" surname="Fielding">
            <organization abbrev="Adobe">Adobe Systems Incorporated</organization>
            <address><email>fielding@gbiv.com</email></address>
          </author>
          <author fullname="Julian F. Reschke" initials="J. F." role="editor" surname="Reschke">
            <organization abbrev="greenbytes">greenbytes GmbH</organization>
            <address><email>julian.reschke@greenbytes.de</email></address>
          </author>
          <date month="June" year="2014" />
        </front>
        <seriesInfo name="RFC" value="7231" />
        <x:source href="refs/rfc7231.xml"
                  basename="https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7231"/>
      </reference>
      <reference anchor="RFC7232">
        <front>
          <title>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</title>
          <author fullname="Roy T. Fielding" initials="R." role="editor" surname="Fielding">
            <organization abbrev="Adobe">Adobe Systems Incorporated</organization>
            <address><email>fielding@gbiv.com</email></address>
          </author>
          <author fullname="Julian F. Reschke" initials="J. F." role="editor" surname="Reschke">
            <organization abbrev="greenbytes">greenbytes GmbH</organization>
            <address><email>julian.reschke@greenbytes.de</email></address>
          </author>
          <date month="June" year="2014" />
        </front>
        <seriesInfo name="RFC" value="7232" />
      </reference>
      <reference anchor="RFC7233">
        <front>
          <title>Hypertext Transfer Protocol (HTTP/1.1): Range Requests</title>
          <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor">
            <organization abbrev="Adobe">Adobe Systems Incorporated</organization>
            <address><email>fielding@gbiv.com</email></address>
          </author>
          <author initials="Y." surname="Lafon" fullname="Yves Lafon" role="editor">
            <organization abbrev="W3C">World Wide Web Consortium</organization>
            <address><email>ylafon@w3.org</email></address>
          </author>
          <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor">
            <organization abbrev="greenbytes">greenbytes GmbH</organization>
            <address><email>julian.reschke@greenbytes.de</email></address>
          </author>
          <date month="June" year="2014" />
        </front>
        <seriesInfo name="RFC" value="7233" />
      </reference>
      <reference anchor="RFC7234">
        <front>
          <title>Hypertext Transfer Protocol (HTTP/1.1): Caching</title>
          <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor">
            <organization abbrev="Adobe">Adobe Systems Incorporated</organization>
            <address><email>fielding@gbiv.com</email></address>
          </author>
          <author fullname="Mark Nottingham" initials="M." role="editor" surname="Nottingham">
            <organization>Akamai</organization>
            <address><email>mnot@mnot.net</email></address>
          </author>
          <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor">
            <organization abbrev="greenbytes">greenbytes GmbH</organization>
            <address><email>julian.reschke@greenbytes.de</email></address>
          </author>
          <date month="June" year="2014" />
        </front>
        <seriesInfo name="RFC" value="7234"/>
        <x:source href="refs/rfc7234.xml"
                  basename="https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7234"/>
      </reference>
      <reference anchor="RFC7235">
        <front>
          <title>Hypertext Transfer Protocol (HTTP/1.1): Authentication</title>
          <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor">
            <organization abbrev="Adobe">Adobe Systems Incorporated</organization>
            <address><email>fielding@gbiv.com</email></address>
          </author>
          <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor">
            <organization abbrev="greenbytes">greenbytes GmbH</organization>
            <address><email>julian.reschke@greenbytes.de</email></address>
          </author>
          <date month="June" year="2014" />
        </front>
        <seriesInfo name="RFC" value="7235"/>
        <x:source href="refs/rfc7235.xml"
                  basename="https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7235"/>
      </reference>

      <reference anchor="COOKIE">
        <front>
          <title>HTTP State Management Mechanism</title>
          <author initials="A." surname="Barth" fullname="A. Barth"/>
          <date year="2011" month="April" />
        </front>
        <seriesInfo name="RFC" value="6265" />
      </reference>
    </references>

    <references title="Informative References">
      <reference anchor="RFC1323">
        <front>
          <title>
            TCP Extensions for High Performance
          </title>
          <author initials="V." surname="Jacobson" fullname="Van Jacobson"></author>
          <author initials="B." surname="Braden" fullname="Bob Braden"></author>
          <author initials="D." surname="Borman" fullname="Dave Borman"></author>
          <date year="1992" month="May" />
        </front>
        <seriesInfo name="RFC" value="1323" />
      </reference>

      <reference anchor="RFC3749">
        <front>
          <title>Transport Layer Security Protocol Compression Methods</title>
          <author initials="S." surname="Hollenbeck" fullname="S. Hollenbeck"/>
          <date year="2004" month="May" />
        </front>
        <seriesInfo name="RFC" value="3749" />
      </reference>

      <reference anchor="RFC6585">
        <front>
          <title>Additional HTTP Status Codes</title>
          <author initials="M." surname="Nottingham" fullname="Mark Nottingham"/>
          <author initials="R." surname="Fielding" fullname="Roy Fielding"/>
          <date year="2012" month="April" />
        </front>
        <seriesInfo name="RFC" value="6585" />
      </reference>

      <reference anchor="RFC4492">
        <front>
          <title>
            Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS)
          </title>
          <author initials="S." surname="Blake-Wilson" fullname="S. Blake-Wilson"/>
          <author initials="N." surname="Bolyard" fullname="N. Bolyard"/>
          <author initials="V." surname="Gupta" fullname="V. Gupta"/>
          <author initials="C." surname="Hawk" fullname="C. Hawk"/>
          <author initials="B." surname="Moeller" fullname="B. Moeller"/>
          <date year="2006" month="May" />
        </front>
        <seriesInfo name="RFC" value="4492" />
      </reference>

      <reference anchor="RFC5288">
        <front>
          <title>
            AES Galois Counter Mode (GCM) Cipher Suites for TLS
          </title>
          <author initials="J." surname="Salowey" fullname="J. Salowey"/>
          <author initials="A." surname="Choudhury" fullname="A. Choudhury"/>
          <author initials="D." surname="McGrew" fullname="D. McGrew"/>
          <date year="2008" month="August" />
        </front>
        <seriesInfo name="RFC" value="5288" />
      </reference>

      <reference anchor='HTML5'
           target='http://www.w3.org/TR/2014/CR-html5-20140731/'>
        <front>
          <title>HTML5</title>
          <author fullname='Robin Berjon' surname='Berjon' initials='R.'/>
          <author fullname='Steve Faulkner' surname='Faulkner' initials='S.'/>
          <author fullname='Travis Leithead' surname='Leithead' initials='T.'/>
          <author fullname='Erika Doyle Navara' surname='Doyle Navara' initials='E.'/>
          <author fullname='Edward O&apos;Connor' surname='O&apos;Connor' initials='E.'/>
          <author fullname='Silvia Pfeiffer' surname='Pfeiffer' initials='S.'/>
          <date year='2014' month='July' day='31'/>
        </front>
        <seriesInfo name='W3C Candidate Recommendation' value='CR-html5-20140731'/>
        <annotation>
          Latest version available at
          <eref target='http://www.w3.org/TR/html5/'/>.
        </annotation>
      </reference>

      <reference anchor="TALKING" target="http://w2spconf.com/2011/papers/websocket.pdf">
        <front>
          <title>
            Talking to Yourself for Fun and Profit
          </title>
          <author initials="L-S." surname="Huang"/>
          <author initials="E." surname="Chen"/>
          <author initials="A." surname="Barth"/>
          <author initials="E." surname="Rescorla"/>
          <author initials="C." surname="Jackson"/>
          <date year="2011" />
        </front>
      </reference>

      <reference anchor="BREACH"
                 target="http://breachattack.com/resources/BREACH%20-%20SSL,%20gone%20in%2030%20seconds.pdf">
        <front>
          <title>
            BREACH: Reviving the CRIME Attack
          </title>
          <author initials="Y." surname="Gluck"/>
          <author initials="N." surname="Harris"/>
          <author initials="A." surname="Prado"/>
          <date year="2013" month="July" day="12"/>
        </front>
      </reference>

      <reference anchor="BCP90">
        <front>
          <title>Registration Procedures for Message Header Fields</title>
          <author initials="G." surname="Klyne" fullname="G. Klyne">
            <organization>Nine by Nine</organization>
            <address><email>GK-IETF@ninebynine.org</email></address>
          </author>
          <author initials="M." surname="Nottingham" fullname="M. Nottingham">
            <organization>BEA Systems</organization>
            <address><email>mnot@pobox.com</email></address>
          </author>
          <author initials="J." surname="Mogul" fullname="J. Mogul">
            <organization>HP Labs</organization>
            <address><email>JeffMogul@acm.org</email></address>
          </author>
          <date year="2004" month="September" />
        </front>
        <seriesInfo name="BCP" value="90" />
        <seriesInfo name="RFC" value="3864" />
      </reference>

      <reference anchor="TLSBCP">
        <front>
          <title>Recommendations for Secure Use of TLS and DTLS</title>
          <author initials="Y" surname="Sheffer" fullname="Yaron Sheffer">
            <organization />
          </author>
          <author initials="R" surname="Holz" fullname="Ralph Holz">
            <organization />
          </author>
          <author initials="P" surname="Saint-Andre" fullname="Peter Saint-Andre">
            <organization />
          </author>
          <date month="June" day="23" year="2014" />
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-uta-tls-bcp-01" />
      </reference>

      <reference anchor="ALT-SVC">
        <front>
          <title>
            HTTP Alternative Services
          </title>
          <author initials="M." surname="Nottingham" fullname="Mark Nottingham">
            <organization>Akamai</organization>
          </author>
          <author initials="P." surname="McManus" fullname="Patrick McManus">
            <organization>Mozilla</organization>
          </author>
          <author initials="J." surname="Reschke" fullname="Julian Reschke">
            <organization>greenbytes</organization>
          </author>
          <date year="2014" month="April"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-alt-svc-02"/>
        <x:source href="refs/draft-ietf-httpbis-alt-svc-02.xml"/>
      </reference>
    </references>

    <section title="Change Log" anchor="change.log">
      <t>
        This section is to be removed by RFC Editor before publication.
      </t>

      <section title="Since draft-ietf-httpbis-http2-14" anchor="changes.since.draft-ietf-httpbis-http2-14">
        <t>
          Renamed Not Authoritative status code to Misdirected Request.
        </t>
      </section>

      <section title="Since draft-ietf-httpbis-http2-13" anchor="changes.since.draft-ietf-httpbis-http2-13">
        <t>
          Pseudo-header fields are now required to appear strictly before regular ones.
        </t>
        <t>
          Restored 1xx series status codes, except 101.
        </t>
        <t>
          Changed frame length field 24-bits.  Expanded frame header to 9 octets.  Added a setting
          to limit the damage.
        </t>
        <t>
          Added a setting to advise peers of header set size limits.
        </t>
        <t>
          Removed segments.
        </t>
        <t>
          Made non-semantic-bearing <x:ref>HEADERS</x:ref> frames illegal in the HTTP mapping.
        </t>
      </section>

       <section title="Since draft-ietf-httpbis-http2-12" anchor="changes.since.draft-ietf-httpbis-http2-12">
         <t>
           Restored extensibility options.
         </t>
         <t>
           Restricting TLS cipher suites to AEAD only.
         </t>
         <t>
           Removing Content-Encoding requirements.
         </t>
         <t>
           Permitting the use of <x:ref>PRIORITY</x:ref> after stream close.
         </t>
         <t>
           Removed ALTSVC frame.
         </t>
         <t>
           Removed BLOCKED frame.
         </t>
         <t>
           Reducing the maximum padding size to 256 octets; removing padding from
           <x:ref>CONTINUATION</x:ref> frames.
         </t>
         <t>
           Removed per-frame GZIP compression.
         </t>
       </section>

       <section title="Since draft-ietf-httpbis-http2-11" anchor="changes.since.draft-ietf-httpbis-http2-11">
         <t>
           Added BLOCKED frame (at risk).
         </t>
         <t>
           Simplified priority scheme.
         </t>
         <t>
           Added <x:ref>DATA</x:ref> per-frame GZIP compression.
         </t>
       </section>

       <section title="Since draft-ietf-httpbis-http2-10" anchor="changes.since.draft-ietf-httpbis-http2-10">
        <t>
          Changed "connection header" to "connection preface" to avoid confusion.
        </t>
        <t>
          Added dependency-based stream prioritization.
        </t>
        <t>
          Added "h2c" identifier to distinguish between cleartext and secured HTTP/2.
        </t>
        <t>
          Adding missing padding to <x:ref>PUSH_PROMISE</x:ref>.
        </t>
        <t>
          Integrate ALTSVC frame and supporting text.
        </t>
        <t>
          Dropping requirement on "deflate" Content-Encoding.
        </t>
        <t>
          Improving security considerations around use of compression.
        </t>
      </section>

      <section title="Since draft-ietf-httpbis-http2-09" anchor="changes.since.draft-ietf-httpbis-http2-09">
        <t>
          Adding padding for data frames.
        </t>
        <t>
          Renumbering frame types, error codes, and settings.
        </t>
        <t>
          Adding INADEQUATE_SECURITY error code.
        </t>
        <t>
          Updating TLS usage requirements to 1.2; forbidding TLS compression.
        </t>
        <t>
          Removing extensibility for frames and settings.
        </t>
        <t>
          Changing setting identifier size.
        </t>
        <t>
          Removing the ability to disable flow control.
        </t>
        <t>
          Changing the protocol identification token to "h2".
        </t>
        <t>
          Changing the use of :authority to make it optional and to allow userinfo in non-HTTP
          cases.
        </t>
        <t>
          Allowing split on 0x0 for Cookie.
        </t>
        <t>
          Reserved PRI method in HTTP/1.1 to avoid possible future collisions.
        </t>
      </section>

      <section title="Since draft-ietf-httpbis-http2-08" anchor="changes.since.draft-ietf-httpbis-http2-08">
        <t>
          Added cookie crumbling for more efficient header compression.
        </t>
        <t>
          Added header field ordering with the value-concatenation mechanism.
        </t>
      </section>

      <section title="Since draft-ietf-httpbis-http2-07" anchor="changes.since.draft-ietf-httpbis-http2-07">
        <t>
          Marked draft for implementation.
        </t>
      </section>

      <section title="Since draft-ietf-httpbis-http2-06" anchor="changes.since.draft-ietf-httpbis-http2-06">
        <t>
          Adding definition for CONNECT method.
        </t>
        <t>
          Constraining the use of push to safe, cacheable methods with no request body.
        </t>
        <t>
          Changing from :host to :authority to remove any potential confusion.
        </t>
        <t>
          Adding setting for header compression table size.
        </t>
        <t>
          Adding settings acknowledgement.
        </t>
        <t>
          Removing unnecessary and potentially problematic flags from CONTINUATION.
        </t>
        <t>
          Added denial of service considerations.
        </t>
      </section>
      <section title="Since draft-ietf-httpbis-http2-05" anchor="changes.since.draft-ietf-httpbis-http2-05">
        <t>
          Marking the draft ready for implementation.
        </t>
        <t>
          Renumbering END_PUSH_PROMISE flag.
        </t>
        <t>
          Editorial clarifications and changes.
        </t>
      </section>

      <section title="Since draft-ietf-httpbis-http2-04" anchor="changes.since.draft-ietf-httpbis-http2-04">
        <t>
          Added CONTINUATION frame for HEADERS and PUSH_PROMISE.
        </t>
        <t>
          PUSH_PROMISE is no longer implicitly prohibited if SETTINGS_MAX_CONCURRENT_STREAMS is
          zero.
        </t>
        <t>
          Push expanded to allow all safe methods without a request body.
        </t>
        <t>
          Clarified the use of HTTP header fields in requests and responses.  Prohibited HTTP/1.1
          hop-by-hop header fields.
        </t>
        <t>
          Requiring that intermediaries not forward requests with missing or illegal routing
          :-headers.
        </t>
        <t>
          Clarified requirements around handling different frames after stream close, stream reset
          and <x:ref>GOAWAY</x:ref>.
        </t>
        <t>
          Added more specific prohibitions for sending of different frame types in various stream
          states.
        </t>
        <t>
          Making the last received setting value the effective value.
        </t>
        <t>
          Clarified requirements on TLS version, extension and ciphers.
        </t>
      </section>

      <section title="Since draft-ietf-httpbis-http2-03" anchor="changes.since.draft-ietf-httpbis-http2-03">
        <t>
          Committed major restructuring atrocities.
        </t>
        <t>
          Added reference to first header compression draft.
        </t>
        <t>
          Added more formal description of frame lifecycle.
        </t>
        <t>
          Moved END_STREAM (renamed from FINAL) back to <x:ref>HEADERS</x:ref>/<x:ref>DATA</x:ref>.
        </t>
        <t>
          Removed HEADERS+PRIORITY, added optional priority to <x:ref>HEADERS</x:ref> frame.
        </t>
        <t>
          Added <x:ref>PRIORITY</x:ref> frame.
        </t>
      </section>

      <section title="Since draft-ietf-httpbis-http2-02" anchor="changes.since.draft-ietf-httpbis-http2-02">
        <t>
          Added continuations to frames carrying header blocks.
        </t>
        <t>
          Replaced use of "session" with "connection" to avoid confusion with other HTTP stateful
          concepts, like cookies.
        </t>
        <t>
          Removed "message".
        </t>
        <t>
          Switched to TLS ALPN from NPN.
        </t>
        <t>
          Editorial changes.
        </t>
      </section>

      <section title="Since draft-ietf-httpbis-http2-01" anchor="changes.since.draft-ietf-httpbis-http2-01">
        <t>
          Added IANA considerations section for frame types, error codes and settings.
        </t>
        <t>
          Removed data frame compression.
        </t>
        <t>
          Added <x:ref>PUSH_PROMISE</x:ref>.
        </t>
        <t>
          Added globally applicable flags to framing.
        </t>
        <t>
          Removed zlib-based header compression mechanism.
        </t>
        <t>
          Updated references.
        </t>
        <t>
          Clarified stream identifier reuse.
        </t>
        <t>
          Removed CREDENTIALS frame and associated mechanisms.
        </t>
        <t>
          Added advice against naive implementation of flow control.
        </t>
        <t>
          Added session header section.
        </t>
        <t>
          Restructured frame header.  Removed distinction between data and control frames.
        </t>
        <t>
          Altered flow control properties to include session-level limits.
        </t>
        <t>
          Added note on cacheability of pushed resources and multiple tenant servers.
        </t>
        <t>
          Changed protocol label form based on discussions.
        </t>
      </section>

      <section title="Since draft-ietf-httpbis-http2-00" anchor="changes.since.draft-ietf-httpbis-http2-00">
        <t>
          Changed title throughout.
        </t>
        <t>
          Removed section on Incompatibilities with SPDY draft#2.
        </t>
        <t>
          Changed <x:ref>INTERNAL_ERROR</x:ref> on <x:ref>GOAWAY</x:ref> to have a value of 2 <eref
          target="https://groups.google.com/forum/?fromgroups#!topic/spdy-dev/cfUef2gL3iU"/>.
        </t>
        <t>
          Replaced abstract and introduction.
        </t>
        <t>
          Added section on starting HTTP/2.0, including upgrade mechanism.
        </t>
        <t>
          Removed unused references.
        </t>
        <t>
          Added <xref target="fc-principles">flow control principles</xref> based on <eref
          target="https://tools.ietf.org/html/draft-montenegro-httpbis-http2-fc-principles-01"/>.
        </t>
      </section>

      <section title="Since draft-mbelshe-httpbis-spdy-00" anchor="changes.since.draft-mbelshe-httpbis-spdy-00">
        <t>
          Adopted as base for draft-ietf-httpbis-http2.
        </t>
        <t>
          Updated authors/editors list.
        </t>
        <t>
          Added status note.
        </t>
      </section>
    </section>

  </back>
</rfc>
<!--
  vim:et:tw=100:sw=2:
  -->
