<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.13 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-http-26" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.37.3 -->
  <front>
    <title abbrev="HTTP/3">Hypertext Transfer Protocol Version 3 (HTTP/3)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-26"/>
    <author initials="M." surname="Bishop" fullname="Mike Bishop" role="editor">
      <organization>Akamai</organization>
      <address>
        <email>mbishop@evequefou.be</email>
      </address>
    </author>
    <date year="2020" month="February" day="21"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <abstract>
      <t>The QUIC transport protocol has several features that are desirable in a
transport for HTTP, such as stream multiplexing, per-stream flow control, and
low-latency connection establishment.  This document describes a mapping of HTTP
semantics over QUIC.  This document also identifies HTTP/2 features that are
subsumed by QUIC, and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <t>Discussion of this draft takes place on the QUIC working group mailing list
(quic@ietf.org), which is archived at
<eref target="https://mailarchive.ietf.org/arch/search/?email_list=quic">https://mailarchive.ietf.org/arch/search/?email_list=quic</eref>.</t>
      <t>Working Group information can be found at <eref target="https://github.com/quicwg">https://github.com/quicwg</eref>; source
code and issues list for this draft can be found at
<eref target="https://github.com/quicwg/base-drafts/labels/-http">https://github.com/quicwg/base-drafts/labels/-http</eref>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>HTTP semantics are used for a broad range of services on the Internet. These
semantics have commonly been used with two different TCP mappings, HTTP/1.1 and
HTTP/2.  HTTP/3 supports the same semantics over a new transport protocol, QUIC.</t>
      <section anchor="prior-versions-of-http" numbered="true" toc="default">
        <name>Prior versions of HTTP</name>
        <t>HTTP/1.1 is a TCP mapping which uses whitespace-delimited text fields to convey
HTTP messages.  While these exchanges are human-readable, using whitespace for
message formatting leads to parsing difficulties and workarounds to be tolerant
of variant behavior. Because each connection can transfer only a single HTTP
request or response at a time in each direction, multiple parallel TCP
connections are often used, reducing the ability of the congestion controller to
accurately manage traffic between endpoints.</t>
        <t>HTTP/2 introduced a binary framing and multiplexing layer to improve latency
without modifying the transport layer.  However, because the parallel nature of
HTTP/2's multiplexing is not visible to TCP's loss recovery mechanisms, a lost
or reordered packet causes all active transactions to experience a stall
regardless of whether that transaction was impacted by the lost packet.</t>
      </section>
      <section anchor="delegation-to-quic" numbered="true" toc="default">
        <name>Delegation to QUIC</name>
        <t>The QUIC transport protocol incorporates stream multiplexing and per-stream flow
control, similar to that provided by the HTTP/2 framing layer. By providing
reliability at the stream level and congestion control across the entire
connection, it has the capability to improve the performance of HTTP compared to
a TCP mapping.  QUIC also incorporates TLS 1.3 at the transport layer, offering
comparable security to running TLS over TCP, with the improved connection setup
latency of TCP Fast Open <xref target="RFC7413" format="default"/>.</t>
        <t>This document defines a mapping of HTTP semantics over the QUIC transport
protocol, drawing heavily on the design of HTTP/2.  While delegating stream
lifetime and flow control issues to QUIC, a similar binary framing is used on
each stream. Some HTTP/2 features are subsumed by QUIC, while other features are
implemented atop QUIC.</t>
        <t>QUIC is described in <xref target="QUIC-TRANSPORT" format="default"/>.  For a full description of HTTP/2, see
<xref target="HTTP2" format="default"/>.</t>
      </section>
    </section>
    <section anchor="http3-protocol-overview" numbered="true" toc="default">
      <name>HTTP/3 Protocol Overview</name>
      <t>HTTP/3 provides a transport for HTTP semantics using the QUIC transport protocol
and an internal framing layer similar to HTTP/2.</t>
      <t>Once a client knows that an HTTP/3 server exists at a certain endpoint, it opens
a QUIC connection. QUIC provides protocol negotiation, stream-based
multiplexing, and flow control. An HTTP/3 endpoint can be discovered using HTTP
Alternative Services; this process is described in greater detail in
<xref target="discovery" format="default"/>.</t>
      <t>Within each stream, the basic unit of HTTP/3 communication is a frame
(<xref target="frames" format="default"/>).  Each frame type serves a different purpose.  For example, HEADERS
and DATA frames form the basis of HTTP requests and responses
(<xref target="request-response" format="default"/>).</t>
      <t>Multiplexing of requests is performed using the QUIC stream abstraction,
described in Section 2 of <xref target="QUIC-TRANSPORT" format="default"/>.  Each request-response pair
consumes a single QUIC stream.  Streams are independent of each other, so one
stream that is blocked or suffers packet loss does not prevent progress on other
streams.</t>
      <t>Server push is an interaction mode introduced in HTTP/2 <xref target="HTTP2" format="default"/> which permits
a server to push a request-response exchange to a client in anticipation of the
client making the indicated request.  This trades off network usage against a
potential latency gain.  Several HTTP/3 frames are used to manage server push,
such as PUSH_PROMISE, MAX_PUSH_ID, and CANCEL_PUSH.</t>
      <t>As in HTTP/2, request and response headers are compressed for transmission.
Because HPACK <xref target="HPACK" format="default"/> relies on in-order transmission of compressed
header blocks (a guarantee not provided by QUIC), HTTP/3 replaces HPACK with
QPACK <xref target="QPACK" format="default"/>.  QPACK uses separate unidirectional streams to modify and track
header table state, while header blocks refer to the state of the table without
modifying it.</t>
      <section anchor="document-organization" numbered="true" toc="default">
        <name>Document Organization</name>
        <t>The following sections provide a detailed overview of the connection lifecycle
and key concepts:</t>
        <ul spacing="normal">
          <li>Connection Setup and Management (<xref target="connection-setup" format="default"/>) covers how an HTTP/3
endpoint is discovered and a connection is established.</li>
          <li>HTTP Request Lifecycle (<xref target="http-request-lifecycle" format="default"/>) describes how HTTP
semantics are expressed using frames.</li>
          <li>Connection Closure (<xref target="connection-closure" format="default"/>) describes how connections are
terminated, either gracefully or abruptly.</li>
        </ul>
        <t>The details of the wire protocol and interactions with the transport are
described in subsequent sections:</t>
        <ul spacing="normal">
          <li>Stream Mapping and Usage (<xref target="stream-mapping" format="default"/>) describes the way QUIC streams
are used.</li>
          <li>HTTP Framing Layer (<xref target="http-framing-layer" format="default"/>) describes the frames used on
most streams.</li>
          <li>Error Handling (<xref target="errors" format="default"/>) describes how error conditions are handled and
expressed, either on a particular stream or for the connection as a whole.</li>
        </ul>
        <t>Additional resources are provided in the final sections:</t>
        <ul spacing="normal">
          <li>Extensions to HTTP/3 (<xref target="extensions" format="default"/>) describes how new capabilities can be
added in future documents.</li>
          <li>A more detailed comparison between HTTP/2 and HTTP/3 can be found in
<xref target="h2-considerations" format="default"/>.</li>
        </ul>
      </section>
      <section anchor="conventions-and-terminology" numbered="true" toc="default">
        <name>Conventions and Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/>
when, and only when, they appear in all capitals, as shown here.</t>
        <t>Field definitions are given in Augmented Backus-Naur Form (ABNF), as defined in
<xref target="RFC5234" format="default"/>.</t>
        <t>This document uses the variable-length integer encoding from
<xref target="QUIC-TRANSPORT" format="default"/>.</t>
        <t>The following terms are used:</t>
        <dl newline="false" spacing="normal">
          <dt>abort:</dt>
          <dd>
  An abrupt termination of a connection or stream, possibly due to an error
condition.</dd>
          <dt>client:</dt>
          <dd>
  The endpoint that initiates an HTTP/3 connection.  Clients send HTTP requests
and receive HTTP responses.</dd>
          <dt>connection:</dt>
          <dd>
  A transport-layer connection between two endpoints, using QUIC as the
transport protocol.</dd>
          <dt>connection error:</dt>
          <dd>
  An error that affects the entire HTTP/3 connection.</dd>
          <dt>endpoint:</dt>
          <dd>
  Either the client or server of the connection.</dd>
          <dt>frame:</dt>
          <dd>
  The smallest unit of communication on a stream in HTTP/3, consisting of a
header and a variable-length sequence of bytes structured according to the
frame type.

Protocol elements called "frames" exist in both this document and
<xref target="QUIC-TRANSPORT" format="default"/>. Where frames from <xref target="QUIC-TRANSPORT" format="default"/> are referenced, the
frame name will be prefaced with "QUIC."  For example, "QUIC CONNECTION_CLOSE
frames."  References without this preface refer to frames defined in
<xref target="frames" format="default"/>.</dd>
          <dt>peer:</dt>
          <dd>
  An endpoint.  When discussing a particular endpoint, "peer" refers to the
endpoint that is remote to the primary subject of discussion.</dd>
          <dt>receiver:</dt>
          <dd>
  An endpoint that is receiving frames.</dd>
          <dt>sender:</dt>
          <dd>
  An endpoint that is transmitting frames.</dd>
          <dt>server:</dt>
          <dd>
  The endpoint that accepts an HTTP/3 connection.  Servers receive HTTP requests
and send HTTP responses.</dd>
          <dt>stream:</dt>
          <dd>
  A bidirectional or unidirectional bytestream provided by the QUIC transport.</dd>
          <dt>stream error:</dt>
          <dd>
  An error on the individual HTTP/3 stream.</dd>
        </dl>
        <t>The term "payload body" is defined in Section 3.3 of <xref target="RFC7230" format="default"/>.</t>
        <t>Finally, the terms "gateway", "intermediary", "proxy", and "tunnel" are defined
in Section 2.3 of <xref target="RFC7230" format="default"/>.  Intermediaries act as both client and server at
different times.</t>
      </section>
    </section>
    <section anchor="connection-setup" numbered="true" toc="default">
      <name>Connection Setup and Management</name>
      <section anchor="draft-version-identification" numbered="true" toc="default">
        <name>Draft Version Identification</name>
        <ul empty="true" spacing="normal">
          <li>
            <strong>RFC Editor's Note:</strong>  Please remove this section prior to publication of a
final version of this document.</li>
        </ul>
        <t>HTTP/3 uses the token "h3" to identify itself in ALPN and Alt-Svc.  Only
implementations of the final, published RFC can identify themselves as "h3".
Until such an RFC exists, implementations MUST NOT identify themselves 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-quic-http-01 is identified using the string "h3-01".</t>
        <t>Draft versions MUST use the corresponding draft transport version as their
transport. For example, the application protocol defined in
draft-ietf-quic-http-25 uses the transport defined in
draft-ietf-quic-transport-25.</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 based on draft-ietf-quic-http-09 which reserves an
extra stream for unsolicited transmission of 1980s pop music might identify
itself as "h3-09-rickroll". Note that any label MUST conform to the "token"
syntax defined in Section 3.2.6 of <xref target="RFC7230" format="default"/>. Experimenters are encouraged to
coordinate their experiments on the quic@ietf.org mailing list.</t>
      </section>
      <section anchor="discovery" numbered="true" toc="default">
        <name>Discovering an HTTP/3 Endpoint</name>
        <t>An HTTP origin advertises the availability of an equivalent HTTP/3 endpoint via
the Alt-Svc HTTP response header field or the HTTP/2 ALTSVC frame
(<xref target="ALTSVC" format="default"/>), using the ALPN token defined in
<xref target="connection-establishment" format="default"/>.</t>
        <t>For example, an origin could indicate in an HTTP response that HTTP/3 was
available on UDP port 50781 at the same hostname by including the following
header field:</t>
        <artwork type="example" name="" align="left" alt=""><![CDATA[
Alt-Svc: h3=":50781"
]]></artwork>
        <t>On receipt of an Alt-Svc record indicating HTTP/3 support, a client MAY attempt
to establish a QUIC connection to the indicated host and port and, if
successful, send HTTP requests using the mapping described in this document.</t>
        <t>Connectivity problems (e.g. firewall blocking UDP) can result in QUIC connection
establishment failure, in which case the client SHOULD continue using the
existing connection or try another alternative endpoint offered by the origin.</t>
        <t>Servers MAY serve HTTP/3 on any UDP port, since an alternative always includes
an explicit port.</t>
      </section>
      <section anchor="connection-establishment" numbered="true" toc="default">
        <name>Connection Establishment</name>
        <t>HTTP/3 relies on QUIC version 1 as the underlying transport.  The use of other
QUIC transport versions with HTTP/3 MAY be defined by future specifications.</t>
        <t>QUIC version 1 uses TLS version 1.3 or greater as its handshake protocol.
HTTP/3 clients MUST support a mechanism to indicate the target host to the
server during the TLS handshake.  If the server is identified by a DNS name,
clients MUST send the Server Name Indication (SNI) <xref target="RFC6066" format="default"/> TLS extension
unless an alternative mechanism to indicate the target host is used.</t>
        <t>QUIC connections are established as described in <xref target="QUIC-TRANSPORT" format="default"/>. During
connection establishment, HTTP/3 support is indicated by selecting the ALPN
token "h3" in the TLS handshake.  Support for other application-layer protocols
MAY be offered in the same handshake.</t>
        <t>While connection-level options pertaining to the core QUIC protocol are set in
the initial crypto handshake, HTTP/3-specific settings are conveyed in the
SETTINGS frame. After the QUIC connection is established, a SETTINGS frame
(<xref target="frame-settings" format="default"/>) MUST be sent by each endpoint as the initial frame of their
respective HTTP control stream (see <xref target="control-streams" format="default"/>).</t>
      </section>
      <section anchor="connection-reuse" numbered="true" toc="default">
        <name>Connection Reuse</name>
        <t>Once a connection exists to a server endpoint, this connection MAY be reused for
requests with multiple different URI authority components.  The client MAY send
any requests for which the client considers the server authoritative.</t>
        <t>An authoritative HTTP/3 endpoint is typically discovered because the client has
received an Alt-Svc record from the request's origin which nominates the
endpoint as a valid HTTP Alternative Service for that origin.  As required by
<xref target="RFC7838" format="default"/>, clients MUST check that the nominated server can present a valid
certificate for the origin before considering it authoritative. Clients MUST NOT
assume that an HTTP/3 endpoint is authoritative for other origins without an
explicit signal.</t>
        <t>Prior to making requests for an origin whose scheme is not "https," the client
MUST ensure the server is willing to serve that scheme.  If the client intends
to make requests for an origin whose scheme is "http", this means that it MUST
obtain a valid <tt>http-opportunistic</tt> response for the origin as described in
<xref target="RFC8164" format="default"/> prior to making any such requests.  Other schemes might define
other mechanisms.</t>
        <t>A server that does not wish clients to reuse connections for a particular origin
can indicate that it is not authoritative for a request by sending a 421
(Misdirected Request) status code in response to the request (see Section 9.1.2
of <xref target="HTTP2" format="default"/>).</t>
        <t>The considerations discussed in Section 9.1 of <xref target="HTTP2" format="default"/> also apply to the
management of HTTP/3 connections.</t>
      </section>
    </section>
    <section anchor="http-request-lifecycle" numbered="true" toc="default">
      <name>HTTP Request Lifecycle</name>
      <section anchor="request-response" numbered="true" toc="default">
        <name>HTTP Message Exchanges</name>
        <t>A client sends an HTTP request on a client-initiated bidirectional QUIC stream.
A client MUST send only a single request on a given stream. A server sends zero
or more non-final HTTP responses on the same stream as the request, followed by
a single final HTTP response, as detailed below.</t>
        <t>Pushed responses are sent on a server-initiated unidirectional QUIC stream (see
<xref target="push-streams" format="default"/>).  A server sends zero or more non-final HTTP responses,
followed by a single final HTTP response, in the same manner as a standard
response.  Push is described in more detail in <xref target="server-push" format="default"/>.</t>
        <t>On a given stream, receipt of multiple requests or receipt of an additional HTTP
response following a final HTTP response MUST be treated as malformed
(<xref target="malformed" format="default"/>).</t>
        <t>An HTTP message (request or response) consists of:</t>
        <ol spacing="normal" type="1">
          <li>the message header (see Section 3.2 of <xref target="RFC7230" format="default"/>), sent as a single
HEADERS frame (see <xref target="frame-headers" format="default"/>),</li>
          <li>optionally, the payload body, if present (see Section 3.3 of <xref target="RFC7230" format="default"/>),
sent as a series of DATA frames (see <xref target="frame-data" format="default"/>),</li>
          <li>optionally, trailing headers, if present (see Section 4.1.2 of <xref target="RFC7230" format="default"/>),
sent as a single HEADERS frame.</li>
        </ol>
        <t>Receipt of DATA and HEADERS frames in any other sequence MUST be treated as a
connection error of type H3_FRAME_UNEXPECTED (<xref target="errors" format="default"/>).</t>
        <t>A server MAY send one or more PUSH_PROMISE frames (see <xref target="frame-push-promise" format="default"/>)
before, after, or interleaved with the frames of a response message. These
PUSH_PROMISE frames are not part of the response; see <xref target="server-push" format="default"/> for more
details.  These frames are not permitted in pushed responses; a pushed response
which includes PUSH_PROMISE frames MUST be treated as a connection error of type
H3_FRAME_UNEXPECTED.</t>
        <t>Frames of unknown types (<xref target="extensions" format="default"/>), including reserved frames
(<xref target="frame-reserved" format="default"/>) MAY be sent on a request or push stream before, after, or
interleaved with other frames described in this section.</t>
        <t>The HEADERS and PUSH_PROMISE frames might reference updates to the QPACK dynamic
table. While these updates are not directly part of the message exchange, they
must be received and processed before the message can be consumed.  See
<xref target="header-formatting" format="default"/> for more details.</t>
        <t>The "chunked" transfer encoding defined in Section 4.1 of <xref target="RFC7230" format="default"/> MUST NOT
be used.</t>
        <t>A response MAY consist of multiple messages when and only when one or more
informational responses (1xx; see Section 6.2 of <xref target="RFC7231" format="default"/>) precede a final
response to the same request.  Non-final responses do not contain a payload body
or trailers.</t>
        <t>If an endpoint receives an invalid sequence of frames on either a request or
a push stream, it MUST respond with a connection error of type
H3_FRAME_UNEXPECTED (<xref target="errors" format="default"/>).  In particular, a DATA frame before any
HEADERS frame, or a HEADERS or DATA frame after the trailing HEADERS frame is
considered invalid.</t>
        <t>An HTTP request/response exchange fully consumes a client-initiated
bidirectional QUIC stream. After sending a request, a client MUST close the
stream for sending.  Unless using the CONNECT method (see <xref target="connect" format="default"/>), clients
MUST NOT make stream closure dependent on receiving a response to their request.
After sending a final response, the server MUST close the stream for sending. At
this point, the QUIC stream is fully closed.</t>
        <t>When a stream is closed, this indicates the end of an HTTP message. Because some
messages are large or unbounded, endpoints SHOULD begin processing partial HTTP
messages once enough of the message has been received to make progress.  If a
client stream terminates without enough of the HTTP message to provide a
complete response, the server SHOULD abort its response with the error code
H3_REQUEST_INCOMPLETE.</t>
        <t>A server can send a complete response prior to the client sending an entire
request if the response does not depend on any portion of the request that has
not been sent and received. When the server does not need to receive the
remainder of the request, it MAY abort reading the request stream, send a
complete response, and cleanly close the sending part of the stream.  The error
code H3_NO_ERROR SHOULD be used when requesting that the client stop sending on
the request stream.  Clients MUST NOT discard complete responses as a result of
having their request terminated abruptly, though clients can always discard
responses at their discretion for other reasons.  If the server sends a partial
or complete response but does not abort reading, clients SHOULD continue sending
the body of the request and close the stream normally.</t>
        <section anchor="header-formatting" numbered="true" toc="default">
          <name>Header Formatting and Compression</name>
          <t>HTTP message headers carry information as a series of key-value pairs, called
header fields. For a listing of registered HTTP header fields, see the "Message
Header Field" registry maintained at
<eref target="https://www.iana.org/assignments/message-headers">https://www.iana.org/assignments/message-headers</eref>.</t>
          <t>Just as in previous versions of HTTP, header field names are strings of ASCII
characters that are compared in a case-insensitive fashion.  Properties of HTTP
header field names and values are discussed in more detail in Section 3.2 of
<xref target="RFC7230" format="default"/>, though the wire rendering in HTTP/3 differs.  As in HTTP/2, header
field names MUST be converted to lowercase prior to their encoding.  A request
or response containing uppercase header field names MUST be treated as
malformed (<xref target="malformed" format="default"/>).</t>
          <t>Like HTTP/2, HTTP/3 does not use the Connection header field to indicate
connection-specific header fields; in this protocol, connection-specific
metadata is conveyed by other means.  An endpoint MUST NOT generate an HTTP/3
message containing connection-specific header fields; any message containing
connection-specific header fields MUST be treated as malformed (<xref target="malformed" format="default"/>).</t>
          <t>The only exception to this is the TE header field, which MAY be present in an
HTTP/3 request; when it is, it MUST NOT contain any value other than "trailers".</t>
          <t>This means that an intermediary transforming an HTTP/1.x message to HTTP/3 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 the Connection
header field.</t>
          <section anchor="pseudo-header-fields" numbered="true" toc="default">
            <name>Pseudo-Header Fields</name>
            <t>As in HTTP/2, HTTP/3 uses special pseudo-header fields beginning with the ':'
character (ASCII 0x3a) to convey the target URI, the method of the request, and
the status code for the response.</t>
            <t>Pseudo-header fields are not HTTP header fields.  Endpoints MUST NOT generate
pseudo-header fields other than those defined in this document, except as
negotiated via an extension; see <xref target="extensions" format="default"/>.</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
malformed (<xref target="malformed" format="default"/>).</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
malformed (<xref target="malformed" format="default"/>).</t>
            <t>The following pseudo-header fields are defined for requests:</t>
            <dl newline="false" spacing="normal">
              <dt>":method":</dt>
              <dd>
  Contains the HTTP method (<xref target="RFC7231" format="default"/>, Section 4)</dd>
              <dt>":scheme":</dt>
              <dd>
  Contains the scheme portion of the target URI (<xref target="RFC3986" format="default"/>, Section 3.1)</dd>
              <dt/>
              <dd>":scheme" is not restricted to "http" and "https" schemed URIs.  A proxy or
gateway can translate requests for non-HTTP schemes, enabling the use of
HTTP to interact with non-HTTP services.</dd>
              <dt>":authority":</dt>
              <dd>
  Contains the authority portion of the target URI (Section 3.2 of <xref target="RFC3986" format="default"/>).
The authority MUST NOT include the deprecated "userinfo" subcomponent for
"http" or "https" schemed URIs.</dd>
              <dt/>
              <dd>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 Section
5.3 of <xref target="RFC7230" format="default"/>).  Clients that generate HTTP/3 requests directly SHOULD
use the ":authority" pseudo-header field instead of the Host header field.
An intermediary that converts an HTTP/3 request to HTTP/1.1 MUST create a
Host header field if one is not present in a request by copying the value of
the ":authority" pseudo-header field.</dd>
              <dt>":path":</dt>
              <dd>
  Contains the path and query parts of the target URI (the "path-absolute"
production and optionally a '?' character followed by the "query" production
(see Sections 3.3 and 3.4 of <xref target="RFC3986" format="default"/>).  A request in asterisk form
includes the value '*' for the ":path" pseudo-header field.</dd>
              <dt/>
              <dd>This pseudo-header field MUST NOT be empty for "http" or "https" URIs;
"http" or "https" URIs that do not contain a path component MUST include a
value of '/'.  The exception to this rule is an OPTIONS request for an
"http" or "https" URI that does not include a path component; these MUST
include a ":path" pseudo-header field with a value of '*' (see Section 5.3.4
of <xref target="RFC7230" format="default"/>).</dd>
            </dl>
            <t>All HTTP/3 requests MUST include exactly one value for the ":method", ":scheme",
and ":path" pseudo-header fields, unless it is a CONNECT request (<xref target="connect" format="default"/>).
An HTTP request that omits mandatory pseudo-header fields or contains invalid
values for those fields is malformed (<xref target="malformed" format="default"/>).</t>
            <t>HTTP/3 does not define a way to carry the version identifier that is included in
the HTTP/1.1 request line.</t>
            <t>For responses, a single ":status" pseudo-header field is defined that carries
the HTTP status code field (see Section 6 of <xref target="RFC7231" format="default"/>).  This pseudo-header
field MUST be included in all responses; otherwise, the response is malformed
(<xref target="malformed" format="default"/>).</t>
            <t>HTTP/3 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="header-compression" numbered="true" toc="default">
            <name>Header Compression</name>
            <t>HTTP/3 uses QPACK header compression as described in <xref target="QPACK" format="default"/>, a variation of
HPACK which allows the flexibility to avoid header-compression-induced
head-of-line blocking.  See that document for additional details.</t>
            <t>To allow for better compression efficiency, the cookie header field <xref target="RFC6265" format="default"/>
MAY be split into separate header fields, each with one or more cookie-pairs,
before compression. If a decompressed header list contains multiple cookie
header fields, these MUST be concatenated before being passed into a non-HTTP/2,
non-HTTP/3 context, as described in Section 8.1.2.5 of <xref target="HTTP2" format="default"/>.</t>
          </section>
          <section anchor="header-size-constraints" numbered="true" toc="default">
            <name>Header Size Constraints</name>
            <t>An HTTP/3 implementation MAY impose a limit on the maximum size of the message
header it will accept on an individual HTTP message.  A server that receives a
larger header field list than it is willing to handle can send an HTTP 431
(Request Header Fields Too Large) status code <xref target="RFC6585" format="default"/>.  A client can
discard responses that it cannot process.  The size of a header field list is
calculated based on the uncompressed size of header fields, including the length
of the name and value in bytes plus an overhead of 32 bytes for each header
field.</t>
            <t>If an implementation wishes to advise its peer of this limit, it can be conveyed
as a number of bytes in the <tt>SETTINGS_MAX_HEADER_LIST_SIZE</tt> parameter. An
implementation which has received this parameter SHOULD NOT send an HTTP message
header which exceeds the indicated size, as the peer will likely refuse to
process it.  However, because this limit is applied at each hop, messages below
this limit are not guaranteed to be accepted.</t>
          </section>
        </section>
        <section anchor="request-cancellation" numbered="true" toc="default">
          <name>Request Cancellation and Rejection</name>
          <t>Clients can cancel requests by resetting and aborting the request stream with an
error code of H3_REQUEST_CANCELLED (<xref target="http-error-codes" format="default"/>).  When the client
aborts reading a response, it indicates that this response is no longer of
interest. Implementations SHOULD cancel requests by abruptly terminating any
directions of a stream that are still open.</t>
          <t>When the server rejects a request without performing any application processing,
it SHOULD abort its response stream with the error code H3_REQUEST_REJECTED.
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. The
client can treat requests rejected by the server as though they had never been
sent at all, thereby allowing them to be retried later on a new connection.
Servers MUST NOT use the H3_REQUEST_REJECTED error code for requests which
were partially or fully processed.  When a server abandons a response after
partial processing, it SHOULD abort its response stream with the error code
H3_REQUEST_CANCELLED.</t>
          <t>When a client resets a request with the error code H3_REQUEST_CANCELLED, a
server MAY abruptly terminate the response using the error code
H3_REQUEST_REJECTED if no processing was performed.  Clients MUST NOT use the
H3_REQUEST_REJECTED error code, except when a server has requested closure of
the request stream with this error code.</t>
          <t>If a stream is cancelled after receiving a complete response, the client MAY
ignore the cancellation and use the response.  However, if a stream is cancelled
after receiving a partial response, the response SHOULD NOT be used.
Automatically retrying such requests is not possible, unless this is otherwise
permitted (e.g., idempotent actions like GET, PUT, or DELETE).</t>
        </section>
        <section anchor="malformed" numbered="true" toc="default">
          <name>Malformed Requests and Responses</name>
          <t>A malformed request or response is one that is an otherwise valid sequence of
frames but is invalid due to:</t>
          <ul spacing="normal">
            <li>the presence of prohibited header fields or pseudo-header fields,</li>
            <li>the absence of mandatory pseudo-header fields,</li>
            <li>invalid values for pseudo-header fields,</li>
            <li>pseudo-header fields after header fields,</li>
            <li>an invalid sequence of HTTP messages, or</li>
            <li>the inclusion of uppercase header field names.</li>
          </ul>
          <t>A request or response that includes a payload body can include a
<tt>content-length</tt> header field.  A request or response is also malformed if the
value of a content-length header field does not equal the sum of the DATA frame
payload lengths that form the body.  A response that is defined to have no
payload, as described in Section 3.3.2 of <xref target="RFC7230" format="default"/> can have a non-zero
content-length header field, even though no content is included in DATA 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 stream
error (<xref target="errors" format="default"/>) of type H3_GENERAL_PROTOCOL_ERROR.</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 anchor="connect" numbered="true" toc="default">
        <name>The CONNECT Method</name>
        <t>The pseudo-method CONNECT (Section 4.3.6 of <xref target="RFC7231" format="default"/>) is primarily used with
HTTP proxies to establish a TLS session with an origin server for the purposes
of interacting with "https" resources. In HTTP/1.x, CONNECT is used to convert
an entire HTTP connection into a tunnel to a remote host. 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.</t>
        <t>A CONNECT request in HTTP/3 functions in the same manner as in HTTP/2. The
request MUST be formatted as described in Section 8.3 of <xref target="HTTP2" format="default"/>. A CONNECT
request that does not conform to these restrictions is malformed (see
<xref target="malformed" format="default"/>). The request stream MUST NOT be closed at the end of the request.</t>
        <t>A proxy that supports CONNECT establishes a TCP connection (<xref target="RFC0793" format="default"/>) to the
server identified in the ":authority" pseudo-header field. Once this connection
is successfully established, the proxy sends a HEADERS frame containing a 2xx
series status code to the client, as defined in Section 4.3.6 of <xref target="RFC7231" format="default"/>.</t>
        <t>All DATA frames on the stream correspond to data sent or received on the TCP
connection. Any DATA frame sent by the client is transmitted by the proxy to the
TCP server; data received from the TCP server is packaged into DATA frames by
the proxy. Note that the size and number of TCP segments is not guaranteed to
map predictably to the size and number of HTTP DATA or QUIC STREAM frames.</t>
        <t>Once the CONNECT method has completed, only DATA frames are permitted
to be sent on the stream.  Extension frames MAY be used if specifically
permitted by the definition of the extension.  Receipt of any other frame type
MUST be treated as a connection error of type H3_FRAME_UNEXPECTED.</t>
        <t>The TCP connection can be closed by either peer. When the client ends the
request stream (that is, the receive stream at the proxy enters the "Data Recvd"
state), the proxy will set the FIN bit on its connection to the TCP server. When
the proxy receives a packet with the FIN bit set, it will terminate the send
stream that it sends to the client. TCP connections which remain half-closed in
a single direction are not invalid, but are often handled poorly by servers, so
clients SHOULD NOT close a stream for sending while they still expect to receive
data from the target of the CONNECT.</t>
        <t>A TCP connection error is signaled by abruptly terminating the stream. A proxy
treats any error in the TCP connection, which includes receiving a TCP segment
with the RST bit set, as a stream error of type H3_CONNECT_ERROR
(<xref target="http-error-codes" format="default"/>).  Correspondingly, if a proxy detects an error with the
stream or the QUIC connection, it MUST close the TCP connection.  If the
underlying TCP implementation permits it, the proxy SHOULD send a TCP segment
with the RST bit set.</t>
      </section>
      <section anchor="http-upgrade" numbered="true" toc="default">
        <name>HTTP Upgrade</name>
        <t>HTTP/3 does not support the HTTP Upgrade mechanism (Section 6.7 of <xref target="RFC7230" format="default"/>) or
101 (Switching Protocols) informational status code (Section 6.2.2 of
<xref target="RFC7231" format="default"/>).</t>
      </section>
      <section anchor="server-push" numbered="true" toc="default">
        <name>Server Push</name>
        <t>Server push is an interaction mode introduced in HTTP/2 <xref target="HTTP2" format="default"/> which permits
a server to push a request-response exchange to a client in anticipation of the
client making the indicated request.  This trades off network usage against a
potential latency gain.  HTTP/3 server push is similar to what is described in
HTTP/2 <xref target="HTTP2" format="default"/>, but uses different mechanisms.</t>
        <t>Each server push is identified by a unique Push ID. This Push ID is used in one
or more PUSH_PROMISE frames (see <xref target="frame-push-promise" format="default"/>) that carry the request
headers, then included with the push stream which ultimately fulfills those
promises. When the same Push ID is promised on multiple request streams, the
decompressed request header sets MUST contain the same fields in the
same order, and both the name and the value in each field MUST be exact
matches.</t>
        <t>Server push is only enabled on a connection when a client sends a MAX_PUSH_ID
frame (see <xref target="frame-max-push-id" format="default"/>). A server cannot use server push until it
receives a MAX_PUSH_ID frame. A client sends additional MAX_PUSH_ID frames to
control the number of pushes that a server can promise. A server SHOULD use Push
IDs sequentially, starting at 0. A client MUST treat receipt of a push stream
with a Push ID that is greater than the maximum Push ID as a connection error of
type H3_ID_ERROR.</t>
        <t>The header of the request message is carried by a PUSH_PROMISE frame (see
<xref target="frame-push-promise" format="default"/>) on the request stream which generated the push. Promised
requests MUST conform to the requirements in Section 8.2 of <xref target="HTTP2" format="default"/>.</t>
        <t>Each pushed response is associated with one or more client requests.  The push
is associated with the request stream on which the PUSH_PROMISE frame was
received.  The same server push can be associated with additional client
requests using a PUSH_PROMISE frame with the same Push ID on multiple request
streams.  These associations do not affect the operation of the protocol, but
MAY be considered by user agents when deciding how to use pushed resources.</t>
        <t>Ordering of a PUSH_PROMISE in relation to certain parts of the response is
important. The server SHOULD send PUSH_PROMISE frames prior to sending HEADERS
or DATA frames that reference the promised responses.  This reduces the chance
that a client requests a resource that will be pushed by the server.</t>
        <t>When a server later fulfills a promise, the server push response is conveyed on
a push stream (see <xref target="push-streams" format="default"/>). The push stream identifies the Push ID of
the promise that it fulfills, then contains a response to the promised request
using the same format described for responses in <xref target="request-response" format="default"/>.</t>
        <t>Due to reordering, push stream data can arrive before the corresponding
PUSH_PROMISE frame.  When a client receives a new push stream with an
as-yet-unknown Push ID, both the associated client request and the pushed
request headers are unknown.  The client can buffer the stream data in
expectation of the matching PUSH_PROMISE. The client can use stream flow control
(see section 4.1 of <xref target="QUIC-TRANSPORT" format="default"/>) to limit the amount of data a server may
commit to the pushed stream.</t>
        <t>If a promised server push is not needed by the client, the client SHOULD send a
CANCEL_PUSH frame. If the push stream is already open or opens after sending the
CANCEL_PUSH frame, the client can abort reading the stream with an error code of
H3_REQUEST_CANCELLED. This asks the server not to transfer additional data and
indicates that it will be discarded upon receipt.</t>
      </section>
    </section>
    <section anchor="connection-closure" numbered="true" toc="default">
      <name>Connection Closure</name>
      <t>Once established, an HTTP/3 connection can be used for many requests and
responses over time until the connection is closed.  Connection closure can
happen in any of several different ways.</t>
      <section anchor="idle-connections" numbered="true" toc="default">
        <name>Idle Connections</name>
        <t>Each QUIC endpoint declares an idle timeout during the handshake.  If the
connection remains idle (no packets received) for longer than this duration, the
peer will assume that the connection has been closed.  HTTP/3 implementations
will need to open a new connection for new requests if the existing connection
has been idle for longer than the server's advertised idle timeout, and SHOULD
do so if approaching the idle timeout.</t>
        <t>HTTP clients are expected to request that the transport keep connections open
while there are responses outstanding for requests or server pushes, as
described in Section 19.2 of <xref target="QUIC-TRANSPORT" format="default"/>. If the client is not expecting
a response from the server, allowing an idle connection to time out is preferred
over expending effort maintaining a connection that might not be needed.  A
gateway MAY maintain connections in anticipation of need rather than incur the
latency cost of connection establishment to servers. Servers SHOULD NOT actively
keep connections open.</t>
      </section>
      <section anchor="connection-shutdown" numbered="true" toc="default">
        <name>Connection Shutdown</name>
        <t>Even when a connection is not idle, either endpoint can decide to stop using the
connection and let the connection close gracefully.  Since clients drive request
generation, clients perform a connection shutdown by not sending additional
requests on the connection; responses and pushed responses associated to
previous requests will continue to completion.  Servers perform the same
function by communicating with clients.</t>
        <t>Servers initiate the shutdown of a connection by sending a GOAWAY frame
(<xref target="frame-goaway" format="default"/>).  The GOAWAY frame indicates that client-initiated requests
on lower stream IDs were or might be processed in this connection, while
requests on the indicated stream ID and greater were rejected. This enables
client and server to agree on which requests were accepted prior to the
connection shutdown.  This identifier MAY be zero if no requests were processed.
Servers SHOULD NOT permit additional QUIC streams after sending a GOAWAY frame.</t>
        <t>Clients MUST NOT send new requests on the connection after receiving GOAWAY;
a new connection MAY be established to send additional requests.</t>
        <t>Some requests might already be in transit. If the client has already sent
requests on streams with a Stream ID greater than or equal to that indicated in
the GOAWAY frame, those requests will not be processed and MAY be retried by the
client on a different connection.  The client MAY cancel these requests.  It is
RECOMMENDED that the server explicitly reject such requests (see
<xref target="request-cancellation" format="default"/>) in order to clean up transport state for the affected
streams.</t>
        <t>Requests on Stream IDs less than the Stream ID in the GOAWAY frame might have
been processed; their status cannot be known until a response is received, the
stream is reset individually, or the connection terminates.  Servers MAY reject
individual requests on streams below the indicated ID if these requests were not
processed.</t>
        <t>Servers SHOULD send a GOAWAY frame when the closing of a connection is known
in advance, even if the advance notice is small, so that the remote peer can
know whether a request has been partially processed or not.  For example, if an
HTTP client sends a POST at the same time that a server closes a QUIC
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>A client that is unable to retry requests loses all requests that are in flight
when the server closes the connection.  A server MAY send multiple GOAWAY frames
indicating different stream IDs, but MUST NOT increase the value they send in
the last Stream ID, since clients might already have retried unprocessed
requests on another connection.</t>
        <t>A server that is attempting to gracefully shut down a connection can send an
initial GOAWAY frame with the last Stream ID set to the maximum possible value
for a client-initiated, bidirectional stream (i.e. 2^62-4 in case of QUIC
version 1).  This GOAWAY frame signals to the client that shutdown is imminent
and that initiating further requests is prohibited.  After allowing time for any
in-flight requests to reach the server, the server can send another GOAWAY frame
indicating which requests it will accept before the end of the connection. This
ensures that a connection can be cleanly shut down without causing requests to
fail.</t>
        <t>Once all accepted requests have been processed, the server can permit the
connection to become idle, or MAY initiate an immediate closure of the
connection.  An endpoint that completes a graceful shutdown SHOULD use the
H3_NO_ERROR code when closing the connection.</t>
        <t>If a client has consumed all available bidirectional stream IDs with requests,
the server need not send a GOAWAY frame, since the client is unable to make
further requests.</t>
      </section>
      <section anchor="immediate-application-closure" numbered="true" toc="default">
        <name>Immediate Application Closure</name>
        <t>An HTTP/3 implementation can immediately close the QUIC connection at any time.
This results in sending a QUIC CONNECTION_CLOSE frame to the peer; the error
code in this frame indicates to the peer why the connection is being closed.
See <xref target="errors" format="default"/> for error codes which can be used when closing a connection.</t>
        <t>Before closing the connection, a GOAWAY MAY be sent to allow the client to retry
some requests.  Including the GOAWAY frame in the same packet as the QUIC
CONNECTION_CLOSE frame improves the chances of the frame being received by
clients.</t>
      </section>
      <section anchor="transport-closure" numbered="true" toc="default">
        <name>Transport Closure</name>
        <t>For various reasons, the QUIC transport could indicate to the application layer
that the connection has terminated.  This might be due to an explicit closure
by the peer, a transport-level error, or a change in network topology which
interrupts connectivity.</t>
        <t>If a connection terminates without a GOAWAY frame, clients MUST assume that any
request which was sent, whether in whole or in part, might have been processed.</t>
      </section>
    </section>
    <section anchor="stream-mapping" numbered="true" toc="default">
      <name>Stream Mapping and Usage</name>
      <t>A QUIC stream provides reliable in-order delivery of bytes, but makes no
guarantees about order of delivery with regard to bytes on other streams. On the
wire, data is framed into QUIC STREAM frames, but this framing is invisible to
the HTTP framing layer. The transport layer buffers and orders received QUIC
STREAM frames, exposing the data contained within as a reliable byte stream to
the application. Although QUIC permits out-of-order delivery within a stream,
HTTP/3 does not make use of this feature.</t>
      <t>QUIC streams can be either unidirectional, carrying data only from initiator to
receiver, or bidirectional.  Streams can be initiated by either the client or
the server.  For more detail on QUIC streams, see Section 2 of
<xref target="QUIC-TRANSPORT" format="default"/>.</t>
      <t>When HTTP headers and data are sent over QUIC, the QUIC layer handles most of
the stream management.  HTTP does not need to do any separate multiplexing when
using QUIC - data sent over a QUIC stream always maps to a particular HTTP
transaction or connection context.</t>
      <section anchor="bidirectional-streams" numbered="true" toc="default">
        <name>Bidirectional Streams</name>
        <t>All client-initiated bidirectional streams are used for HTTP requests and
responses.  A bidirectional stream ensures that the response can be readily
correlated with the request. This means that the client's first request occurs
on QUIC stream 0, with subsequent requests on stream 4, 8, and so on. In order
to permit these streams to open, an HTTP/3 server SHOULD configure non-zero
minimum values for the number of permitted streams and the initial stream flow
control window.  So as to not unnecessarily limit parallelism, at least 100
requests SHOULD be permitted at a time.</t>
        <t>HTTP/3 does not use server-initiated bidirectional streams, though an extension
could define a use for these streams.  Clients MUST treat receipt of a
server-initiated bidirectional stream as a connection error of type
H3_STREAM_CREATION_ERROR unless such an extension has been negotiated.</t>
      </section>
      <section anchor="unidirectional-streams" numbered="true" toc="default">
        <name>Unidirectional Streams</name>
        <t>Unidirectional streams, in either direction, are used for a range of purposes.
The purpose is indicated by a stream type, which is sent as a variable-length
integer at the start of the stream. The format and structure of data that
follows this integer is determined by the stream type.</t>
        <figure anchor="fig-stream-header">
          <name>Unidirectional Stream Header</name>
          <artwork type="drawing" name="" align="left" alt=""><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Stream Type (i)                      ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>Some stream types are reserved (<xref target="stream-grease" format="default"/>).  Two stream types are
defined in this document: control streams (<xref target="control-streams" format="default"/>) and push streams
(<xref target="push-streams" format="default"/>).  <xref target="QPACK" format="default"/> defines two additional stream types.  Other stream
types can be defined by extensions to HTTP/3; see <xref target="extensions" format="default"/> for more
details.</t>
        <t>The performance of HTTP/3 connections in the early phase of their lifetime is
sensitive to the creation and exchange of data on unidirectional streams.
Endpoints that excessively restrict the number of streams or the flow control
window of these streams will increase the chance that the remote peer reaches
the limit early and becomes blocked. In particular, implementations should
consider that remote peers may wish to exercise reserved stream behavior
(<xref target="stream-grease" format="default"/>) with some of the unidirectional streams they are permitted
to use. To avoid blocking, the transport parameters sent by both clients and
servers MUST allow the peer to create at least one unidirectional stream for the
HTTP control stream plus the number of unidirectional streams required by
mandatory extensions (three being the minimum number required for the base
HTTP/3 protocol and QPACK), and SHOULD provide at least 1,024 bytes of flow
control credit to each stream.</t>
        <t>Note that an endpoint is not required to grant additional credits to create more
unidirectional streams if its peer consumes all the initial credits before
creating the critical unidirectional streams. Endpoints SHOULD create the HTTP
control stream as well as the unidirectional streams required by mandatory
extensions (such as the QPACK encoder and decoder streams) first, and then
create additional streams as allowed by their peer.</t>
        <t>If the stream header indicates a stream type which is not supported by the
recipient, the remainder of the stream cannot be consumed as the semantics are
unknown. Recipients of unknown stream types MAY abort reading of the stream with
an error code of H3_STREAM_CREATION_ERROR, but MUST NOT consider such streams
to be a connection error of any kind.</t>
        <t>Implementations MAY send stream types before knowing whether the peer supports
them.  However, stream types which could modify the state or semantics of
existing protocol components, including QPACK or other extensions, MUST NOT be
sent until the peer is known to support them.</t>
        <t>A sender can close or reset a unidirectional stream unless otherwise specified.
A receiver MUST tolerate unidirectional streams being closed or reset prior to
the reception of the unidirectional stream header.</t>
        <section anchor="control-streams" numbered="true" toc="default">
          <name>Control Streams</name>
          <t>A control stream is indicated by a stream type of <tt>0x00</tt>.  Data on this stream
consists of HTTP/3 frames, as defined in <xref target="frames" format="default"/>.</t>
          <t>Each side MUST initiate a single control stream at the beginning of the
connection and send its SETTINGS frame as the first frame on this stream.  If
the first frame of the control stream is any other frame type, this MUST be
treated as a connection error of type H3_MISSING_SETTINGS. Only one control
stream per peer is permitted; receipt of a second stream which claims to be a
control stream MUST be treated as a connection error of type
H3_STREAM_CREATION_ERROR.  The sender MUST NOT close the control stream, and
the receiver MUST NOT request that the sender close the control stream.  If
either control stream is closed at any point, this MUST be treated as a
connection error of type H3_CLOSED_CRITICAL_STREAM.</t>
          <t>A pair of unidirectional streams is used rather than a single bidirectional
stream.  This allows either peer to send data as soon as it is able.  Depending
on whether 0-RTT is enabled on the connection, either client or server might be
able to send stream data first after the cryptographic handshake completes.</t>
        </section>
        <section anchor="push-streams" numbered="true" toc="default">
          <name>Push Streams</name>
          <t>Server push is an optional feature introduced in HTTP/2 that allows a server to
initiate a response before a request has been made.  See <xref target="server-push" format="default"/> for
more details.</t>
          <t>A push stream is indicated by a stream type of <tt>0x01</tt>, followed by the Push ID
of the promise that it fulfills, encoded as a variable-length integer. The
remaining data on this stream consists of HTTP/3 frames, as defined in
<xref target="frames" format="default"/>, and fulfills a promised server push by zero or more non-final HTTP
responses followed by a single final HTTP response, as defined in
<xref target="request-response" format="default"/>.  Server push and Push IDs are described in
<xref target="server-push" format="default"/>.</t>
          <t>Only servers can push; if a server receives a client-initiated push stream, this
MUST be treated as a connection error of type H3_STREAM_CREATION_ERROR.</t>
          <figure anchor="fig-push-stream-header">
            <name>Push Stream Header</name>
            <artwork type="drawing" name="" align="left" alt=""><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           0x01 (i)                          ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Push ID (i)                        ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <t>Each Push ID MUST only be used once in a push stream header. If a push stream
header includes a Push ID that was used in another push stream header, the
client MUST treat this as a connection error of type H3_ID_ERROR.</t>
        </section>
        <section anchor="stream-grease" numbered="true" toc="default">
          <name>Reserved Stream Types</name>
          <t>Stream types of the format <tt>0x1f * N + 0x21</tt> for integer values of N are
reserved to exercise the requirement that unknown types be ignored. These
streams have no semantics, and can be sent when application-layer padding is
desired. They MAY also be sent on connections where no data is currently being
transferred. Endpoints MUST NOT consider these streams to have any meaning upon
receipt.</t>
          <t>The payload and length of the stream are selected in any manner the
implementation chooses.  Implementations MAY terminate these streams cleanly, or
MAY abruptly terminate them.  When terminating abruptly, the error code
H3_NO_ERROR or a reserved error code (<xref target="http-error-codes" format="default"/>) SHOULD be used.</t>
        </section>
      </section>
    </section>
    <section anchor="http-framing-layer" numbered="true" toc="default">
      <name>HTTP Framing Layer</name>
      <t>HTTP frames are carried on QUIC streams, as described in <xref target="stream-mapping" format="default"/>.
HTTP/3 defines three stream types: control stream, request stream, and push
stream. This section describes HTTP/3 frame formats and the streams types on
which they are permitted; see <xref target="stream-frame-mapping" format="default"/> for an overview.  A
comparison between HTTP/2 and HTTP/3 frames is provided in <xref target="h2-frames" format="default"/>.</t>
      <table anchor="stream-frame-mapping" align="center">
        <name>HTTP/3 Frames and Stream Type Overview</name>
        <thead>
          <tr>
            <th align="left">Frame</th>
            <th align="left">Control Stream</th>
            <th align="left">Request Stream</th>
            <th align="left">Push Stream</th>
            <th align="left">Section</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">DATA</td>
            <td align="left">No</td>
            <td align="left">Yes</td>
            <td align="left">Yes</td>
            <td align="left">
              <xref target="frame-data" format="default"/></td>
          </tr>
          <tr>
            <td align="left">HEADERS</td>
            <td align="left">No</td>
            <td align="left">Yes</td>
            <td align="left">Yes</td>
            <td align="left">
              <xref target="frame-headers" format="default"/></td>
          </tr>
          <tr>
            <td align="left">CANCEL_PUSH</td>
            <td align="left">Yes</td>
            <td align="left">No</td>
            <td align="left">No</td>
            <td align="left">
              <xref target="frame-cancel-push" format="default"/></td>
          </tr>
          <tr>
            <td align="left">SETTINGS</td>
            <td align="left">Yes (1)</td>
            <td align="left">No</td>
            <td align="left">No</td>
            <td align="left">
              <xref target="frame-settings" format="default"/></td>
          </tr>
          <tr>
            <td align="left">PUSH_PROMISE</td>
            <td align="left">No</td>
            <td align="left">Yes</td>
            <td align="left">No</td>
            <td align="left">
              <xref target="frame-push-promise" format="default"/></td>
          </tr>
          <tr>
            <td align="left">GOAWAY</td>
            <td align="left">Yes</td>
            <td align="left">No</td>
            <td align="left">No</td>
            <td align="left">
              <xref target="frame-goaway" format="default"/></td>
          </tr>
          <tr>
            <td align="left">MAX_PUSH_ID</td>
            <td align="left">Yes</td>
            <td align="left">No</td>
            <td align="left">No</td>
            <td align="left">
              <xref target="frame-max-push-id" format="default"/></td>
          </tr>
          <tr>
            <td align="left">Reserved</td>
            <td align="left">Yes</td>
            <td align="left">Yes</td>
            <td align="left">Yes</td>
            <td align="left">
              <xref target="frame-reserved" format="default"/></td>
          </tr>
        </tbody>
      </table>
      <t>Certain frames can only occur as the first frame of a particular stream type;
these are indicated in <xref target="stream-frame-mapping" format="default"/> with a (1).  Specific guidance
is provided in the relevant section.</t>
      <t>Note that, unlike QUIC frames, HTTP/3 frames can span multiple packets.</t>
      <section anchor="frame-layout" numbered="true" toc="default">
        <name>Frame Layout</name>
        <t>All frames have the following format:</t>
        <figure anchor="fig-frame">
          <name>HTTP/3 Frame Format</name>
          <artwork type="drawing" name="" align="left" alt=""><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Type (i)                          ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Length (i)                         ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Frame Payload (*)                     ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>A frame includes the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Type:</dt>
          <dd>
  A variable-length integer that identifies the frame type.</dd>
          <dt>Length:</dt>
          <dd>
  A variable-length integer that describes the length in bytes of
the Frame Payload.</dd>
          <dt>Frame Payload:</dt>
          <dd>
  A payload, the semantics of which are determined by the Type field.</dd>
        </dl>
        <t>Each frame's payload MUST contain exactly the fields identified in its
description.  A frame payload that contains additional bytes after the
identified fields or a frame payload that terminates before the end of the
identified fields MUST be treated as a connection error of type
H3_FRAME_ERROR.</t>
        <t>When a stream terminates cleanly, if the last frame on the stream was truncated,
this MUST be treated as a connection error (<xref target="errors" format="default"/>) of type
H3_FRAME_ERROR. Streams which terminate abruptly may be reset at any point in
a frame.</t>
      </section>
      <section anchor="frames" numbered="true" toc="default">
        <name>Frame Definitions</name>
        <section anchor="frame-data" numbered="true" toc="default">
          <name>DATA</name>
          <t>DATA frames (type=0x0) convey arbitrary, variable-length sequences of bytes
associated with an HTTP request or response payload.</t>
          <t>DATA frames MUST be associated with an HTTP request or response.  If a DATA
frame is received on a control stream, the recipient MUST respond with a
connection error (<xref target="errors" format="default"/>) of type H3_FRAME_UNEXPECTED.</t>
          <figure anchor="fig-data">
            <name>DATA Frame Payload</name>
            <artwork type="drawing" name="" align="left" alt=""><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Payload (*)                         ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
        </section>
        <section anchor="frame-headers" numbered="true" toc="default">
          <name>HEADERS</name>
          <t>The HEADERS frame (type=0x1) is used to carry a header block, compressed using
QPACK. See <xref target="QPACK" format="default"/> for more details.</t>
          <figure anchor="fig-headers">
            <name>HEADERS Frame Payload</name>
            <artwork type="drawing" name="" align="left" alt=""><![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 (*)                      ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <t>HEADERS frames can only be sent on request / push streams.  If a HEADERS frame
is received on a control stream, the recipient MUST respond with a connection
error (<xref target="errors" format="default"/>) of type H3_FRAME_UNEXPECTED.</t>
        </section>
        <section anchor="frame-cancel-push" numbered="true" toc="default">
          <name>CANCEL_PUSH</name>
          <t>The CANCEL_PUSH frame (type=0x3) is used to request cancellation of a server
push prior to the push stream being received.  The CANCEL_PUSH frame identifies
a server push by Push ID (see <xref target="frame-push-promise" format="default"/>), encoded as a
variable-length integer.</t>
          <t>When a client sends CANCEL_PUSH, it is indicating that it does not wish to
receive the promised resource.  The server SHOULD abort sending the resource,
but the mechanism to do so depends on the state of the corresponding push
stream.  If the server has not yet created a push stream, it does not create
one.  If the push stream is open, the server SHOULD abruptly terminate that
stream.  If the push stream has already ended, the server MAY still abruptly
terminate the stream or MAY take no action.</t>
          <t>When a server sends CANCEL_PUSH, it is indicating that it will not be fulfilling
a promise and has not created a push stream.  The client should not expect the
corresponding promise to be fulfilled.</t>
          <t>Sending CANCEL_PUSH has no direct effect on the state of existing push streams.
A server SHOULD NOT send a CANCEL_PUSH when it has already created a
corresponding push stream, and a client SHOULD NOT send a CANCEL_PUSH when it
has already received a corresponding push stream.</t>
          <t>A CANCEL_PUSH frame is sent on the control stream.  Receiving a CANCEL_PUSH
frame on a stream other than the control stream MUST be treated as a connection
error of type H3_FRAME_UNEXPECTED.</t>
          <figure anchor="fig-cancel-push">
            <name>CANCEL_PUSH Frame Payload</name>
            <artwork type="drawing" name="" align="left" alt=""><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Push ID (i)                        ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <t>The CANCEL_PUSH frame carries a Push ID encoded as a variable-length integer.
The Push ID identifies the server push that is being cancelled (see
<xref target="frame-push-promise" format="default"/>).  If a CANCEL_PUSH frame is received which references a
Push ID greater than currently allowed on the connection, this MUST be treated
as a connection error of type H3_ID_ERROR.</t>
          <t>If the client receives a CANCEL_PUSH frame, that frame might identify a Push ID
that has not yet been mentioned by a PUSH_PROMISE frame due to reordering.  If a
server receives a CANCEL_PUSH frame for a Push ID that has not yet been
mentioned by a PUSH_PROMISE frame, this MUST be treated as a connection error of
type H3_ID_ERROR.</t>
        </section>
        <section anchor="frame-settings" numbered="true" toc="default">
          <name>SETTINGS</name>
          <t>The SETTINGS frame (type=0x4) conveys configuration parameters that affect how
endpoints communicate, such as preferences and constraints on peer behavior.
Individually, a SETTINGS parameter can also be referred to as a "setting"; the
identifier and value of each setting parameter can be referred to as a "setting
identifier" and a "setting value".</t>
          <t>SETTINGS frames always apply to a connection, never a single stream.  A SETTINGS
frame MUST be sent as the first frame of each control stream (see
<xref target="control-streams" format="default"/>) by each peer, and MUST NOT be sent subsequently. If
an endpoint receives a second SETTINGS frame on the control stream, the endpoint
MUST respond with a connection error of type H3_FRAME_UNEXPECTED.</t>
          <t>SETTINGS frames MUST NOT be sent on any stream other than the control stream.
If an endpoint receives a SETTINGS frame on a different stream, the endpoint
MUST respond with a connection error of type H3_FRAME_UNEXPECTED.</t>
          <t>SETTINGS parameters are not negotiated; they describe characteristics of the
sending peer, which can be used by the receiving peer. However, a negotiation
can be implied by the use of SETTINGS - each peer uses SETTINGS to advertise a
set of supported values. The definition of the setting would describe how each
peer combines the two sets to conclude which choice will be used.  SETTINGS does
not provide a mechanism to identify when the choice takes effect.</t>
          <t>Different values for the same parameter can be advertised by each peer. For
example, a client might be willing to consume a very large response header,
while servers are more cautious about request size.</t>
          <t>The same setting identifier MUST NOT occur more than once in the SETTINGS frame.
A receiver MAY treat the presence of duplicate setting identifiers as a
connection error of type H3_SETTINGS_ERROR.</t>
          <t>The payload of a SETTINGS frame consists of zero or more parameters.  Each
parameter consists of a setting identifier and a value, both encoded as QUIC
variable-length integers.</t>
          <figure anchor="fig-ext-settings">
            <name>SETTINGS Parameter Format</name>
            <artwork type="drawing" name="" align="left" alt=""><![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 (i)                       ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Value (i)                         ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <t>An implementation MUST ignore the contents for any SETTINGS identifier it does
not understand.</t>
          <section anchor="settings-parameters" numbered="true" toc="default">
            <name>Defined SETTINGS Parameters</name>
            <t>The following settings are defined in HTTP/3:</t>
            <dl newline="false" spacing="normal">
              <dt>SETTINGS_MAX_HEADER_LIST_SIZE (0x6):</dt>
              <dd>
  The default value is unlimited.  See <xref target="header-formatting" format="default"/> for usage.</dd>
            </dl>
            <t>Setting identifiers of the format <tt>0x1f * N + 0x21</tt> for integer values of N are
reserved to exercise the requirement that unknown identifiers be ignored.  Such
settings have no defined meaning. Endpoints SHOULD include at least one such
setting in their SETTINGS frame. Endpoints MUST NOT consider such settings to
have any meaning upon receipt.</t>
            <t>Because the setting has no defined meaning, the value of the setting can be any
value the implementation selects.</t>
            <t>Additional settings can be defined by extensions to HTTP/3; see <xref target="extensions" format="default"/>
for more details.</t>
          </section>
          <section anchor="settings-initialization" numbered="true" toc="default">
            <name>Initialization</name>
            <t>An HTTP implementation MUST NOT send frames or requests which would be invalid
based on its current understanding of the peer's settings.</t>
            <t>All settings begin at an initial value.  Each endpoint SHOULD use these initial
values to send messages before the peer's SETTINGS frame has arrived, as packets
carrying the settings can be lost or delayed.  When the SETTINGS frame arrives,
any settings are changed to their new values.</t>
            <t>This removes the need to wait for the SETTINGS frame before sending messages.
Endpoints MUST NOT require any data to be received from the peer prior to
sending the SETTINGS frame; settings MUST be sent as soon as the transport is
ready to send data.</t>
            <t>For servers, the initial value of each client setting is the default value.</t>
            <t>For clients using a 1-RTT QUIC connection, the initial value of each server
setting is the default value.  1-RTT keys will always become available prior to
SETTINGS arriving, even if the server sends SETTINGS immediately. Clients SHOULD
NOT wait indefinitely for SETTINGS to arrive before sending requests, but SHOULD
process received datagrams in order to increase the likelihood of processing
SETTINGS before sending the first request.</t>
            <t>When a 0-RTT QUIC connection is being used, the initial value of each server
setting is the value used in the previous session. Clients SHOULD store the
settings the server provided in the connection where resumption information was
provided, but MAY opt not to store settings in certain cases (e.g., if the
session ticket is received before the SETTINGS frame). A client MUST comply with
stored settings - or default values, if no values are stored - when attempting
0-RTT. Once a server has provided new settings, clients MUST comply with those
values.</t>
            <t>A server can remember the settings that it advertised, or store an
integrity-protected copy of the values in the ticket and recover the information
when accepting 0-RTT data. A server uses the HTTP/3 settings values in
determining whether to accept 0-RTT data.  If the server cannot determine that
the settings remembered by a client are compatible with its current settings, it
MUST NOT accept 0-RTT data.  Remembered settings are compatible if a client
complying with those settings would not violate the server's current settings.</t>
            <t>A server MAY accept 0-RTT and subsequently provide different settings in its
SETTINGS frame. If 0-RTT data is accepted by the server, its SETTINGS frame MUST
NOT reduce any limits or alter any values that might be violated by the client
with its 0-RTT data.  The server MUST include all settings which differ from
their default values.  If a server accepts 0-RTT but then sends settings that
are not compatible with the previously specified settings, this MUST be treated
as a connection error of type H3_SETTINGS_ERROR. If a server accepts 0-RTT but
then sends a SETTINGS frame that omits a setting value that the client
understands (apart from reserved setting identifiers) that was previously
specified to have a non-default value, this MUST be treated as a connection
error of type H3_SETTINGS_ERROR.</t>
          </section>
        </section>
        <section anchor="frame-push-promise" numbered="true" toc="default">
          <name>PUSH_PROMISE</name>
          <t>The PUSH_PROMISE frame (type=0x5) is used to carry a promised request header
set from server to client on a request stream, as in HTTP/2.</t>
          <figure anchor="fig-push-promise">
            <name>PUSH_PROMISE Frame Payload</name>
            <artwork type="drawing" name="" align="left" alt=""><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Push ID (i)                        ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Header Block (*)                      ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <t>The payload consists of:</t>
          <dl newline="false" spacing="normal">
            <dt>Push ID:</dt>
            <dd>
  A variable-length integer that identifies the server push operation.  A Push
ID is used in push stream headers (<xref target="server-push" format="default"/>), CANCEL_PUSH frames
(<xref target="frame-cancel-push" format="default"/>).</dd>
            <dt>Header Block:</dt>
            <dd>
  QPACK-compressed request header fields for the promised response.  See <xref target="QPACK" format="default"/>
for more details.</dd>
          </dl>
          <t>A server MUST NOT use a Push ID that is larger than the client has provided in a
MAX_PUSH_ID frame (<xref target="frame-max-push-id" format="default"/>). A client MUST treat receipt of a
PUSH_PROMISE frame that contains a larger Push ID than the client has advertised
as a connection error of H3_ID_ERROR.</t>
          <t>A server MAY use the same Push ID in multiple PUSH_PROMISE frames. If so, the
decompressed request header sets MUST contain the same fields in the same
order, and both the name and and value in each field MUST be exact
matches. Clients SHOULD compare the request header sets for resources promised
multiple times. If a client receives a Push ID that has already been promised
and detects a mismatch, it MUST respond with a connection error of type
H3_GENERAL_PROTOCOL_ERROR. If the decompressed header sets match exactly, the
client SHOULD associate the pushed content with each stream on which
a PUSH_PROMISE was received.</t>
          <t>Allowing duplicate references to the same Push ID is primarily to reduce
duplication caused by concurrent requests.  A server SHOULD avoid reusing a Push
ID over a long period.  Clients are likely to consume server push responses and
not retain them for reuse over time.  Clients that see a PUSH_PROMISE that uses
a Push ID that they have already consumed and discarded are forced to ignore the
PUSH_PROMISE.</t>
          <t>If a PUSH_PROMISE frame is received on the control stream, the client MUST
respond with a connection error (<xref target="errors" format="default"/>) of type H3_FRAME_UNEXPECTED.</t>
          <t>A client MUST NOT send a PUSH_PROMISE frame.  A server MUST treat the receipt
of a PUSH_PROMISE frame as a connection error of type H3_FRAME_UNEXPECTED.</t>
          <t>See <xref target="server-push" format="default"/> for a description of the overall server push mechanism.</t>
        </section>
        <section anchor="frame-goaway" numbered="true" toc="default">
          <name>GOAWAY</name>
          <t>The GOAWAY frame (type=0x7) is used to initiate graceful shutdown of a
connection by a server.  GOAWAY allows a server to stop accepting new requests
while still finishing processing of previously received requests.  This enables
administrative actions, like server maintenance.  GOAWAY by itself does not
close a connection.</t>
          <figure anchor="fig-goaway">
            <name>GOAWAY Frame Payload</name>
            <artwork type="drawing" name="" align="left" alt=""><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Stream ID (i)                      ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <t>The GOAWAY frame is always sent on the control stream. It carries a QUIC Stream
ID for a client-initiated bidirectional stream encoded as a variable-length
integer.  A client MUST treat receipt of a GOAWAY frame containing a Stream ID
of any other type as a connection error of type H3_ID_ERROR.</t>
          <t>Clients do not need to send GOAWAY to initiate a graceful shutdown; they simply
stop making new requests.  A server MUST treat receipt of a GOAWAY frame on any
stream as a connection error (<xref target="errors" format="default"/>) of type H3_FRAME_UNEXPECTED.</t>
          <t>The GOAWAY frame applies to the connection, not a specific stream.  A client
MUST treat a GOAWAY frame on a stream other than the control stream as a
connection error (<xref target="errors" format="default"/>) of type H3_FRAME_UNEXPECTED.</t>
          <t>See <xref target="connection-shutdown" format="default"/> for more information on the use of the GOAWAY frame.</t>
        </section>
        <section anchor="frame-max-push-id" numbered="true" toc="default">
          <name>MAX_PUSH_ID</name>
          <t>The MAX_PUSH_ID frame (type=0xD) is used by clients to control the number of
server pushes that the server can initiate.  This sets the maximum value for a
Push ID that the server can use in PUSH_PROMISE and CANCEL_PUSH frames.
Consequently, this also limits the number of push streams that the server can
initiate in addition to the limit maintained by the QUIC transport.</t>
          <t>The MAX_PUSH_ID frame is always sent on the control stream.  Receipt of a
MAX_PUSH_ID frame on any other stream MUST be treated as a connection error of
type H3_FRAME_UNEXPECTED.</t>
          <t>A server MUST NOT send a MAX_PUSH_ID frame.  A client MUST treat the receipt of
a MAX_PUSH_ID frame as a connection error of type H3_FRAME_UNEXPECTED.</t>
          <t>The maximum Push ID is unset when a connection is created, meaning that a server
cannot push until it receives a MAX_PUSH_ID frame.  A client that wishes to
manage the number of promised server pushes can increase the maximum Push ID by
sending MAX_PUSH_ID frames as the server fulfills or cancels server pushes.</t>
          <figure anchor="fig-max-push">
            <name>MAX_PUSH_ID Frame Payload</name>
            <artwork type="drawing" name="" align="left" alt=""><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Push ID (i)                        ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <t>The MAX_PUSH_ID frame carries a single variable-length integer that identifies
the maximum value for a Push ID that the server can use (see
<xref target="frame-push-promise" format="default"/>).  A MAX_PUSH_ID frame cannot reduce the maximum Push ID;
receipt of a MAX_PUSH_ID that contains a smaller value than previously received
MUST be treated as a connection error of type H3_ID_ERROR.</t>
        </section>
        <section anchor="frame-reserved" numbered="true" toc="default">
          <name>Reserved Frame Types</name>
          <t>Frame types of the format <tt>0x1f * N + 0x21</tt> for integer values of N are reserved
to exercise the requirement that unknown types be ignored (<xref target="extensions" format="default"/>).
These frames have no semantics, and can be sent on any open stream when
application-layer padding is desired. They MAY also be sent on connections where
no data is currently being transferred. Endpoints MUST NOT consider these frames
to have any meaning upon receipt.</t>
          <t>The payload and length of the frames are selected in any manner the
implementation chooses.</t>
          <t>Frame types which were used in HTTP/2 where there is no corresponding HTTP/3
frame have also been reserved (<xref target="iana-frames" format="default"/>).  These frame types MUST NOT be
sent, and receipt MAY be treated as an error of type H3_FRAME_UNEXPECTED.</t>
        </section>
      </section>
    </section>
    <section anchor="errors" numbered="true" toc="default">
      <name>Error Handling</name>
      <t>QUIC allows the application to abruptly terminate (reset) individual streams or
the entire connection when an error is encountered.  These are referred to as
"stream errors" or "connection errors" and are described in more detail in
<xref target="QUIC-TRANSPORT" format="default"/>.</t>
      <t>An endpoint MAY choose to treat a stream error as a connection error under
certain circumstances.  Implementations need to consider the impact on
outstanding requests before making this choice.</t>
      <t>Because new error codes can be defined without negotiation (see <xref target="extensions" format="default"/>),
use of an error code in an unexpected context or receipt of an unknown error
code MUST be treated as equivalent to H3_NO_ERROR.  However, closing a stream
can have other effects regardless of the error code (see <xref target="request-response" format="default"/>).</t>
      <t>This section describes HTTP/3-specific error codes which can be used to express
the cause of a connection or stream error.</t>
      <section anchor="http-error-codes" numbered="true" toc="default">
        <name>HTTP/3 Error Codes</name>
        <t>The following error codes are defined for use when abruptly terminating streams,
aborting reading of streams, or immediately closing connections.</t>
        <dl newline="false" spacing="normal">
          <dt>H3_NO_ERROR (0x100):</dt>
          <dd>
  No error.  This is used when the connection or stream needs to be closed, but
there is no error to signal.</dd>
          <dt>H3_GENERAL_PROTOCOL_ERROR (0x101):</dt>
          <dd>
  Peer violated protocol requirements in a way which doesn't match a more
specific error code, or endpoint declines to use the more specific error code.</dd>
          <dt>H3_INTERNAL_ERROR (0x102):</dt>
          <dd>
  An internal error has occurred in the HTTP stack.</dd>
          <dt>H3_STREAM_CREATION_ERROR (0x103):</dt>
          <dd>
  The endpoint detected that its peer created a stream that it will not accept.</dd>
          <dt>H3_CLOSED_CRITICAL_STREAM (0x104):</dt>
          <dd>
  A stream required by the connection was closed or reset.</dd>
          <dt>H3_FRAME_UNEXPECTED (0x105):</dt>
          <dd>
  A frame was received which was not permitted in the current state or on the
current stream.</dd>
          <dt>H3_FRAME_ERROR (0x106):</dt>
          <dd>
  A frame that fails to satisfy layout requirements or with an invalid size
was received.</dd>
          <dt>H3_EXCESSIVE_LOAD (0x107):</dt>
          <dd>
  The endpoint detected that its peer is exhibiting a behavior that might be
generating excessive load.</dd>
          <dt>H3_ID_ERROR (0x108):</dt>
          <dd>
  A Stream ID or Push ID was used incorrectly, such as exceeding a limit,
reducing a limit, or being reused.</dd>
          <dt>H3_SETTINGS_ERROR (0x109):</dt>
          <dd>
  An endpoint detected an error in the payload of a SETTINGS frame.</dd>
          <dt>H3_MISSING_SETTINGS (0x10A):</dt>
          <dd>
  No SETTINGS frame was received at the beginning of the control stream.</dd>
          <dt>H3_REQUEST_REJECTED (0x10B):</dt>
          <dd>
  A server rejected a request without performing any application processing.</dd>
          <dt>H3_REQUEST_CANCELLED (0x10C):</dt>
          <dd>
  The request or its response (including pushed response) is cancelled.</dd>
          <dt>H3_REQUEST_INCOMPLETE (0x10D):</dt>
          <dd>
  The client's stream terminated without containing a fully-formed request.</dd>
          <dt>H3_CONNECT_ERROR (0x10F):</dt>
          <dd>
  The connection established in response to a CONNECT request was reset or
abnormally closed.</dd>
          <dt>H3_VERSION_FALLBACK (0x110):</dt>
          <dd>
  The requested operation cannot be served over HTTP/3.  The peer should
retry over HTTP/1.1.</dd>
        </dl>
        <t>Error codes of the format <tt>0x1f * N + 0x21</tt> for integer values of N are reserved
to exercise the requirement that unknown error codes be treated as equivalent to
H3_NO_ERROR (<xref target="extensions" format="default"/>). Implementations SHOULD select an error code from
this space with some probability when they would have sent H3_NO_ERROR.</t>
      </section>
    </section>
    <section anchor="extensions" numbered="true" toc="default">
      <name>Extensions to HTTP/3</name>
      <t>HTTP/3 permits extension of the protocol.  Within the limitations described in
this section, protocol extensions can be used to provide additional services or
alter any aspect of the protocol.  Extensions are effective only within the
scope of a single HTTP/3 connection.</t>
      <t>This applies to the protocol elements defined in this document.  This does not
affect the existing options for extending HTTP, such as defining new methods,
status codes, or header fields.</t>
      <t>Extensions are permitted to use new frame types (<xref target="frames" format="default"/>), new settings
(<xref target="settings-parameters" format="default"/>), new error codes (<xref target="errors" format="default"/>), or new unidirectional
stream types (<xref target="unidirectional-streams" format="default"/>).  Registries are established for
managing these extension points: frame types (<xref target="iana-frames" format="default"/>), settings
(<xref target="iana-settings" format="default"/>), error codes (<xref target="iana-error-codes" format="default"/>), and stream types
(<xref target="iana-stream-types" format="default"/>).</t>
      <t>Implementations MUST ignore unknown or unsupported values in all extensible
protocol elements.  Implementations MUST discard frames and unidirectional
streams 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, where a known frame type is required to be in a specific
location, such as the SETTINGS frame as the first frame of the control stream
(see <xref target="control-streams" format="default"/>), an unknown frame type does not satisfy that
requirement and SHOULD be treated as an error.</t>
      <t>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 HEADERS frame cannot be used until the peer has given a positive
signal that this is acceptable.  Coordinating when such a revised layout comes
into effect could prove complex.  As such, allocating new identifiers for
new definitions of existing protocol elements is likely to be more effective.</t>
      <t>This document doesn't mandate a specific method for negotiating the use of an
extension but notes that a setting (<xref target="settings-parameters" format="default"/>) 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 default value MUST be defined in such a fashion that the
extension is disabled if the setting is omitted.</t>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The security considerations of HTTP/3 should be comparable to those of HTTP/2
with TLS; the considerations from Section 10 of <xref target="HTTP2" format="default"/> apply in addition to
those listed here.</t>
      <t>When HTTP Alternative Services is used for discovery for HTTP/3 endpoints, the
security considerations of <xref target="ALTSVC" format="default"/> also apply.</t>
      <section anchor="traffic-analysis" numbered="true" toc="default">
        <name>Traffic Analysis</name>
        <t>Where HTTP/2 employs PADDING frames and Padding fields in other frames to make a
connection more resistant to traffic analysis, HTTP/3 can either rely on
transport-layer padding or employ the reserved frame and stream types discussed
in <xref target="frame-reserved" format="default"/> and <xref target="stream-grease" format="default"/>.  These methods of padding produce
different results in terms of the granularity of padding, how padding is
arranged in relation to the information that is being protected, whether
padding is applied in the case of packet loss, and how an implementation might
control padding.</t>
      </section>
      <section anchor="frame-parsing" numbered="true" toc="default">
        <name>Frame Parsing</name>
        <t>Several protocol elements contain nested length elements, typically in the form
of frames with an explicit length containing variable-length integers.  This
could pose a security risk to an incautious implementer.  An implementation MUST
ensure that the length of a frame exactly matches the length of the fields it
contains.</t>
      </section>
      <section anchor="early-data" numbered="true" toc="default">
        <name>Early Data</name>
        <t>The use of 0-RTT with HTTP/3 creates an exposure to replay attack.  The
anti-replay mitigations in <xref target="HTTP-REPLAY" format="default"/> MUST be applied when using
HTTP/3 with 0-RTT.</t>
      </section>
      <section anchor="migration" numbered="true" toc="default">
        <name>Migration</name>
        <t>Certain HTTP implementations use the client address for logging or
access-control purposes.  Since a QUIC client's address might change during a
connection (and future versions might support simultaneous use of multiple
addresses), such implementations will need to either actively retrieve the
client's current address or addresses when they are relevant or explicitly
accept that the original address might change.</t>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document registers a new ALPN protocol ID (<xref target="iana-alpn" format="default"/>) and creates new
registries that manage the assignment of codepoints in HTTP/3.</t>
      <section anchor="iana-alpn" numbered="true" toc="default">
        <name>Registration of HTTP/3 Identification String</name>
        <t>This document creates a new registration for the identification of
HTTP/3 in the "Application Layer Protocol Negotiation (ALPN)
Protocol IDs" registry established in <xref target="RFC7301" format="default"/>.</t>
        <t>The "h3" string identifies HTTP/3:</t>
        <dl newline="false" spacing="normal">
          <dt>Protocol:</dt>
          <dd>
  HTTP/3</dd>
          <dt>Identification Sequence:</dt>
          <dd>
  0x68 0x33 ("h3")</dd>
          <dt>Specification:</dt>
          <dd>
  This document</dd>
        </dl>
      </section>
      <section anchor="iana-policy" numbered="true" toc="default">
        <name>New Registries</name>
        <t>New registries created in this document operate under the QUIC registration
policy documented in Section 22.1 of <xref target="QUIC-TRANSPORT" format="default"/>.  These registries all
include the common set of fields listed in Section 22.1.1 of <xref target="QUIC-TRANSPORT" format="default"/>.</t>
        <t>The initial allocations in these registries created in this document are all
assigned permanent status and list as contact both the IESG (iesg@ietf.org) and
the HTTP working group (ietf-http-wg@w3.org).</t>
        <section anchor="iana-frames" numbered="true" toc="default">
          <name>Frame Types</name>
          <t>This document establishes a registry for HTTP/3 frame type codes. The "HTTP/3
Frame Type" registry governs a 62-bit space.  This registry follows the QUIC
registry policy; see <xref target="iana-policy" format="default"/>.  Permanent registrations in this registry
are assigned using the Specification Required policy <xref target="RFC8126" format="default"/>, except for
values between 0x00 and 0x3f (in hexadecimal; inclusive), which are assigned
using Standards Action or IESG Approval as defined in Section 4.9 and 4.10 of
<xref target="RFC8126" format="default"/>.</t>
          <t>While this registry is separate from the "HTTP/2 Frame Type" registry defined in
<xref target="HTTP2" format="default"/>, it is preferable that the assignments parallel each other where the
code spaces overlap.  If an entry is present in only one registry, every effort
SHOULD be made to avoid assigning the corresponding value to an unrelated
operation.</t>
          <t>In addition to common fields as described in <xref target="iana-policy" format="default"/>, permanent
registrations in this registry MUST include the following field:</t>
          <dl newline="false" spacing="normal">
            <dt>Frame Type:</dt>
            <dd>
  A name or label for the frame type.</dd>
          </dl>
          <t>Specifications of frame types MUST include a description of the frame layout and
its semantics, including any parts of the frame that are conditionally present.</t>
          <t>The entries in <xref target="iana-frame-table" format="default"/> are registered by this document.</t>
          <table anchor="iana-frame-table" align="center">
            <name>Initial HTTP/3 Frame Types</name>
            <thead>
              <tr>
                <th align="left">Frame Type</th>
                <th align="center">Value</th>
                <th align="left">Specification</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">DATA</td>
                <td align="center">0x0</td>
                <td align="left">
                  <xref target="frame-data" format="default"/></td>
              </tr>
              <tr>
                <td align="left">HEADERS</td>
                <td align="center">0x1</td>
                <td align="left">
                  <xref target="frame-headers" format="default"/></td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x2</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">CANCEL_PUSH</td>
                <td align="center">0x3</td>
                <td align="left">
                  <xref target="frame-cancel-push" format="default"/></td>
              </tr>
              <tr>
                <td align="left">SETTINGS</td>
                <td align="center">0x4</td>
                <td align="left">
                  <xref target="frame-settings" format="default"/></td>
              </tr>
              <tr>
                <td align="left">PUSH_PROMISE</td>
                <td align="center">0x5</td>
                <td align="left">
                  <xref target="frame-push-promise" format="default"/></td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x6</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">GOAWAY</td>
                <td align="center">0x7</td>
                <td align="left">
                  <xref target="frame-goaway" format="default"/></td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x8</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x9</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">MAX_PUSH_ID</td>
                <td align="center">0xD</td>
                <td align="left">
                  <xref target="frame-max-push-id" format="default"/></td>
              </tr>
            </tbody>
          </table>
          <t>Additionally, each code of the format <tt>0x1f * N + 0x21</tt> for integer values of N
(that is, <tt>0x21</tt>, <tt>0x40</tt>, ..., through <tt>0x3FFFFFFFFFFFFFFE</tt>) MUST NOT be
assigned by IANA.</t>
        </section>
        <section anchor="iana-settings" numbered="true" toc="default">
          <name>Settings Parameters</name>
          <t>This document establishes a registry for HTTP/3 settings.  The "HTTP/3 Settings"
registry governs a 62-bit space.  This registry follows the QUIC registry
policy; see <xref target="iana-policy" format="default"/>.  Permanent registrations in this registry are
assigned using the Specification Required policy <xref target="RFC8126" format="default"/>, except for values
between 0x00 and 0x3f (in hexadecimal; inclusive), which are assigned using
Standards Action or IESG Approval as defined in Section 4.9 and 4.10 of
<xref target="RFC8126" format="default"/>.</t>
          <t>While this registry is separate from the "HTTP/2 Settings" registry defined in
<xref target="HTTP2" format="default"/>, it is preferable that the assignments parallel each other.  If an
entry is present in only one registry, every effort SHOULD be made to avoid
assigning the corresponding value to an unrelated operation.</t>
          <t>In addition to common fields as described in <xref target="iana-policy" format="default"/>, permanent
registrations in this registry MUST include the following fields:</t>
          <dl newline="false" spacing="normal">
            <dt>Setting Name:</dt>
            <dd>
  A symbolic name for the setting.  Specifying a setting name is optional.</dd>
            <dt>Default:</dt>
            <dd>
  The value of the setting unless otherwise indicated. A default SHOULD be the
most restrictive possible value.</dd>
          </dl>
          <t>The entries in <xref target="iana-setting-table" format="default"/> are registered by this document.</t>
          <table anchor="iana-setting-table" align="center">
            <name>Initial HTTP/3 Settings</name>
            <thead>
              <tr>
                <th align="left">Setting Name</th>
                <th align="center">Value</th>
                <th align="left">Specification</th>
                <th align="left">Default</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x2</td>
                <td align="left">N/A</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x3</td>
                <td align="left">N/A</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x4</td>
                <td align="left">N/A</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x5</td>
                <td align="left">N/A</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">MAX_HEADER_LIST_SIZE</td>
                <td align="center">0x6</td>
                <td align="left">
                  <xref target="settings-parameters" format="default"/></td>
                <td align="left">Unlimited</td>
              </tr>
            </tbody>
          </table>
          <t>Additionally, each code of the format <tt>0x1f * N + 0x21</tt> for integer values of N
(that is, <tt>0x21</tt>, <tt>0x40</tt>, ..., through <tt>0x3FFFFFFFFFFFFFFE</tt>) MUST NOT be
assigned by IANA.</t>
        </section>
        <section anchor="iana-error-codes" numbered="true" toc="default">
          <name>Error Codes</name>
          <t>This document establishes a registry for HTTP/3 error codes. The "HTTP/3 Error
Code" registry manages a 62-bit space.  This registry follows the QUIC registry
policy; see <xref target="iana-policy" format="default"/>.  Permanent registrations in this registry are
assigned using the Specification Required policy <xref target="RFC8126" format="default"/>, except for values
between 0x00 and 0x3f (in hexadecimal; inclusive), which are assigned using
Standards Action or IESG Approval as defined in Section 4.9 and 4.10 of
<xref target="RFC8126" format="default"/>.</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>In addition to common fields as described in <xref target="iana-policy" format="default"/>, permanent
registrations in this registry MUST include the following fields:</t>
          <dl newline="false" spacing="normal">
            <dt>Name:</dt>
            <dd>
  A name for the error code.  Specifying an error code name is optional.</dd>
            <dt>Description:</dt>
            <dd>
  A brief description of the error code semantics.</dd>
          </dl>
          <t>The entries in the <xref target="iana-error-table" format="default"/> are registered by this document.</t>
          <table anchor="iana-error-table" align="center">
            <name>Initial HTTP/3 Error Codes</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
                <th align="left">Description</th>
                <th align="left">Specification</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">H3_NO_ERROR</td>
                <td align="left">0x0100</td>
                <td align="left">No error</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_GENERAL_PROTOCOL_ERROR</td>
                <td align="left">0x0101</td>
                <td align="left">General protocol error</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_INTERNAL_ERROR</td>
                <td align="left">0x0102</td>
                <td align="left">Internal error</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_STREAM_CREATION_ERROR</td>
                <td align="left">0x0103</td>
                <td align="left">Stream creation error</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_CLOSED_CRITICAL_STREAM</td>
                <td align="left">0x0104</td>
                <td align="left">Critical stream was closed</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_FRAME_UNEXPECTED</td>
                <td align="left">0x0105</td>
                <td align="left">Frame not permitted in the current state</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_FRAME_ERROR</td>
                <td align="left">0x0106</td>
                <td align="left">Frame violated layout or size rules</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_EXCESSIVE_LOAD</td>
                <td align="left">0x0107</td>
                <td align="left">Peer generating excessive load</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_ID_ERROR</td>
                <td align="left">0x0108</td>
                <td align="left">An identifier was used incorrectly</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_SETTINGS_ERROR</td>
                <td align="left">0x0109</td>
                <td align="left">SETTINGS frame contained invalid values</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_MISSING_SETTINGS</td>
                <td align="left">0x010A</td>
                <td align="left">No SETTINGS frame received</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_REQUEST_REJECTED</td>
                <td align="left">0x010B</td>
                <td align="left">Request not processed</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_REQUEST_CANCELLED</td>
                <td align="left">0x010C</td>
                <td align="left">Data no longer needed</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_REQUEST_INCOMPLETE</td>
                <td align="left">0x010D</td>
                <td align="left">Stream terminated early</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_CONNECT_ERROR</td>
                <td align="left">0x010F</td>
                <td align="left">TCP reset or error on CONNECT request</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_VERSION_FALLBACK</td>
                <td align="left">0x0110</td>
                <td align="left">Retry over HTTP/1.1</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
            </tbody>
          </table>
          <t>Additionally, each code of the format <tt>0x1f * N + 0x21</tt> for integer values of N
(that is, <tt>0x21</tt>, <tt>0x40</tt>, ..., through <tt>0x3FFFFFFFFFFFFFFE</tt>) MUST NOT be
assigned by IANA.</t>
        </section>
        <section anchor="iana-stream-types" numbered="true" toc="default">
          <name>Stream Types</name>
          <t>This document establishes a registry for HTTP/3 unidirectional stream types. The
"HTTP/3 Stream Type" registry governs a 62-bit space.  This registry follows the
QUIC registry policy; see <xref target="iana-policy" format="default"/>.  Permanent registrations in this
registry are assigned using the Specification Required policy <xref target="RFC8126" format="default"/>,
except for values between 0x00 and 0x3f (in hexadecimal; inclusive), which are
assigned using Standards Action or IESG Approval as defined in Section 4.9 and
4.10 of <xref target="RFC8126" format="default"/>.</t>
          <t>In addition to common fields as described in <xref target="iana-policy" format="default"/>, permanent
registrations in this registry MUST include the following fields:</t>
          <dl newline="false" spacing="normal">
            <dt>Stream Type:</dt>
            <dd>
  A name or label for the stream type.</dd>
            <dt>Sender:</dt>
            <dd>
  Which endpoint on a connection may initiate a stream of this type. Values are
"Client", "Server", or "Both".</dd>
          </dl>
          <t>Specifications for permanent registrations MUST include a description of the
stream type, including the layout semantics of the stream contents.</t>
          <t>The entries in the following table are registered by this document.</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Stream Type</th>
                <th align="center">Value</th>
                <th align="left">Specification</th>
                <th align="left">Sender</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Control Stream</td>
                <td align="center">0x00</td>
                <td align="left">
                  <xref target="control-streams" format="default"/></td>
                <td align="left">Both</td>
              </tr>
              <tr>
                <td align="left">Push Stream</td>
                <td align="center">0x01</td>
                <td align="left">
                  <xref target="server-push" format="default"/></td>
                <td align="left">Server</td>
              </tr>
            </tbody>
          </table>
          <t>Additionally, each code of the format <tt>0x1f * N + 0x21</tt> for integer values of N
(that is, <tt>0x21</tt>, <tt>0x40</tt>, ..., through <tt>0x3FFFFFFFFFFFFFFE</tt>) MUST NOT be
assigned by IANA.</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="QUIC-TRANSPORT">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-quic-transport-26"/>
            <author initials="J." surname="Iyengar" fullname="Jana Iyengar" role="editor">
              <organization>Fastly</organization>
            </author>
            <author initials="M." surname="Thomson" fullname="Martin Thomson" role="editor">
              <organization>Mozilla</organization>
            </author>
            <date year="2020" month="February" day="21"/>
          </front>
        </reference>
        <reference anchor="QPACK">
          <front>
            <title>QPACK: Header Compression for HTTP over QUIC</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qpack-13"/>
            <author initials="C." surname="Krasic" fullname="Charles 'Buck' Krasic">
              <organization>Google, Inc</organization>
            </author>
            <author initials="M." surname="Bishop" fullname="Mike Bishop">
              <organization>Akamai Technologies</organization>
            </author>
            <author initials="A." surname="Frindell" fullname="Alan Frindell" role="editor">
              <organization>Facebook</organization>
            </author>
            <date year="2020" month="February" day="21"/>
          </front>
        </reference>
        <reference anchor="HTTP2" target="https://www.rfc-editor.org/info/rfc7540">
          <front>
            <title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7540"/>
            <seriesInfo name="RFC" value="7540"/>
            <author initials="M." surname="Belshe" fullname="M. Belshe">
              <organization/>
            </author>
            <author initials="R." surname="Peon" fullname="R. Peon">
              <organization/>
            </author>
            <author initials="M." surname="Thomson" fullname="M. Thomson" role="editor">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t>
              <t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC5234" target="https://www.rfc-editor.org/info/rfc5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <seriesInfo name="DOI" value="10.17487/RFC5234"/>
            <seriesInfo name="RFC" value="5234"/>
            <seriesInfo name="STD" value="68"/>
            <author initials="D." surname="Crocker" fullname="D. Crocker" role="editor">
              <organization/>
            </author>
            <author initials="P." surname="Overell" fullname="P. Overell">
              <organization/>
            </author>
            <date year="2008" month="January"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7230" target="https://www.rfc-editor.org/info/rfc7230">
          <front>
            <title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
            <seriesInfo name="DOI" value="10.17487/RFC7230"/>
            <seriesInfo name="RFC" value="7230"/>
            <author initials="R." surname="Fielding" fullname="R. Fielding" role="editor">
              <organization/>
            </author>
            <author initials="J." surname="Reschke" fullname="J. Reschke" role="editor">
              <organization/>
            </author>
            <date year="2014" month="June"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the "http" and "https" Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="ALTSVC" target="https://www.rfc-editor.org/info/rfc7838">
          <front>
            <title>HTTP Alternative Services</title>
            <seriesInfo name="DOI" value="10.17487/RFC7838"/>
            <seriesInfo name="RFC" value="7838"/>
            <author initials="M." surname="Nottingham" fullname="M. Nottingham">
              <organization/>
            </author>
            <author initials="P." surname="McManus" fullname="P. McManus">
              <organization/>
            </author>
            <author initials="J." surname="Reschke" fullname="J. Reschke">
              <organization/>
            </author>
            <date year="2016" month="April"/>
            <abstract>
              <t>This document specifies "Alternative Services" for HTTP, which allow an origin's resources to be authoritatively available at a separate network location, possibly accessed with a different protocol configuration.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6066" target="https://www.rfc-editor.org/info/rfc6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <seriesInfo name="DOI" value="10.17487/RFC6066"/>
            <seriesInfo name="RFC" value="6066"/>
            <author initials="D." surname="Eastlake 3rd" fullname="D. Eastlake 3rd">
              <organization/>
            </author>
            <date year="2011" month="January"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions.  It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2".  The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7838" target="https://www.rfc-editor.org/info/rfc7838">
          <front>
            <title>HTTP Alternative Services</title>
            <seriesInfo name="DOI" value="10.17487/RFC7838"/>
            <seriesInfo name="RFC" value="7838"/>
            <author initials="M." surname="Nottingham" fullname="M. Nottingham">
              <organization/>
            </author>
            <author initials="P." surname="McManus" fullname="P. McManus">
              <organization/>
            </author>
            <author initials="J." surname="Reschke" fullname="J. Reschke">
              <organization/>
            </author>
            <date year="2016" month="April"/>
            <abstract>
              <t>This document specifies "Alternative Services" for HTTP, which allow an origin's resources to be authoritatively available at a separate network location, possibly accessed with a different protocol configuration.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8164" target="https://www.rfc-editor.org/info/rfc8164">
          <front>
            <title>Opportunistic Security for HTTP/2</title>
            <seriesInfo name="DOI" value="10.17487/RFC8164"/>
            <seriesInfo name="RFC" value="8164"/>
            <author initials="M." surname="Nottingham" fullname="M. Nottingham">
              <organization/>
            </author>
            <author initials="M." surname="Thomson" fullname="M. Thomson">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t>This document describes how "http" URIs can be accessed using Transport Layer Security (TLS) and HTTP/2 to mitigate pervasive monitoring attacks.  This mechanism not a replacement for "https" URIs; it is vulnerable to active attacks.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7231" target="https://www.rfc-editor.org/info/rfc7231">
          <front>
            <title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
            <seriesInfo name="DOI" value="10.17487/RFC7231"/>
            <seriesInfo name="RFC" value="7231"/>
            <author initials="R." surname="Fielding" fullname="R. Fielding" role="editor">
              <organization/>
            </author>
            <author initials="J." surname="Reschke" fullname="J. Reschke" role="editor">
              <organization/>
            </author>
            <date year="2014" month="June"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems.  This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <seriesInfo name="DOI" value="10.17487/RFC3986"/>
            <seriesInfo name="RFC" value="3986"/>
            <seriesInfo name="STD" value="66"/>
            <author initials="T." surname="Berners-Lee" fullname="T. Berners-Lee">
              <organization/>
            </author>
            <author initials="R." surname="Fielding" fullname="R. Fielding">
              <organization/>
            </author>
            <author initials="L." surname="Masinter" fullname="L. Masinter">
              <organization/>
            </author>
            <date year="2005" month="January"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6265" target="https://www.rfc-editor.org/info/rfc6265">
          <front>
            <title>HTTP State Management Mechanism</title>
            <seriesInfo name="DOI" value="10.17487/RFC6265"/>
            <seriesInfo name="RFC" value="6265"/>
            <author initials="A." surname="Barth" fullname="A. Barth">
              <organization/>
            </author>
            <date year="2011" month="April"/>
            <abstract>
              <t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol.  Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet.  This document obsoletes RFC 2965.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC0793" target="https://www.rfc-editor.org/info/rfc793">
          <front>
            <title>Transmission Control Protocol</title>
            <seriesInfo name="DOI" value="10.17487/RFC0793"/>
            <seriesInfo name="RFC" value="793"/>
            <seriesInfo name="STD" value="7"/>
            <author initials="J." surname="Postel" fullname="J. Postel">
              <organization/>
            </author>
            <date year="1981" month="September"/>
          </front>
        </reference>
        <reference anchor="HTTP-REPLAY" target="https://www.rfc-editor.org/info/rfc8470">
          <front>
            <title>Using Early Data in HTTP</title>
            <seriesInfo name="DOI" value="10.17487/RFC8470"/>
            <seriesInfo name="RFC" value="8470"/>
            <author initials="M." surname="Thomson" fullname="M. Thomson">
              <organization/>
            </author>
            <author initials="M." surname="Nottingham" fullname="M. Nottingham">
              <organization/>
            </author>
            <author initials="W." surname="Tarreau" fullname="W. Tarreau">
              <organization/>
            </author>
            <date year="2018" month="September"/>
            <abstract>
              <t>Using TLS early data creates an exposure to the possibility of a replay attack.  This document defines mechanisms that allow clients to communicate with servers about HTTP requests that are sent in early data.  Techniques are described that use these mechanisms to mitigate the risk of replay.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <seriesInfo name="DOI" value="10.17487/RFC8126"/>
            <seriesInfo name="RFC" value="8126"/>
            <seriesInfo name="BCP" value="26"/>
            <author initials="M." surname="Cotton" fullname="M. Cotton">
              <organization/>
            </author>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <author initials="T." surname="Narten" fullname="T. Narten">
              <organization/>
            </author>
            <date year="2017" month="June"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters.  To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper.  For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed.  This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7413" target="https://www.rfc-editor.org/info/rfc7413">
          <front>
            <title>TCP Fast Open</title>
            <seriesInfo name="DOI" value="10.17487/RFC7413"/>
            <seriesInfo name="RFC" value="7413"/>
            <author initials="Y." surname="Cheng" fullname="Y. Cheng">
              <organization/>
            </author>
            <author initials="J." surname="Chu" fullname="J. Chu">
              <organization/>
            </author>
            <author initials="S." surname="Radhakrishnan" fullname="S. Radhakrishnan">
              <organization/>
            </author>
            <author initials="A." surname="Jain" fullname="A. Jain">
              <organization/>
            </author>
            <date year="2014" month="December"/>
            <abstract>
              <t>This document describes an experimental TCP mechanism called TCP Fast Open (TFO).  TFO allows data to be carried in the SYN and SYN-ACK packets and consumed by the receiving end during the initial connection handshake, and saves up to one full round-trip time (RTT) compared to the standard TCP, which requires a three-way handshake (3WHS) to complete before data can be exchanged.  However, TFO deviates from the standard TCP semantics, since the data in the SYN could be replayed to an application in some rare circumstances.  Applications should not use TFO unless they can tolerate this issue, as detailed in the Applicability section.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="HPACK" target="https://www.rfc-editor.org/info/rfc7541">
          <front>
            <title>HPACK: Header Compression for HTTP/2</title>
            <seriesInfo name="DOI" value="10.17487/RFC7541"/>
            <seriesInfo name="RFC" value="7541"/>
            <author initials="R." surname="Peon" fullname="R. Peon">
              <organization/>
            </author>
            <author initials="H." surname="Ruellan" fullname="H. Ruellan">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>This specification defines HPACK, a compression format for efficiently representing HTTP header fields, to be used in HTTP/2.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6585" target="https://www.rfc-editor.org/info/rfc6585">
          <front>
            <title>Additional HTTP Status Codes</title>
            <seriesInfo name="DOI" value="10.17487/RFC6585"/>
            <seriesInfo name="RFC" value="6585"/>
            <author initials="M." surname="Nottingham" fullname="M. Nottingham">
              <organization/>
            </author>
            <author initials="R." surname="Fielding" fullname="R. Fielding">
              <organization/>
            </author>
            <date year="2012" month="April"/>
            <abstract>
              <t>This document specifies additional HyperText Transfer Protocol (HTTP) status codes for a variety of common situations.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7301" target="https://www.rfc-editor.org/info/rfc7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <seriesInfo name="DOI" value="10.17487/RFC7301"/>
            <seriesInfo name="RFC" value="7301"/>
            <author initials="S." surname="Friedl" fullname="S. Friedl">
              <organization/>
            </author>
            <author initials="A." surname="Popov" fullname="A. Popov">
              <organization/>
            </author>
            <author initials="A." surname="Langley" fullname="A. Langley">
              <organization/>
            </author>
            <author initials="E." surname="Stephan" fullname="E. Stephan">
              <organization/>
            </author>
            <date year="2014" month="July"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="h2-considerations" numbered="true" toc="default">
      <name>Considerations for Transitioning from HTTP/2</name>
      <t>HTTP/3 is strongly informed by HTTP/2, and bears many similarities.  This
section describes the approach taken to design HTTP/3, points out important
differences from HTTP/2, and describes how to map HTTP/2 extensions into HTTP/3.</t>
      <t>HTTP/3 begins from the premise that similarity to HTTP/2 is preferable, but not
a hard requirement.  HTTP/3 departs from HTTP/2 where QUIC differs from TCP,
either to take advantage of QUIC features (like streams) or to accommodate
important shortcomings (such as a lack of total ordering). These differences
make HTTP/3 similar to HTTP/2 in key aspects, such as the relationship of
requests and responses to streams. However, the details of the HTTP/3 design are
substantially different than HTTP/2.</t>
      <t>These departures are noted in this section.</t>
      <section anchor="h2-streams" numbered="true" toc="default">
        <name>Streams</name>
        <t>HTTP/3 permits use of a larger number of streams (2^62-1) than HTTP/2.  The
considerations about exhaustion of stream identifier space apply, though the
space is significantly larger such that it is likely that other limits in QUIC
are reached first, such as the limit on the connection flow control window.</t>
        <t>In contrast to HTTP/2, stream concurrency in HTTP/3 is managed by QUIC.  QUIC
considers a stream closed when all data has been received and sent data has been
acknowledged by the peer.  HTTP/2 considers a stream closed when the frame
containing the END_STREAM bit has been committed to the transport. As a result,
the stream for an equivalent exchange could remain "active" for a longer period
of time.  HTTP/3 servers might choose to permit a larger number of concurrent
client-initiated bidirectional streams to achieve equivalent concurrency to
HTTP/2, depending on the expected usage patterns.</t>
        <t>Due to the presence of other unidirectional stream types, HTTP/3 does not rely
exclusively on the number of concurrent unidirectional streams to control the
number of concurrent in-flight pushes.  Instead, HTTP/3 clients use the
MAX_PUSH_ID frame to control the number of pushes received from an HTTP/3
server.</t>
      </section>
      <section anchor="h2-frames" numbered="true" toc="default">
        <name>HTTP Frame Types</name>
        <t>Many framing concepts from HTTP/2 can be elided on QUIC, because the transport
deals with them. Because frames are already on a stream, they can omit the
stream number. Because frames do not block multiplexing (QUIC's multiplexing
occurs below this layer), the support for variable-maximum-length packets can be
removed. Because stream termination is handled by QUIC, an END_STREAM flag is
not required.  This permits the removal of the Flags field from the generic
frame layout.</t>
        <t>Frame payloads are largely drawn from <xref target="HTTP2" format="default"/>. However, QUIC includes many
features (e.g., flow control) which are also present in HTTP/2. In these cases,
the HTTP mapping does not re-implement them. As a result, several HTTP/2 frame
types are not required in HTTP/3. Where an HTTP/2-defined frame is no longer
used, the frame ID has been reserved in order to maximize portability between
HTTP/2 and HTTP/3 implementations. However, even equivalent frames between the
two mappings are not identical.</t>
        <t>Many of the differences arise from the fact that HTTP/2 provides an absolute
ordering between frames across all streams, while QUIC provides this guarantee
on each stream only.  As a result, if a frame type makes assumptions that frames
from different streams will still be received in the order sent, HTTP/3 will
break them.</t>
        <t>Some examples of feature adaptations are described below, as well as general
guidance to extension frame implementors converting an HTTP/2 extension to
HTTP/3.</t>
        <section anchor="h2-diff-priority" numbered="true" toc="default">
          <name>Prioritization Differences</name>
          <t>HTTP/2 specifies priority assignments in PRIORITY frames and (optionally) in
HEADERS frames. HTTP/3 does not provide a means of signaling priority.</t>
          <t>Note that while there is no explicit signaling for priority, this does not mean
that prioritization is not important for achieving good performance.</t>
        </section>
        <section anchor="header-compression-differences" numbered="true" toc="default">
          <name>Header Compression Differences</name>
          <t>HPACK was designed with the assumption of in-order delivery. A sequence of
encoded header blocks must arrive (and be decoded) at an endpoint in the same
order in which they were encoded. This ensures that the dynamic state at the two
endpoints remains in sync.</t>
          <t>Because this total ordering is not provided by QUIC, HTTP/3 uses a modified
version of HPACK, called QPACK.  QPACK uses a single unidirectional stream to
make all modifications to the dynamic table, ensuring a total order of updates.
All frames which contain encoded headers merely reference the table state at a
given time without modifying it.</t>
          <t><xref target="QPACK" format="default"/> provides additional details.</t>
        </section>
        <section anchor="guidance-for-new-frame-type-definitions" numbered="true" toc="default">
          <name>Guidance for New Frame Type Definitions</name>
          <t>Frame type definitions in HTTP/3 often use the QUIC variable-length integer
encoding.  In particular, Stream IDs use this encoding, which allows for a
larger range of possible values than the encoding used in HTTP/2.  Some frames
in HTTP/3 use an identifier rather than a Stream ID (e.g., Push
IDs). Redefinition of the encoding of extension frame types might be necessary
if the encoding includes a Stream ID.</t>
          <t>Because the Flags field is not present in generic HTTP/3 frames, those frames
which depend on the presence of flags need to allocate space for flags as part
of their frame payload.</t>
          <t>Other than this issue, frame type HTTP/2 extensions are typically portable to
QUIC simply by replacing Stream 0 in HTTP/2 with a control stream in HTTP/3.
HTTP/3 extensions will not assume ordering, but would not be harmed by ordering,
and would be portable to HTTP/2 in the same manner.</t>
        </section>
        <section anchor="mapping-between-http2-and-http3-frame-types" numbered="true" toc="default">
          <name>Mapping Between HTTP/2 and HTTP/3 Frame Types</name>
          <dl newline="false" spacing="normal">
            <dt>DATA (0x0):</dt>
            <dd>
  Padding is not defined in HTTP/3 frames.  See <xref target="frame-data" format="default"/>.</dd>
            <dt>HEADERS (0x1):</dt>
            <dd>
  The PRIORITY region of HEADERS is not defined in HTTP/3 frames. Padding is not
defined in HTTP/3 frames.  See <xref target="frame-headers" format="default"/>.</dd>
            <dt>PRIORITY (0x2):</dt>
            <dd>
  As described in <xref target="h2-diff-priority" format="default"/>, HTTP/3 does not provide a means of
signaling priority.</dd>
            <dt>RST_STREAM (0x3):</dt>
            <dd>
  RST_STREAM frames do not exist, since QUIC provides stream lifecycle
management.  The same code point is used for the CANCEL_PUSH frame
(<xref target="frame-cancel-push" format="default"/>).</dd>
            <dt>SETTINGS (0x4):</dt>
            <dd>
  SETTINGS frames are sent only at the beginning of the connection.  See
<xref target="frame-settings" format="default"/> and <xref target="h2-settings" format="default"/>.</dd>
            <dt>PUSH_PROMISE (0x5):</dt>
            <dd>
  The PUSH_PROMISE does not reference a stream; instead the push stream
references the PUSH_PROMISE frame using a Push ID.  See
<xref target="frame-push-promise" format="default"/>.</dd>
            <dt>PING (0x6):</dt>
            <dd>
  PING frames do not exist, since QUIC provides equivalent functionality.</dd>
            <dt>GOAWAY (0x7):</dt>
            <dd>
  GOAWAY is sent only from server to client and does not contain an error code.
See <xref target="frame-goaway" format="default"/>.</dd>
            <dt>WINDOW_UPDATE (0x8):</dt>
            <dd>
  WINDOW_UPDATE frames do not exist, since QUIC provides flow control.</dd>
            <dt>CONTINUATION (0x9):</dt>
            <dd>
  CONTINUATION frames do not exist; instead, larger HEADERS/PUSH_PROMISE
frames than HTTP/2 are permitted.</dd>
          </dl>
          <t>Frame types defined by extensions to HTTP/2 need to be separately registered for
HTTP/3 if still applicable.  The IDs of frames defined in <xref target="HTTP2" format="default"/> have been
reserved for simplicity.  Note that the frame type space in HTTP/3 is
substantially larger (62 bits versus 8 bits), so many HTTP/3 frame types have no
equivalent HTTP/2 code points.  See <xref target="iana-frames" format="default"/>.</t>
        </section>
      </section>
      <section anchor="h2-settings" numbered="true" toc="default">
        <name>HTTP/2 SETTINGS Parameters</name>
        <t>An important difference from HTTP/2 is that settings are sent once, as the first
frame of the control stream, and thereafter cannot change.  This eliminates many
corner cases around synchronization of changes.</t>
        <t>Some transport-level options that HTTP/2 specifies via the SETTINGS frame are
superseded by QUIC transport parameters in HTTP/3. The HTTP-level options that
are retained in HTTP/3 have the same value as in HTTP/2.</t>
        <t>Below is a listing of how each HTTP/2 SETTINGS parameter is mapped:</t>
        <dl newline="false" spacing="normal">
          <dt>SETTINGS_HEADER_TABLE_SIZE:</dt>
          <dd>
  See <xref target="QPACK" format="default"/>.</dd>
          <dt>SETTINGS_ENABLE_PUSH:</dt>
          <dd>
  This is removed in favor of the MAX_PUSH_ID which provides a more granular
control over server push.</dd>
          <dt>SETTINGS_MAX_CONCURRENT_STREAMS:</dt>
          <dd>
  QUIC controls the largest open Stream ID as part of its flow control logic.
Specifying SETTINGS_MAX_CONCURRENT_STREAMS in the SETTINGS frame is an error.</dd>
          <dt>SETTINGS_INITIAL_WINDOW_SIZE:</dt>
          <dd>
  QUIC requires both stream and connection flow control window sizes to be
specified in the initial transport handshake.  Specifying
SETTINGS_INITIAL_WINDOW_SIZE in the SETTINGS frame is an error.</dd>
          <dt>SETTINGS_MAX_FRAME_SIZE:</dt>
          <dd>
  This setting has no equivalent in HTTP/3.  Specifying it in the SETTINGS frame
is an error.</dd>
          <dt>SETTINGS_MAX_HEADER_LIST_SIZE:</dt>
          <dd>
  See <xref target="settings-parameters" format="default"/>.</dd>
        </dl>
        <t>In HTTP/3, setting values are variable-length integers (6, 14, 30, or 62 bits
long) rather than fixed-length 32-bit fields as in HTTP/2.  This will often
produce a shorter encoding, but can produce a longer encoding for settings which
use the full 32-bit space.  Settings ported from HTTP/2 might choose to redefine
their value to limit it to 30 bits for more efficient encoding, or to make use
of the 62-bit space if more than 30 bits are required.</t>
        <t>Settings need to be defined separately for HTTP/2 and HTTP/3. The IDs of
settings defined in <xref target="HTTP2" format="default"/> have been reserved for simplicity.  Note that
the settings identifier space in HTTP/3 is substantially larger (62 bits versus
16 bits), so many HTTP/3 settings have no equivalent HTTP/2 code point. See
<xref target="iana-settings" format="default"/>.</t>
        <t>As QUIC streams might arrive out-of-order, endpoints are advised to not wait for
the peers' settings to arrive before responding to other streams.  See
<xref target="settings-initialization" format="default"/>.</t>
      </section>
      <section anchor="http2-error-codes" numbered="true" toc="default">
        <name>HTTP/2 Error Codes</name>
        <t>QUIC has the same concepts of "stream" and "connection" errors that HTTP/2
provides. However, there is no direct portability of HTTP/2 error codes to
HTTP/3 error codes; the values are shifted in order to prevent accidental
or implicit conversion.</t>
        <t>The HTTP/2 error codes defined in Section 7 of <xref target="HTTP2" format="default"/> logically map to
the HTTP/3 error codes as follows:</t>
        <dl newline="false" spacing="normal">
          <dt>NO_ERROR (0x0):</dt>
          <dd>
  H3_NO_ERROR in <xref target="http-error-codes" format="default"/>.</dd>
          <dt>PROTOCOL_ERROR (0x1):</dt>
          <dd>
  This is mapped to H3_GENERAL_PROTOCOL_ERROR except in cases where more
specific error codes have been defined. This includes H3_FRAME_UNEXPECTED
and H3_CLOSED_CRITICAL_STREAM defined in <xref target="http-error-codes" format="default"/>.</dd>
          <dt>INTERNAL_ERROR (0x2):</dt>
          <dd>
  H3_INTERNAL_ERROR in <xref target="http-error-codes" format="default"/>.</dd>
          <dt>FLOW_CONTROL_ERROR (0x3):</dt>
          <dd>
  Not applicable, since QUIC handles flow control.</dd>
          <dt>SETTINGS_TIMEOUT (0x4):</dt>
          <dd>
  Not applicable, since no acknowledgement of SETTINGS is defined.</dd>
          <dt>STREAM_CLOSED (0x5):</dt>
          <dd>
  Not applicable, since QUIC handles stream management.</dd>
          <dt>FRAME_SIZE_ERROR (0x6):</dt>
          <dd>
  H3_FRAME_ERROR error code defined in <xref target="http-error-codes" format="default"/>.</dd>
          <dt>REFUSED_STREAM (0x7):</dt>
          <dd>
  H3_REQUEST_REJECTED (in <xref target="http-error-codes" format="default"/>) is used to indicate that a
request was not processed. Otherwise, not applicable because QUIC handles
stream management.</dd>
          <dt>CANCEL (0x8):</dt>
          <dd>
  H3_REQUEST_CANCELLED in <xref target="http-error-codes" format="default"/>.</dd>
          <dt>COMPRESSION_ERROR (0x9):</dt>
          <dd>
  Multiple error codes are defined in <xref target="QPACK" format="default"/>.</dd>
          <dt>CONNECT_ERROR (0xa):</dt>
          <dd>
  H3_CONNECT_ERROR in <xref target="http-error-codes" format="default"/>.</dd>
          <dt>ENHANCE_YOUR_CALM (0xb):</dt>
          <dd>
  H3_EXCESSIVE_LOAD in <xref target="http-error-codes" format="default"/>.</dd>
          <dt>INADEQUATE_SECURITY (0xc):</dt>
          <dd>
  Not applicable, since QUIC is assumed to provide sufficient security on all
connections.</dd>
          <dt>H3_1_1_REQUIRED (0xd):</dt>
          <dd>
  H3_VERSION_FALLBACK in <xref target="http-error-codes" format="default"/>.</dd>
        </dl>
        <t>Error codes need to be defined for HTTP/2 and HTTP/3 separately.  See
<xref target="iana-error-codes" format="default"/>.</t>
      </section>
    </section>
    <section anchor="change-log" numbered="true" toc="default">
      <name>Change Log</name>
      <ul empty="true" spacing="normal">
        <li>
          <strong>RFC Editor's Note:</strong>  Please remove this section prior to publication of a
final version of this document.</li>
      </ul>
      <section anchor="since-draft-ietf-quic-http-25" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-25</name>
        <ul spacing="normal">
          <li>Require QUICv1 for HTTP/3 (#3117, #3323)</li>
          <li>Remove DUPLICATE_PUSH and allow duplicate PUSH_PROMISE (#3275, #3309)</li>
          <li>Clarify the definition of "malformed" (#3352, #3345)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-24" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-24</name>
        <ul spacing="normal">
          <li>Removed H3_EARLY_RESPONSE error code; H3_NO_ERROR is recommended instead
(#3130,#3208)</li>
          <li>Unknown error codes are equivalent to H3_NO_ERROR (#3276,#3331)</li>
          <li>Some error codes are reserved for greasing (#3325,#3360)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-23" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-23</name>
        <ul spacing="normal">
          <li>Removed <tt>quic</tt> Alt-Svc parameter (#3061,#3118)</li>
          <li>Clients need not persist unknown settings for use in 0-RTT (#3110,#3113)</li>
          <li>Clarify error cases around CANCEL_PUSH (#2819,#3083)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-22" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-22</name>
        <ul spacing="normal">
          <li>Removed priority signaling (#2922,#2924)</li>
          <li>
            <t>Further changes to error codes (#2662,#2551):
            </t>
            <ul spacing="normal">
              <li>Error codes renumbered</li>
              <li>HTTP_MALFORMED_FRAME replaced by HTTP_FRAME_ERROR, HTTP_ID_ERROR, and others</li>
            </ul>
          </li>
          <li>Clarify how unknown frame types interact with required frame sequence
(#2867,#2858)</li>
          <li>Describe interactions with the transport in terms of defined interface terms
(#2857,#2805)</li>
          <li>Require the use of the <tt>http-opportunistic</tt> resource (RFC 8164) when scheme is
<tt>http</tt> (#2439,#2973)</li>
          <li>Settings identifiers cannot be duplicated (#2979)</li>
          <li>
            <t>Changes to SETTINGS frames in 0-RTT (#2972,#2790,#2945):
            </t>
            <ul spacing="normal">
              <li>Servers must send all settings with non-default values in their SETTINGS
frame, even when resuming</li>
              <li>If a client doesn't have settings associated with a 0-RTT ticket, it uses
the defaults</li>
              <li>Servers can't accept early data if they cannot recover the settings the
client will have remembered</li>
            </ul>
          </li>
          <li>Clarify that Upgrade and the 101 status code are prohibited (#2898,#2889)</li>
          <li>Clarify that frame types reserved for greasing can occur on any stream, but
frame types reserved due to HTTP/2 correspondence are prohibited
(#2997,#2692,#2693)</li>
          <li>Unknown error codes cannot be treated as errors (#2998,#2816)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-21" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-21</name>
        <t>No changes</t>
      </section>
      <section anchor="since-draft-ietf-quic-http-20" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-20</name>
        <ul spacing="normal">
          <li>Prohibit closing the control stream (#2509, #2666)</li>
          <li>Change default priority to use an orphan node (#2502, #2690)</li>
          <li>Exclusive priorities are restored (#2754, #2781)</li>
          <li>Restrict use of frames when using CONNECT (#2229, #2702)</li>
          <li>Close and maybe reset streams if a connection error occurs for CONNECT (#2228,
#2703)</li>
          <li>Encourage provision of sufficient unidirectional streams for QPACK (#2100,
#2529, #2762)</li>
          <li>Allow extensions to use server-initiated bidirectional streams (#2711, #2773)</li>
          <li>Clarify use of maximum header list size setting (#2516, #2774)</li>
          <li>
            <t>Extensive changes to error codes and conditions of their sending
            </t>
            <ul spacing="normal">
              <li>Require connection errors for more error conditions (#2511, #2510)</li>
              <li>Updated the error codes for illegal GOAWAY frames (#2714, #2707)</li>
              <li>Specified error code for HEADERS on control stream (#2708)</li>
              <li>Specified error code for servers receiving PUSH_PROMISE (#2709)</li>
              <li>Specified error code for receiving DATA before HEADERS (#2715)</li>
              <li>Describe malformed messages and their handling (#2410, #2764)</li>
              <li>Remove HTTP_PUSH_ALREADY_IN_CACHE error (#2812, #2813)</li>
              <li>Refactor Push ID related errors (#2818, #2820)</li>
              <li>Rationalize HTTP/3 stream creation errors (#2821, #2822)</li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-19" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-19</name>
        <ul spacing="normal">
          <li>SETTINGS_NUM_PLACEHOLDERS is 0x9 (#2443,#2530)</li>
          <li>Non-zero bits in the Empty field of the PRIORITY frame MAY be treated as an
error (#2501)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-18" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-18</name>
        <ul spacing="normal">
          <li>Resetting streams following a GOAWAY is recommended, but not required
(#2256,#2457)</li>
          <li>
            <t>Use variable-length integers throughout (#2437,#2233,#2253,#2275)
            </t>
            <ul spacing="normal">
              <li>Variable-length frame types, stream types, and settings identifiers</li>
              <li>Renumbered stream type assignments</li>
              <li>Modified associated reserved values</li>
            </ul>
          </li>
          <li>Frame layout switched from Length-Type-Value to Type-Length-Value
(#2395,#2235)</li>
          <li>Specified error code for servers receiving DUPLICATE_PUSH (#2497)</li>
          <li>Use connection error for invalid PRIORITY (#2507, #2508)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-17" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-17</name>
        <ul spacing="normal">
          <li>HTTP_REQUEST_REJECTED is used to indicate a request can be retried (#2106,
#2325)</li>
          <li>Changed error code for GOAWAY on the wrong stream (#2231, #2343)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-16" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-16</name>
        <ul spacing="normal">
          <li>Rename "HTTP/QUIC" to "HTTP/3" (#1973)</li>
          <li>
            <t>Changes to PRIORITY frame (#1865, #2075)
            </t>
            <ul spacing="normal">
              <li>Permitted as first frame of request streams</li>
              <li>Remove exclusive reprioritization</li>
              <li>Changes to Prioritized Element Type bits</li>
            </ul>
          </li>
          <li>Define DUPLICATE_PUSH frame to refer to another PUSH_PROMISE (#2072)</li>
          <li>Set defaults for settings, allow request before receiving SETTINGS (#1809,
#1846, #2038)</li>
          <li>Clarify message processing rules for streams that aren't closed (#1972, #2003)</li>
          <li>Removed reservation of error code 0 and moved HTTP_NO_ERROR to this value
(#1922)</li>
          <li>Removed prohibition of zero-length DATA frames (#2098)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-15" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-15</name>
        <t>Substantial editorial reorganization; no technical changes.</t>
      </section>
      <section anchor="since-draft-ietf-quic-http-14" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-14</name>
        <ul spacing="normal">
          <li>Recommend sensible values for QUIC transport parameters (#1720,#1806)</li>
          <li>Define error for missing SETTINGS frame (#1697,#1808)</li>
          <li>Setting values are variable-length integers (#1556,#1807) and do not have
separate maximum values (#1820)</li>
          <li>Expanded discussion of connection closure (#1599,#1717,#1712)</li>
          <li>HTTP_VERSION_FALLBACK falls back to HTTP/1.1 (#1677,#1685)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-13" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-13</name>
        <ul spacing="normal">
          <li>Reserved some frame types for grease (#1333, #1446)</li>
          <li>Unknown unidirectional stream types are tolerated, not errors; some reserved
for grease (#1490, #1525)</li>
          <li>Require settings to be remembered for 0-RTT, prohibit reductions (#1541,
#1641)</li>
          <li>Specify behavior for truncated requests (#1596, #1643)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-12" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-12</name>
        <ul spacing="normal">
          <li>TLS SNI extension isn't mandatory if an alternative method is used (#1459,
#1462, #1466)</li>
          <li>Removed flags from HTTP/3 frames (#1388, #1398)</li>
          <li>Reserved frame types and settings for use in preserving extensibility (#1333,
#1446)</li>
          <li>Added general error code (#1391, #1397)</li>
          <li>Unidirectional streams carry a type byte and are extensible (#910,#1359)</li>
          <li>Priority mechanism now uses explicit placeholders to enable persistent
structure in the tree (#441,#1421,#1422)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-11" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-11</name>
        <ul spacing="normal">
          <li>Moved QPACK table updates and acknowledgments to dedicated streams (#1121,
#1122, #1238)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-10" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-10</name>
        <ul spacing="normal">
          <li>Settings need to be remembered when attempting and accepting 0-RTT (#1157,
#1207)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-09" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-09</name>
        <ul spacing="normal">
          <li>Selected QCRAM for header compression (#228, #1117)</li>
          <li>The server_name TLS extension is now mandatory (#296, #495)</li>
          <li>Specified handling of unsupported versions in Alt-Svc (#1093, #1097)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-08" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-08</name>
        <ul spacing="normal">
          <li>Clarified connection coalescing rules (#940, #1024)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-07" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-07</name>
        <ul spacing="normal">
          <li>Changes for integer encodings in QUIC (#595,#905)</li>
          <li>Use unidirectional streams as appropriate (#515, #240, #281, #886)</li>
          <li>Improvement to the description of GOAWAY (#604, #898)</li>
          <li>Improve description of server push usage (#947, #950, #957)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-06" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-06</name>
        <ul spacing="normal">
          <li>Track changes in QUIC error code usage (#485)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-05" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-05</name>
        <ul spacing="normal">
          <li>Made push ID sequential, add MAX_PUSH_ID, remove SETTINGS_ENABLE_PUSH (#709)</li>
          <li>Guidance about keep-alive and QUIC PINGs (#729)</li>
          <li>Expanded text on GOAWAY and cancellation (#757)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-04" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-04</name>
        <ul spacing="normal">
          <li>Cite RFC 5234 (#404)</li>
          <li>Return to a single stream per request (#245,#557)</li>
          <li>Use separate frame type and settings registries from HTTP/2 (#81)</li>
          <li>SETTINGS_ENABLE_PUSH instead of SETTINGS_DISABLE_PUSH (#477)</li>
          <li>Restored GOAWAY (#696)</li>
          <li>Identify server push using Push ID rather than a stream ID (#702,#281)</li>
          <li>DATA frames cannot be empty (#700)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-03" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-03</name>
        <t>None.</t>
      </section>
      <section anchor="since-draft-ietf-quic-http-02" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-02</name>
        <ul spacing="normal">
          <li>Track changes in transport draft</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-01" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-01</name>
        <ul spacing="normal">
          <li>
            <t>SETTINGS changes (#181):
            </t>
            <ul spacing="normal">
              <li>SETTINGS can be sent only once at the start of a connection;
no changes thereafter</li>
              <li>SETTINGS_ACK removed</li>
              <li>Settings can only occur in the SETTINGS frame a single time</li>
              <li>Boolean format updated</li>
            </ul>
          </li>
          <li>Alt-Svc parameter changed from "v" to "quic"; format updated (#229)</li>
          <li>Closing the connection control stream or any message control stream is a
fatal error (#176)</li>
          <li>HPACK Sequence counter can wrap (#173)</li>
          <li>0-RTT guidance added</li>
          <li>Guide to differences from HTTP/2 and porting HTTP/2 extensions added
(#127,#242)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-00" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-00</name>
        <ul spacing="normal">
          <li>Changed "HTTP/2-over-QUIC" to "HTTP/QUIC" throughout (#11,#29)</li>
          <li>Changed from using HTTP/2 framing within Stream 3 to new framing format and
two-stream-per-request model (#71,#72,#73)</li>
          <li>Adopted SETTINGS format from draft-bishop-httpbis-extended-settings-01</li>
          <li>Reworked SETTINGS_ACK to account for indeterminate inter-stream order (#75)</li>
          <li>Described CONNECT pseudo-method (#95)</li>
          <li>Updated ALPN token and Alt-Svc guidance (#13,#87)</li>
          <li>Application-layer-defined error codes (#19,#74)</li>
        </ul>
      </section>
      <section anchor="since-draft-shade-quic-http2-mapping-00" numbered="true" toc="default">
        <name>Since draft-shade-quic-http2-mapping-00</name>
        <ul spacing="normal">
          <li>Adopted as base for draft-ietf-quic-http</li>
          <li>Updated authors/editors list</li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements" toc="default">
      <name>Acknowledgements</name>
      <t>The original authors of this specification were Robbie Shade and Mike Warres.</t>
      <t>A substantial portion of Mike's contribution was supported by Microsoft during
his employment there.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
ZoX1vgmOTs2NrTwnMt8E6dR1VziIbCSpBPVPn/qARLMpOhQSV2FpTXulstTx
o0kxSlA0wz0omhzyIwMwv265SRO9FoYD0japGJpYEEYO+aYmVb2gz5JVUFcr
jAGAbXJbVws1ANFJy8iUats7uLbiQzEz/F3vE4mG8ocy5zyWDjwoBaeAkpvC
mTdx7CwWCnln1KV4vwamlrCMZS/q9dOVm27BdXp54xRgVB/xWZcU9lNQ4WsK
m5LTpXvntjQOxCyXBcIyWNqlVERdHv3w8oRKokjuxM7yTi69OzmjT+G7Z6nA
4JziK8VFXucfpBnPbdr1i7XUaOAwCJ9C0WHrAaEQyohz3d38/DggsKvjt+fn
J2cq0S9wKQy+xUNIXAufXdNyV6io/YuaS8Z6m3JIhPsqJ+OQ1Dh8Zm7VBDv0
UibgrTbG6dnp5enRy3fCzvW0JUGLnJkNo+qI8kH4VffG5Ci7WCpNYn+O6ART
aKBIquiybm7BZE6KOXDX9yzz6/aJZ8XJ07pF7ZBJ1Hqbs9MncjX3Zvzhl+3w
vLDYe2bu1vgpQW+o6+OopmYu6Bo/WGrTRjw/YOmjbP/hKDvco0wnYfAB3cs7
ifl5XX4spvr1Q87biyljZRJMLsV4Ifs8CKojKlcY+ceOP2ZeoyUzoT5y+hmJ
EJr9SVJMeTW3qle7E1sN6FI0hdAAAwT92bP+blSxZpu5CGwsWpk1h5NLig4f
7rHEs6avBYJskpIUd1HVBtIJa9OyLp/ciNJ9zh3cYbc6qK8SG1vpdOPVBpX2
Tn2wRExvk42dphDsvD6jK2RfoCsEV17d9EP/SYj8S5SGsP94g9Zgk2i7vPtU
hjHp1D34c2wG1jAzUgc737p4JqtVu1tds4NzFIFfOR4Ua+xQkN/lZSswwhyA
b76JS0QvBI8ouNOuXB/+5pu9inIT3NMVhiYCn1btNB2XbyyN3W61l6jUC3AA
FMhMGqtx6zTXUm1Leqp5DSGo4EozWsx/zX7JJC5kML5JbaN59v1vGd/XcZzm
trxuO8En7BZJ5sVkQoSUzwJ1qRLHOUcUmlLaGBRDkw9ku37XwQ0mEUgUiPlX
hBlsiTpJjWajKcZYNui6YLEnw5eBsYnfS2An30CvYdWO1ytYWZHuaBvquySJ
GLvO5YJOWRf3dKtq3AuW8xAvuTnrBgqOsDsKsouNFVAJsxjcbL/N1YEeVedP
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
LD/hsgEA

-->
</rfc>
