<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.25 (Ruby 3.0.3) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpbis-binary-message-01" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.1 -->
  <front>
    <title abbrev="Binary HTTP Messages">Binary Representation of HTTP Messages</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-binary-message-01"/>
    <author initials="M." surname="Thomson" fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <author initials="C.A." surname="Wood" fullname="Christopher A. Wood">
      <organization>Cloudflare</organization>
      <address>
        <email>caw@heapingbits.net</email>
      </address>
    </author>
    <date year="2022" month="February" day="03"/>
    <area>ART</area>
    <workgroup>HTTP</workgroup>
    <abstract>
      <t>This document defines a binary format for representing HTTP messages.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-httpbis-binary-message/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HTTP Working Group mailing list (<eref target="mailto:ietf-http-wg@w3.org"/>),
        which is archived at <eref target="https://lists.w3.org/Archives/Public/ietf-http-wg/"/>.
        Working Group information can be found at <eref target="https://httpwg.org/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/httpwg/http-extensions/labels/binary-messages"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines a simple format for representing an HTTP message
(<xref target="HTTP"/>), either request or response. This allows for the encoding of HTTP
messages that can be conveyed outside of an HTTP protocol. This enables the
transformation of entire messages, including the application of authenticated
encryption.</t>
      <t>This format is informed by the framing structure of HTTP/2 (<xref target="H2"/>) and HTTP/3
(<xref target="H3"/>). In comparison, this format is simpler by virtue of not including
either header compression (<xref target="HPACK"/>, <xref target="QPACK"/>)
or a generic framing layer.</t>
      <t>This format provides an alternative to the <tt>message/http</tt> content type defined
in <xref target="MESSAGING"/>. A binary format permits more efficient encoding and processing
of messages. A binary format also reduces exposure to security problems related
to processing of HTTP messages.</t>
      <t>Two modes for encoding are described:</t>
      <ul spacing="normal">
        <li>a known-length encoding includes length prefixes for all major message
components; and</li>
        <li>an indefinite-length encoding enables efficient generation of messages where
lengths are not known when encoding starts.</li>
      </ul>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <t>This document uses terminology from HTTP (<xref target="HTTP"/>) and notation from QUIC
(<xref section="1.3" sectionFormat="of" target="QUIC"/>).</t>
    </section>
    <section anchor="format">
      <name>Format</name>
      <t><xref section="6" sectionFormat="of" target="HTTP"/> defines five distinct parts to HTTP messages.  A framing
indicator is added to signal how these parts are composed:</t>
      <ol spacing="normal" type="1"><li>Framing indicator. This format uses a single integer to describe framing, which describes
whether the message is a request or response and how subsequent sections are
formatted; see <xref target="framing"/>.</li>
        <li>For a response, any number of interim responses, each consisting of an
informational status code and header section.</li>
        <li>Control data. For a request, this contains the request method and target.
For a response, this contains the status code.</li>
        <li>Header section.  This contains zero or more header fields.</li>
        <li>Content.  This is a sequence of zero or more bytes.</li>
        <li>Trailer section.  This contains zero or more trailer fields.</li>
        <li>Optional padding. Any amount of zero-valued bytes.</li>
      </ol>
      <t>All lengths and numeric values are encoded using the variable-length integer
encoding from <xref section="16" sectionFormat="of" target="QUIC"/>.</t>
      <section anchor="known-length-messages">
        <name>Known Length Messages</name>
        <t>A message that has a known length at the time of construction uses the
format shown in <xref target="format-known-length"/>.</t>
        <figure anchor="format-known-length">
          <name>Known-Length Message</name>
          <sourcecode type="quic-format"><![CDATA[
Message with Known-Length {
  Framing Indicator (i) = 0..1,
  Known-Length Informational Response (..) ...,
  Control Data (..),
  Known-Length Field Section (..),
  Known-Length Content (..),
  Known-Length Field Section (..),
  Padding (..),
}

Known-Length Field Section {
  Length (i) = 2..,
  Field Line (..) ...,
}

Known-Length Content {
  Content Length (i),
  Content (..)
}

Known-Length Informational Response {
  Informational Response Control Data (..),
  Known-Length Field Section (..),
}
]]></sourcecode>
        </figure>
        <t>That is, a known-length message consists of a framing indicator, a block of
control data that is formatted according to the value of the framing indicator,
a header section with a length prefix, binary content with a length prefix, and
a trailer section with a length prefix.</t>
        <t>Response messages that contain informational status codes result in a different
structure; see <xref target="informational"/>.</t>
        <t>Fields in the header and trailer sections consist of a length-prefixed name and
length-prefixed value. Both name and value are sequences of bytes that cannot
be zero length.</t>
        <t>The format allows for the message to be truncated before any of the length
prefixes that precede the field sections or content. This reduces the overall
message size. A message that is truncated at any other point is invalid; see
<xref target="invalid"/>.</t>
        <t>The variable-length integer encoding means that there is a limit of 2^62-1
bytes for each field section and the message content.</t>
      </section>
      <section anchor="indeterminate-length-messages">
        <name>Indeterminate Length Messages</name>
        <t>A message that is constructed without encoding a known length for each section
uses the format shown in <xref target="format-indeterminate-length"/>:</t>
        <figure anchor="format-indeterminate-length">
          <name>Indeterminate-Length Message</name>
          <sourcecode type="quic-format"><![CDATA[
Indeterminate-Length Message  {
  Framing Indicator (i) = 2..3,
  Indeterminate-Length Informational Response (..) ...,
  Control Data (..),
  Indeterminate-Length Field Section (..),
  Indeterminate-Length Content (..) ...,
  Indeterminate-Length Field Section (..),
  Padding (..),
}

Indeterminate-Length Content {
  Indeterminate-Length Content Chunk (..) ...,
  Content Terminator (i) = 0,
}

Indeterminate-Length Content Chunk {
  Chunk Length (i) = 1..,
  Chunk (..)
}

Indeterminate-Length Field Section {
  Field Line (..) ...,
  Content Terminator (i) = 0,
}

Indeterminate-Length Informational Response {
  Informational Response Control Data (..),
  Indeterminate-Length Field Section (..),
}
]]></sourcecode>
        </figure>
        <t>That is, an indeterminate length consists of a framing indicator, a block of
control data that is formatted according to the value of the framing indicator,
a header section that is terminated by a zero value, any number of
non-zero-length chunks of binary content, a zero value, and a trailer section
that is terminated by a zero value.</t>
        <t>Response messages that contain informational status codes result in a different
structure; see <xref target="informational"/>.</t>
        <t>Indeterminate-length messages can be truncated in a similar way as known-length
messages. Truncation occurs after the control data, or after the Content
Terminator field that ends a field section or sequence of content chunks. A
message that is truncated at any other point is invalid; see <xref target="invalid"/>.</t>
        <t>Indeterminate-length messages use the same encoding for field lines as
known-length messages; see <xref target="fields"/>.</t>
      </section>
      <section anchor="framing">
        <name>Framing Indicator</name>
        <t>The start of each is a framing indicator that is a single integer that
describes the structure of the subsequent sections. The framing indicator can
take just four values:</t>
        <ul spacing="normal">
          <li>A value of 0 describes a request of known length.</li>
          <li>A value of 1 describes a response of known length.</li>
          <li>A value of 2 describes a request of indeterminate length.</li>
          <li>A value of 3 describes a response of indeterminate length.</li>
        </ul>
        <t>Other values cause the message to be invalid; see <xref target="invalid"/>.</t>
      </section>
      <section anchor="request-control-data">
        <name>Request Control Data</name>
        <t>The control data for a request message includes four values that correspond to
the values of the <tt>:method</tt>, <tt>:scheme</tt>, <tt>:authority</tt>, and <tt>:path</tt> pseudo-header
fields described in HTTP/2 (<xref section="8.3.1" sectionFormat="of" target="H2"/>). These fields are
encoded, each with a length prefix, in the order listed.</t>
        <t>The rules in <xref section="8.3" sectionFormat="of" target="H2"/> for constructing pseudo-header fields
apply to the construction of these values. However, where the <tt>:authority</tt>
pseudo-header field might be omitted in HTTP/2, a zero-length value is encoded
instead.</t>
        <t>The format of request control data is shown in <xref target="format-request-control-data"/>.</t>
        <figure anchor="format-request-control-data">
          <name>Format of Request Control Data</name>
          <sourcecode type="quic-format"><![CDATA[
Request Control Data {
  Method Length (i),
  Method (..),
  Scheme Length (i),
  Scheme (..),
  Authority Length (i),
  Authority (..),
  Path Length (i),
  Path (..),
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="response-control-data">
        <name>Response Control Data</name>
        <t>The control data for a request message includes a single field that corresponds
to the <tt>:status</tt> pseudo-header field in HTTP/2; see <xref section="8.3.2" sectionFormat="of" target="H2"/>. This field is encoded as a single variable length integer, not a decimal
string.</t>
        <t>The format of final response control data is shown in
<xref target="format-response-control-data"/>.</t>
        <figure anchor="format-response-control-data">
          <name>Format of Final Response Control Data</name>
          <sourcecode type="quic-format"><![CDATA[
Final Response Control Data {
  Status Code (i) = 200..599,
}
]]></sourcecode>
        </figure>
        <section anchor="informational">
          <name>Informational Status Codes</name>
          <t>Responses that include information status codes (see <xref section="15.2" sectionFormat="of" target="HTTP"/>)
are encoded by repeating the response control data and associated header section
until the final status code is encoded.</t>
          <t>The format of the informational response control data is shown in
<xref target="format-informational"/>.</t>
          <figure anchor="format-informational">
            <name>Format of Informational Response Control Data</name>
            <sourcecode type="quic-format"><![CDATA[
Informational Response Control Data {
  Status Code (i) = 100..199,
}
]]></sourcecode>
          </figure>
          <t>A response message can include any number of informational responses that
precede a final status code.  These convey an information status code and a
header block.</t>
          <t>If the response control data includes an informational status code (that is, a
value between 100 and 199 inclusive), the control data is followed by a header
section (encoded with known- or indeterminate- length according to the framing
indicator) and another block of control data.  This pattern repeats until the
control data contains a final status code (200 to 599 inclusive).</t>
        </section>
      </section>
      <section anchor="fields">
        <name>Header and Trailer Field Lines</name>
        <t>Header and trailer sections consist of zero or more field lines; see <xref section="5" sectionFormat="of" target="HTTP"/>. The format of a field section depends on whether the message is
known- or intermediate-length.</t>
        <t>Each field line includes a name and a value. Both the name and value are
length-prefixed sequences of bytes.  The field name length is at least one
byte. The format of a field line is shown in <xref target="format-field-line"/>.</t>
        <figure anchor="format-field-line">
          <name>Format of a Field Line</name>
          <sourcecode type="quic-format"><![CDATA[
Field Line {
  Name Length (i) = 1..,
  Name (..),
  Value Length (i),
  Value (..),
}
]]></sourcecode>
        </figure>
        <t>For field names, byte values that are not permitted in an HTTP field name cause
the message to be invalid; see <xref section="5.1" sectionFormat="of" target="HTTP"/> for a definition of
what is valid and <xref target="invalid"/> for handling of invalid messages.</t>
        <t>Field names and values <bcp14>MUST</bcp14> be constructed and validated according to the rules
of <xref section="8.2.1" sectionFormat="of" target="H2"/>.  A recipient <bcp14>MUST</bcp14> treat a message that contains
field values that would cause an HTTP/2 message to be malformed (<xref section="8.1.1" sectionFormat="of" target="H2"/>) as invalid; see <xref target="invalid"/>.</t>
        <t>The same field name can be repeated in multiple field lines; see <xref section="5.2" sectionFormat="of" target="HTTP"/> for the semantics of repeated field names and rules for combining
values.</t>
        <t>Like HTTP/2, this format has an exception for the combination of multiple
instances of the <tt>Cookie</tt> field. Instances of fields with the ASCII-encoded
value of <tt>cookie</tt> are combined using a semicolon octet (0x3b) rather than a
comma; see <xref section="8.2.3" sectionFormat="of" target="H2"/>.</t>
        <t>This format provides fixed locations for content that would be carried in HTTP/2
pseudo-fields. Therefore, there is no need to include field lines containing a
name of <tt>:method</tt>, <tt>:scheme</tt>, <tt>:authority</tt>, <tt>:path</tt>, or <tt>:status</tt>.  Fields that
contain one of these names cause the message to be invalid; see
<xref target="invalid"/>. Pseudo-fields that are defined by protocol extensions <bcp14>MAY</bcp14> be
included.  Field lines containing pseudo-fields <bcp14>MUST</bcp14> precede other field lines;
a message that contains a pseudo-field after any other field is invalid; see
<xref target="invalid"/>.</t>
      </section>
      <section anchor="content">
        <name>Content</name>
        <t>The content of messages is a sequence of bytes of any length. Though a
known-length message has a limit, this limit is large enough that it is
unlikely to be a practical limitation. There is no limit to the size of content
in an indeterminate length message.</t>
        <t>Omitting content by truncating a message is only possible if the content is
zero-length.</t>
      </section>
      <section anchor="padding">
        <name>Padding</name>
        <t>Messages can be padded with any number of zero-valued bytes.  Non-zero padding
bytes cause a message to be invalid (see <xref target="invalid"/>). Unlike other parts of a
message, a processor <bcp14>MAY</bcp14> decide not to validate the value of padding bytes.</t>
        <t>Padding is compatible with truncation of empty parts of the messages.
Zero-valued bytes will be interpreted as zero-length part, which is semantically
equivalent to the part being absent.</t>
      </section>
    </section>
    <section anchor="invalid">
      <name>Invalid Messages</name>
      <t>This document describes a number of ways that a message can be invalid. Invalid
messages <bcp14>MUST NOT</bcp14> be processed except to log an error and produce an error
response.</t>
      <t>The format is designed to allow incremental processing. Implementations need to
be aware of the possibility that an error might be detected after performing
incremental processing.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This section includes example requests and responses encoded in both
known-length and indefinite-length forms.</t>
      <section anchor="request-example">
        <name>Request Example</name>
        <t>The example HTTP/1.1 message in <xref target="ex-request"/> shows the content of a
<tt>message/http</tt>.</t>
        <t>Valid HTTP/1.1 messages require lines terminated with CRLF (the two bytes 0x0a
and 0x0d). For simplicity and consistency, the content of these examples is
limited to text, which also uses CRLF for line endings.</t>
        <figure anchor="ex-request">
          <name>Sample HTTP Request</name>
          <sourcecode type="http-message"><![CDATA[
GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi

]]></sourcecode>
        </figure>
        <t>This can be expressed as a binary message (type <tt>message/bhttp</tt>) using a
known-length encoding as shown in hexadecimal in <xref target="ex-bink-request"/>.
<xref target="ex-bink-request"/> view includes some of the text alongside to show that most
of the content is not modified.</t>
        <figure anchor="ex-bink-request">
          <name>Known-Length Binary Encoding of Request</name>
          <artwork type="hex-dump"><![CDATA[
00034745 54056874 74707300 0a2f6865  ..GET.https../he
6c6c6f2e 74787440 6c0a7573 65722d61  llo.txt@l.user-a
67656e74 34637572 6c2f372e 31362e33  gent4curl/7.16.3
206c6962 6375726c 2f372e31 362e3320   libcurl/7.16.3
4f70656e 53534c2f 302e392e 376c207a  OpenSSL/0.9.7l z
6c69622f 312e322e 3304686f 73740f77  lib/1.2.3.host.w
77772e65 78616d70 6c652e63 6f6d0f61  ww.example.com.a
63636570 742d6c61 6e677561 67650665  ccept-language.e
6e2c206d 690000                      n, mi..
]]></artwork>
        </figure>
        <t>This example shows that the Host header field is not replicated in the
:authority field, as is required for ensuring that the request is reproduced
accurately; see <xref section="8.3.1" sectionFormat="of" target="H2"/>.</t>
        <t>The same message can be truncated with no effect on interpretation. In this
case, the last two bytes - corresponding to content and a trailer section - can
each be removed without altering the semantics of the message.</t>
        <t>The same message, encoded using an indefinite-length encoding is shown in
<xref target="ex-bini-request"/>. As the content of this message is empty, the difference in
formats is negligible.</t>
        <figure anchor="ex-bini-request">
          <name>Indefinite-Length Binary Encoding of Request</name>
          <artwork type="hex-dump"><![CDATA[
02034745 54056874 74707300 0a2f6865  ..GET.https../he
6c6c6f2e 7478740a 75736572 2d616765  llo.txt.user-age
6e743463 75726c2f 372e3136 2e33206c  nt4curl/7.16.3 l
69626375 726c2f37 2e31362e 33204f70  ibcurl/7.16.3 Op
656e5353 4c2f302e 392e376c 207a6c69  enSSL/0.9.7l zli
622f312e 322e3304 686f7374 0f777777  b/1.2.3.host.www
2e657861 6d706c65 2e636f6d 0f616363  .example.com.acc
6570742d 6c616e67 75616765 06656e2c  ept-language.en,
206d6900 00000000 00000000 00000000   mi.............
]]></artwork>
        </figure>
        <t>This indefinite-length encoding contains 10 bytes of padding.  As two additional
bytes can be truncated in the same way as the known-length example, anything up
to 12 bytes can be removed from this message without affecting its meaning.</t>
      </section>
      <section anchor="response-example">
        <name>Response Example</name>
        <t>Response messages can contain interim (1xx) status codes as the message in
<xref target="ex-response"/> shows. <xref target="ex-response"/> includes examples of informational
status codes defined in <xref target="RFC2518"/> and <xref target="RFC8297"/>.</t>
        <figure anchor="ex-response">
          <name>Sample HTTP Response</name>
          <sourcecode type="http-message"><![CDATA[
HTTP/1.1 102 Processing
Running: "sleep 15"

HTTP/1.1 103 Early Hints
Link: </style.css>; rel=preload; as=style
Link: </script.js>; rel=preload; as=script

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

Hello World! My content includes a trailing CRLF.

]]></sourcecode>
        </figure>
        <t>As this is a longer example, only the indefinite-length encoding is shown in
<xref target="ex-bini-response"/>. Note here that the specific text used in the reason
phrase is not retained by this encoding.</t>
        <figure anchor="ex-bini-response">
          <name>Binary Response including Interim Responses</name>
          <artwork type="hex-dump"><![CDATA[
03406607 72756e6e 696e670a 22736c65  .@f.running."sle
65702031 35220040 67046c69 6e6b233c  ep 15".@g.link#<
2f737479 6c652e63 73733e3b 2072656c  /style.css>; rel
3d707265 6c6f6164 3b206173 3d737479  =preload; as=sty
6c65046c 696e6b24 3c2f7363 72697074  le.link$</script
2e6a733e 3b207265 6c3d7072 656c6f61  .js>; rel=preloa
643b2061 733d7363 72697074 0040c804  d; as=script.@..
64617465 1d4d6f6e 2c203237 204a756c  date.Mon, 27 Jul
20323030 39203132 3a32383a 35332047   2009 12:28:53 G
4d540673 65727665 72064170 61636865  MT.server.Apache
0d6c6173 742d6d6f 64696669 65641d57  .last-modified.W
65642c20 3232204a 756c2032 30303920  ed, 22 Jul 2009
31393a31 353a3536 20474d54 04657461  19:15:56 GMT.eta
67142233 34616133 38372d64 2d313536  g."34aa387-d-156
38656230 30220d61 63636570 742d7261  8eb00".accept-ra
6e676573 05627974 65730e63 6f6e7465  nges.bytes.conte
6e742d6c 656e6774 68023531 04766172  nt-length.51.var
790f4163 63657074 2d456e63 6f64696e  y.Accept-Encodin
670c636f 6e74656e 742d7479 70650a74  g.content-type.t
6578742f 706c6169 6e003348 656c6c6f  ext/plain.3Hello
20576f72 6c642120 4d792063 6f6e7465   World! My conte
6e742069 6e636c75 64657320 61207472  nt includes a tr
61696c69 6e672043 524c462e 0d0a0000  ailing CRLF.....
]]></artwork>
        </figure>
        <t>A response that uses the chunked encoding (see <xref section="7.1" sectionFormat="of" target="MESSAGING"/>) as
shown for <xref target="ex-chunked"/> can be encoded using indefinite-length encoding, which
minimizes buffering needed to translate into the binary format. However, chunk
boundaries do not need to be retained and any chunk extensions cannot be
conveyed using the binary format; see <xref target="differences"/>.</t>
        <figure anchor="ex-chunked">
          <name>Chunked Encoding Example</name>
          <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Transfer-Encoding: chunked

4
This
6
 conte
13;chunk-extension=foo
nt contains CRLF.

0
Trailer: text

]]></sourcecode>
        </figure>
        <t><xref target="ex-bink-chunked"/> shows this message using the known-length coding. Note that
the transfer-encoding header field is removed.</t>
        <figure anchor="ex-bink-chunked">
          <name>Known-Length Encoding of Response</name>
          <artwork type="hex-dump"><![CDATA[
0140c800 1d546869 7320636f 6e74656e  .@...This conten
7420636f 6e746169 6e732043 524c462e  t contains CRLF.
0d0a0d07 74726169 6c657204 74657874  ....trailer.text
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="differences">
      <name>Notable Differences with HTTP Protocol Messages</name>
      <t>This format is designed to carry most HTTP messages.  However, there are some
notable differences between this format and the format used in some HTTP
versions.  In particular, this format does not allow for:</t>
      <ul spacing="normal">
        <li>chunk extensions (<xref section="7.1.1" sectionFormat="of" target="MESSAGING"/>) and transfer encoding
(<xref section="6.1" sectionFormat="of" target="MESSAGING"/>) from HTTP/1.1</li>
        <li>field blocks other than a single header and trailer field block</li>
        <li>carrying reason phrases in responses (<xref section="4" sectionFormat="of" target="MESSAGING"/>)</li>
        <li>header compression (<xref target="HPACK"/>, <xref target="QPACK"/>)</li>
        <li>framing of responses that depends on the corresponding request (such as HEAD)
or the value of the status code (such as 204 or 304)</li>
      </ul>
      <t>Many of these same restrictions are shared by HTTP/2 <xref target="H2"/> and HTTP/3 <xref target="H3"/>.</t>
    </section>
    <section anchor="media-type">
      <name>"message/bhttp" Media Type</name>
      <t>The message/http media type can be used to enclose a single HTTP request or
response message, provided that it obeys the MIME restrictions for all
"message" types regarding line length and encodings.</t>
      <dl>
        <dt>
Type name:  </dt>
        <dd>
          <t>message</t>
        </dd>
        <dt>
Subtype name:  </dt>
        <dd>
          <t>bhttp</t>
        </dd>
        <dt>
Required parameters:  </dt>
        <dd>
          <t>N/A</t>
        </dd>
        <dt>
Optional parameters:  </dt>
        <dd>
          <t>None</t>
        </dd>
        <dt>
Encoding considerations:  </dt>
        <dd>
          <t>only "8bit" or "binary" is permitted</t>
        </dd>
        <dt>
Security considerations:  </dt>
        <dd>
          <t>see <xref target="security"/></t>
        </dd>
        <dt>
Interoperability considerations:  </dt>
        <dd>
          <t>N/A</t>
        </dd>
        <dt>
Published specification:  </dt>
        <dd>
          <t>this specification</t>
        </dd>
        <dt>
Applications that use this media type:  </dt>
        <dd>
          <t>N/A</t>
        </dd>
        <dt>
Fragment identifier considerations:  </dt>
        <dd>
          <t>N/A</t>
        </dd>
        <dt>
Additional information:  </dt>
        <dd>
          <dl>
            <dt>Magic number(s):</dt>
            <dd>N/A</dd>
            <dt>Deprecated alias names for this type:</dt>
            <dd>N/A</dd>
            <dt>File extension(s):</dt>
            <dd>N/A</dd>
            <dt>Macintosh file type code(s):</dt>
            <dd>N/A</dd>
          </dl>
        </dd>
        <dt>
Person and email address to contact for further information:  </dt>
        <dd>
          <t>see Authors' Addresses section</t>
        </dd>
        <dt>
Intended usage:  </dt>
        <dd>
          <t>COMMON</t>
        </dd>
        <dt>
Restrictions on usage:  </dt>
        <dd>
          <t>N/A</t>
        </dd>
        <dt>
Author:  </dt>
        <dd>
          <t>see Authors' Addresses section</t>
        </dd>
        <dt>
Change controller:  </dt>
        <dd>
          <t>IESG</t>
        </dd>
      </dl>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>Many of the considerations that apply to HTTP message handling apply to this
format; see <xref section="17" sectionFormat="of" target="HTTP"/> and <xref section="11" sectionFormat="of" target="MESSAGING"/> for common
issues in handling HTTP messages.</t>
      <t>Strict parsing of the format with no tolerance for errors can help avoid a
number of attacks. However, implementations still need to be aware of the
possibility of resource exhaustion attacks that might arise from receiving
large messages, particularly those with large numbers of fields.</t>
      <t>The format is designed to allow for minimal state when translating for use with
HTTP proper. However, producing a combined value for fields, which might be
necessary for the <tt>Cookie</tt> field when translating this format (like HTTP/1.1
<xref target="MESSAGING"/>), can require the commitment of resources. Implementations need
to ensure that they aren't subject to resource exhaustion attack from a
maliciously crafted message.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to add the "Media Types" registry at
<eref target="https://www.iana.org/assignments/media-types"/> with the registration
information in <xref target="media-type"/> for the media type "message/bhttp".</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="Roy T. Fielding">
              <organization>Adobe</organization>
            </author>
            <author fullname="Mark Nottingham">
              <organization>Fastly</organization>
            </author>
            <author fullname="Julian Reschke">
              <organization>greenbytes GmbH</organization>
            </author>
            <date day="12" month="September" year="2021"/>
            <abstract>
              <t>   The Hypertext Transfer Protocol (HTTP) is a stateless application-
   level protocol for distributed, collaborative, hypertext information
   systems.  This document describes the overall architecture of HTTP,
   establishes common terminology, and defines aspects of the protocol
   that are shared by all versions.  In this definition are core
   protocol elements, extensibility mechanisms, and the "http" and
   "https" Uniform Resource Identifier (URI) schemes.

   This document updates RFC 3864 and obsoletes RFC 2818, RFC 7231, RFC
   7232, RFC 7233, RFC 7235, RFC 7538, RFC 7615, RFC 7694, and portions
   of RFC 7230.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-semantics-19"/>
        </reference>
        <reference anchor="MESSAGING">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="Roy T. Fielding">
              <organization>Adobe</organization>
            </author>
            <author fullname="Mark Nottingham">
              <organization>Fastly</organization>
            </author>
            <author fullname="Julian Reschke">
              <organization>greenbytes GmbH</organization>
            </author>
            <date day="12" month="September" year="2021"/>
            <abstract>
              <t>   The Hypertext Transfer Protocol (HTTP) is a stateless application-
   level protocol for distributed, collaborative, hypertext information
   systems.  This document specifies the HTTP/1.1 message syntax,
   message parsing, connection management, and related security
   concerns.

   This document obsoletes portions of RFC 7230.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-messaging-19"/>
        </reference>
        <reference anchor="H2">
          <front>
            <title>HTTP/2</title>
            <author fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Cory Benfield">
              <organization>Apple Inc.</organization>
            </author>
            <date day="24" month="January" year="2022"/>
            <abstract>
              <t>   This specification describes an optimized expression of the semantics
   of the Hypertext Transfer Protocol (HTTP), referred to as HTTP
   version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network
   resources and a reduced latency by introducing field compression and
   allowing multiple concurrent exchanges on the same connection.

   This document obsoletes RFC 7540 and RFC 8740.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-http2bis-07"/>
        </reference>
        <reference anchor="H3">
          <front>
            <title>Hypertext Transfer Protocol Version 3 (HTTP/3)</title>
            <author fullname="Mike Bishop">
              <organization>Akamai</organization>
            </author>
            <date day="2" month="February" year="2021"/>
            <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.

DO NOT DEPLOY THIS VERSION OF HTTP

   DO NOT DEPLOY THIS VERSION OF HTTP/3 UNTIL IT IS IN AN RFC.  This
   version is still a work in progress.  For trial deployments, please
   use earlier versions.

Note to Readers

   Discussion of this draft takes place on the QUIC working group
   mailing list (quic@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/search/?email_list=quic.

   Working Group information can be found at https://github.com/quicwg;
   source code and issues list for this draft can be found at
   https://github.com/quicwg/base-drafts/labels/-http.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-34"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="HPACK">
          <front>
            <title>HPACK: Header Compression for HTTP/2</title>
            <author fullname="R. Peon" initials="R." surname="Peon">
              <organization/>
            </author>
            <author fullname="H. Ruellan" initials="H." surname="Ruellan">
              <organization/>
            </author>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification defines HPACK, a compression format for efficiently representing HTTP header fields, to be used in HTTP/2.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7541"/>
          <seriesInfo name="DOI" value="10.17487/RFC7541"/>
        </reference>
        <reference anchor="QPACK">
          <front>
            <title>QPACK: Header Compression for HTTP/3</title>
            <author fullname="Charles 'Buck' Krasic">
              <organization>Netflix</organization>
            </author>
            <author fullname="Mike Bishop">
              <organization>Akamai Technologies</organization>
            </author>
            <author fullname="Alan Frindell">
              <organization>Facebook</organization>
            </author>
            <date day="2" month="February" year="2021"/>
            <abstract>
              <t>   This specification defines QPACK, a compression format for
   efficiently representing HTTP fields, to be used in HTTP/3.  This is
   a variation of HPACK compression that seeks to reduce head-of-line
   blocking.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qpack-21"/>
        </reference>
        <reference anchor="RFC2518">
          <front>
            <title>HTTP Extensions for Distributed Authoring -- WEBDAV</title>
            <author fullname="Y. Goland" initials="Y." surname="Goland">
              <organization/>
            </author>
            <author fullname="E. Whitehead" initials="E." surname="Whitehead">
              <organization/>
            </author>
            <author fullname="A. Faizi" initials="A." surname="Faizi">
              <organization/>
            </author>
            <author fullname="S. Carter" initials="S." surname="Carter">
              <organization/>
            </author>
            <author fullname="D. Jensen" initials="D." surname="Jensen">
              <organization/>
            </author>
            <date month="February" year="1999"/>
            <abstract>
              <t>This document specifies a set of methods, headers, and content-types ancillary to HTTP/1.1 for the management of resource properties, creation and management of resource collections, namespace manipulation, and resource locking (collision avoidance).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2518"/>
          <seriesInfo name="DOI" value="10.17487/RFC2518"/>
        </reference>
        <reference anchor="RFC8297">
          <front>
            <title>An HTTP Status Code for Indicating Hints</title>
            <author fullname="K. Oku" initials="K." surname="Oku">
              <organization/>
            </author>
            <date month="December" year="2017"/>
            <abstract>
              <t>This memo introduces an informational HTTP status code that can be used to convey hints that help a client make preparations for processing the final response.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8297"/>
          <seriesInfo name="DOI" value="10.17487/RFC8297"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAGjB+2EAA81c/XLcuJH/H0+ByFcVOaWh5nukWe9mFVleK7Fsx9ImlUvl
zhwSM+KaQ04IjuRZl/Ms9yz3ZNcfAAhwKNmbS9XdplIekQTQ6M9fN5rs9Xqi
zupczeXB77IirnbyndpUSquijuusLGS5lC9vbt7KK6V1vFL6QMSLRaXu5tI8
H9wVaZkU8RqmS6t4WfcyVS97t3W9WWS6t6ABvTU/2+sPRBLXalVWu7nUdSqy
TTWXdbXV9bDfP+0PRVypeC7P3t2I+7L6sKrK7WZO64k7VWzVXEjpX5Sy3m1g
6T/Dw1mxkj/gPbh6WyJBSIWeHx/jv/erqKxWx3BvHWf5XDoye/er7+9HeBPu
xVVy24zLM13riG8en8Gt7E7p47fbRZ4lx/4EOG2lNmUzdJXVt9tFlJRrszr9
01Mfa1VoYLI+zuOFyvVxyCEteGAv03qrevTMXLafEbqOi/Q/47wsYJc7uLLJ
5vKvdZkcSV1WdaWWGn7t1vwDBLSONxvgz9+EiLf1bVkhH3vwfymzQs/lVSRv
gGW6LOgai/MqruqsCG4AH+B6+XOW5zFdUMzMdf19Xt6DAlXlZhcVqg6nP4/O
IhBRmXqzn99WwN1yc6sq6d+lJc7zcpsuc1AGf5Ukvv/+VsW4kUUGgsF1RFFW
a1DbO1IN1Im5vOw9jwIt1DBBUWeJhkeuLq6vz364fP1Dx3PMYJgepxp2PID/
DuEH3h959/++zRK6CTf++OPl+Vy+e3F+2u/3hciKZUOhEL1eT8YLXVdxAsTf
3GYaxbNdA+9kqpZZobSMjcAlj8R/ULvYRFHLyf6sNkRm1nWWprkS4om8RDmk
2wSN+eE1dLbe5OrBNeIiWEYcfvqEf3/+/PRIKtBRhc//fat0LWmo3oBSK9Qj
WC7OQR00TQpPSlUkZYqTGs8iLO1wF9ZOYK2FkklZ3KmdSmW5rXWWKnzaUrGp
StDuMjfzqyJe5DRcCWBloQ2P2XnhDirlGHQESpjkWyIAqQFTAPt1T6NB4Ah0
TKkAUqvdBu9FhnWGQfCLRQkELnY00bKK1zgpSBOYva2U3d/xUCK7hsAs2EHK
10bEwhFci0BCsNv1JgYTKIsjmCxYhyVT4TJ3WVVvad6irJt9CCMBsIYU/sG5
QALoV3Dh3758e3b+h29BBWeT8eDz5yMJ1/5I10KN/fsmTj4AQQLkFMuVKlSV
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

-->

</rfc>
