rfc9114v5.xml   rfc9114.xml 
skipping to change at line 20 skipping to change at line 20
<link href='https://datatracker.ietf.org/doc/draft-ietf-quic-http-latest' rel='prev'/> <link href='https://datatracker.ietf.org/doc/draft-ietf-quic-http-latest' rel='prev'/>
<front> <front>
<title>HTTP/3</title> <title>HTTP/3</title>
<seriesInfo name='RFC' value='9114'/> <seriesInfo name='RFC' value='9114'/>
<author fullname='Mike Bishop' initials='M.' role='editor' surname='Bishop'> <author fullname='Mike Bishop' initials='M.' role='editor' surname='Bishop'>
<organization>Akamai</organization> <organization>Akamai</organization>
<address> <address>
<email>mbishop@evequefou.be</email> <email>mbishop@evequefou.be</email>
</address> </address>
</author> </author>
<date month='May' year='2022'/> <date month='June' year='2022'/>
<area>Transport</area> <area>Transport</area>
<workgroup>QUIC</workgroup> <workgroup>QUIC</workgroup>
<keyword>HTTP/2</keyword> <keyword>HTTP/2</keyword>
<keyword>HPACK</keyword> <keyword>HPACK</keyword>
<keyword>QPACK</keyword> <keyword>QPACK</keyword>
<keyword>Web</keyword> <keyword>Web</keyword>
<abstract> <abstract>
<t>The QUIC transport protocol has several features that are desirable in a <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 transport for HTTP, such as stream multiplexing, per-stream flow control, and
low-latency connection establishment. This document describes a mapping of HTTP low-latency connection establishment. This document describes a mapping of HTTP
skipping to change at line 1497 skipping to change at line 1497
} }
]]></artwork> ]]></artwork>
</figure> </figure>
<t>An implementation <bcp14>MUST</bcp14> <t>An implementation <bcp14>MUST</bcp14>
ignore any parameter with an identifier it does ignore any parameter with an identifier it does
not understand.</t> not understand.</t>
<section anchor='settings-parameters'> <section anchor='settings-parameters'>
<name>Defined SETTINGS Parameters</name> <name>Defined SETTINGS Parameters</name>
<t>The following settings are defined in HTTP/3:</t> <t>The following settings are defined in HTTP/3:</t>
<dl> <dl>
<dt><xref format='none' target='SETTINGS_MAX_FIELD_SECTION_SIZE'>SETTINGS_MAX_FIELD_SE CTION_SIZE</xref><iref item='SETTINGS_MAX_FIELD_SECTION_SIZE'/> (0x06):</dt> <dt>SETTINGS_MAX_FIELD_SECTION_SIZE (0x06)<iref item='SETTINGS_MAX_FIELD_SECTION_SIZE' />:</dt>
<dd> <dd>
<t anchor='SETTINGS_MAX_FIELD_SECTION_SIZE'>The default value is unlimited. See <xr ef target='header-size-constraints'/> for usage.</t> <t anchor='SETTINGS_MAX_FIELD_SECTION_SIZE'>The default value is unlimited. See <xr ef target='header-size-constraints'/> for usage.</t>
</dd> </dd>
</dl> </dl>
<t>Setting identifiers of the format <tt>0x1f * N + 0x21</tt> for non-negative integer <t>Setting identifiers of the format <tt>0x1f * N + 0x21</tt> for non-negative integer
values of <tt>N</tt> are reserved to exercise the requirement that unknown identifiers values of <tt>N</tt> are reserved to exercise the requirement that unknown identifiers
be ignored. Such settings have no defined meaning. Endpoints <bcp14>SHOULD</bcp14> be ignored. Such settings have no defined meaning. Endpoints <bcp14>SHOULD</bcp14>
include at include at
least one such setting in their SETTINGS frame. Endpoints <bcp14>MUST NOT</bcp14> least one such setting in their SETTINGS frame. Endpoints <bcp14>MUST NOT</bcp14>
consider such consider such
skipping to change at line 1771 skipping to change at line 1771
use of an error code in an unexpected context or receipt of an unknown error use of an error code in an unexpected context or receipt of an unknown error
code <bcp14>MUST</bcp14> code <bcp14>MUST</bcp14>
be treated as equivalent to <xref format='none' target='H3_NO_ERROR'>H3_NO_ERROR</xref><iref item=' H3_NO_ERROR'/>. However, closing a stream be treated as equivalent to <xref format='none' target='H3_NO_ERROR'>H3_NO_ERROR</xref><iref item=' H3_NO_ERROR'/>. However, closing a stream
can have other effects regardless of the error code; for example, see can have other effects regardless of the error code; for example, see
<xref target='request-response'/>.</t> <xref target='request-response'/>.</t>
<section anchor='http-error-codes'> <section anchor='http-error-codes'>
<name>HTTP/3 Error Codes</name> <name>HTTP/3 Error Codes</name>
<t>The following error codes are defined for use when abruptly terminating streams, <t>The following error codes are defined for use when abruptly terminating streams,
aborting reading of streams, or immediately closing HTTP/3 connections.</t> aborting reading of streams, or immediately closing HTTP/3 connections.</t>
<dl> <dl>
<dt><xref format='none' target='H3_NO_ERROR'>H3_NO_ERROR</xref><iref item='H3_NO_ERROR'/> (0x0100):</dt> <dt>H3_NO_ERROR (0x0100)<iref item='H3_NO_ERROR'/>:</dt>
<dd> <dd>
<t anchor='H3_NO_ERROR'>No error. This is used when the connection or stream needs to b e closed, but <t anchor='H3_NO_ERROR'>No error. This is used when the connection or stream needs to b e closed, but
there is no error to signal.</t> there is no error to signal.</t>
</dd> </dd>
<dt><xref format='none' target='H3_GENERAL_PROTOCOL_ERROR'>H3_GENERAL_PROTOCOL_ERROR</xref ><iref item='H3_GENERAL_PROTOCOL_ERROR'/> (0x0101):</dt> <dt>H3_GENERAL_PROTOCOL_ERROR (0x0101)<iref item='H3_GENERAL_PROTOCOL_ERROR'/>:</dt>
<dd> <dd>
<t anchor='H3_GENERAL_PROTOCOL_ERROR'>Peer violated protocol requirements in a way that does not match a more <t anchor='H3_GENERAL_PROTOCOL_ERROR'>Peer violated protocol requirements in a way that does not match a more
specific error code or endpoint declines to use the more specific error code.</t> specific error code or endpoint declines to use the more specific error code.</t>
</dd> </dd>
<dt><xref format='none' target='H3_INTERNAL_ERROR'>H3_INTERNAL_ERROR</xref><iref item='H3_ INTERNAL_ERROR'/> (0x0102):</dt> <dt>H3_INTERNAL_ERROR (0x0102)<iref item='H3_INTERNAL_ERROR'/>:</dt>
<dd> <dd>
<t anchor='H3_INTERNAL_ERROR'>An internal error has occurred in the HTTP stack.</t> <t anchor='H3_INTERNAL_ERROR'>An internal error has occurred in the HTTP stack.</t>
</dd> </dd>
<dt><xref format='none' target='H3_STREAM_CREATION_ERROR'>H3_STREAM_CREATION_ERROR</xref>< iref item='H3_STREAM_CREATION_ERROR'/> (0x0103):</dt> <dt>H3_STREAM_CREATION_ERROR (0x0103)<iref item='H3_STREAM_CREATION_ERROR'/>:</dt>
<dd> <dd>
<t anchor='H3_STREAM_CREATION_ERROR'>The endpoint detected that its peer created a strea m that it will not accept.</t> <t anchor='H3_STREAM_CREATION_ERROR'>The endpoint detected that its peer created a strea m that it will not accept.</t>
</dd> </dd>
<dt><xref format='none' target='H3_CLOSED_CRITICAL_STREAM'>H3_CLOSED_CRITICAL_STREAM</xref ><iref item='H3_CLOSED_CRITICAL_STREAM'/> (0x0104):</dt> <dt>H3_CLOSED_CRITICAL_STREAM (0x0104)<iref item='H3_CLOSED_CRITICAL_STREAM'/>:</dt>
<dd> <dd>
<t anchor='H3_CLOSED_CRITICAL_STREAM'>A stream required by the HTTP/3 connection was clo sed or reset.</t> <t anchor='H3_CLOSED_CRITICAL_STREAM'>A stream required by the HTTP/3 connection was clo sed or reset.</t>
</dd> </dd>
<dt><xref format='none' target='H3_FRAME_UNEXPECTED'>H3_FRAME_UNEXPECTED</xref><iref item= 'H3_FRAME_UNEXPECTED'/> (0x0105):</dt> <dt>H3_FRAME_UNEXPECTED (0x0105)<iref item='H3_FRAME_UNEXPECTED'/>:</dt>
<dd> <dd>
<t anchor='H3_FRAME_UNEXPECTED'>A frame was received that was not permitted in the curre nt state or on the <t anchor='H3_FRAME_UNEXPECTED'>A frame was received that was not permitted in the curre nt state or on the
current stream.</t> current stream.</t>
</dd> </dd>
<dt><xref format='none' target='H3_FRAME_ERROR'>H3_FRAME_ERROR</xref><iref item='H3_FRAME_ ERROR'/> (0x0106):</dt> <dt>H3_FRAME_ERROR (0x0106)<iref item='H3_FRAME_ERROR'/>:</dt>
<dd> <dd>
<t anchor='H3_FRAME_ERROR'>A frame that fails to satisfy layout requirements or with an invalid size <t anchor='H3_FRAME_ERROR'>A frame that fails to satisfy layout requirements or with an invalid size
was received.</t> was received.</t>
</dd> </dd>
<dt><xref format='none' target='H3_EXCESSIVE_LOAD'>H3_EXCESSIVE_LOAD</xref><iref item='H3_ EXCESSIVE_LOAD'/> (0x0107):</dt> <dt>H3_EXCESSIVE_LOAD (0x0107)<iref item='H3_EXCESSIVE_LOAD'/>:</dt>
<dd> <dd>
<t anchor='H3_EXCESSIVE_LOAD'>The endpoint detected that its peer is exhibiting a behavi or that might be <t anchor='H3_EXCESSIVE_LOAD'>The endpoint detected that its peer is exhibiting a behavi or that might be
generating excessive load.</t> generating excessive load.</t>
</dd> </dd>
<dt><xref format='none' target='H3_ID_ERROR'>H3_ID_ERROR</xref><iref item='H3_ID_ERROR'/> (0x0108):</dt> <dt>H3_ID_ERROR (0x0108)<iref item='H3_ID_ERROR'/>:</dt>
<dd> <dd>
<t anchor='H3_ID_ERROR'>A stream ID or <xref format='none' target='server-push'>push ID< /xref><iref item='push ID'/> was used incorrectly, such as exceeding a limit, <t anchor='H3_ID_ERROR'>A stream ID or <xref format='none' target='server-push'>push ID< /xref><iref item='push ID'/> was used incorrectly, such as exceeding a limit,
reducing a limit, or being reused.</t> reducing a limit, or being reused.</t>
</dd> </dd>
<dt><xref format='none' target='H3_SETTINGS_ERROR'>H3_SETTINGS_ERROR</xref><iref item='H3_ SETTINGS_ERROR'/> (0x0109):</dt> <dt>H3_SETTINGS_ERROR (0x0109)<iref item='H3_SETTINGS_ERROR'/>:</dt>
<dd> <dd>
<t anchor='H3_SETTINGS_ERROR'>An endpoint detected an error in the payload of a <xref fo rmat='none' target='frame-settings'>SETTINGS</xref><iref item='SETTINGS'/> frame.</t> <t anchor='H3_SETTINGS_ERROR'>An endpoint detected an error in the payload of a <xref fo rmat='none' target='frame-settings'>SETTINGS</xref><iref item='SETTINGS'/> frame.</t>
</dd> </dd>
<dt><xref format='none' target='H3_MISSING_SETTINGS'>H3_MISSING_SETTINGS</xref><iref item= 'H3_MISSING_SETTINGS'/> (0x010a):</dt> <dt>H3_MISSING_SETTINGS (0x010a)<iref item='H3_MISSING_SETTINGS'/>:</dt>
<dd> <dd>
<t anchor='H3_MISSING_SETTINGS'>No <xref format='none' target='frame-settings'>SETTINGS< /xref><iref item='SETTINGS'/> frame was received at the beginning of the <xref format='none' target= 'control-streams'>control stream</xref><iref item='control stream'/>.</t> <t anchor='H3_MISSING_SETTINGS'>No <xref format='none' target='frame-settings'>SETTINGS< /xref><iref item='SETTINGS'/> frame was received at the beginning of the <xref format='none' target= 'control-streams'>control stream</xref><iref item='control stream'/>.</t>
</dd> </dd>
<dt><xref format='none' target='H3_REQUEST_REJECTED'>H3_REQUEST_REJECTED</xref><iref item= 'H3_REQUEST_REJECTED'/> (0x010b):</dt> <dt>H3_REQUEST_REJECTED (0x010b)<iref item='H3_REQUEST_REJECTED'/>:</dt>
<dd> <dd>
<t anchor='H3_REQUEST_REJECTED'>A server rejected a request without performing any appli cation processing.</t> <t anchor='H3_REQUEST_REJECTED'>A server rejected a request without performing any appli cation processing.</t>
</dd> </dd>
<dt><xref format='none' target='H3_REQUEST_CANCELLED'>H3_REQUEST_CANCELLED</xref><iref ite m='H3_REQUEST_CANCELLED'/> (0x010c):</dt> <dt>H3_REQUEST_CANCELLED (0x010c)<iref item='H3_REQUEST_CANCELLED'/>:</dt>
<dd> <dd>
<t anchor='H3_REQUEST_CANCELLED'>The request or its response (including pushed response) is cancelled.</t> <t anchor='H3_REQUEST_CANCELLED'>The request or its response (including pushed response) is cancelled.</t>
</dd> </dd>
<dt><xref format='none' target='H3_REQUEST_INCOMPLETE'>H3_REQUEST_INCOMPLETE</xref><iref i tem='H3_REQUEST_INCOMPLETE'/> (0x010d):</dt> <dt>H3_REQUEST_INCOMPLETE (0x010d)<iref item='H3_REQUEST_INCOMPLETE'/>:</dt>
<dd> <dd>
<t anchor='H3_REQUEST_INCOMPLETE'>The client's stream terminated without containing a fu lly formed request.</t> <t anchor='H3_REQUEST_INCOMPLETE'>The client's stream terminated without containing a fu lly formed request.</t>
</dd> </dd>
<dt><xref format='none' target='H3_MESSAGE_ERROR'>H3_MESSAGE_ERROR</xref><iref item='H3_ME SSAGE_ERROR'/> (0x010e):</dt> <dt>H3_MESSAGE_ERROR (0x010e)<iref item='H3_MESSAGE_ERROR'/>:</dt>
<dd> <dd>
<t anchor='H3_MESSAGE_ERROR'>An HTTP message was <xref format='none' target='malformed'> malformed</xref><iref item='malformed'/> and cannot be processed.</t> <t anchor='H3_MESSAGE_ERROR'>An HTTP message was <xref format='none' target='malformed'> malformed</xref><iref item='malformed'/> and cannot be processed.</t>
</dd> </dd>
<dt><xref format='none' target='H3_CONNECT_ERROR'>H3_CONNECT_ERROR</xref><iref item='H3_CO NNECT_ERROR'/> (0x010f):</dt> <dt>H3_CONNECT_ERROR (0x010f)<iref item='H3_CONNECT_ERROR'/>:</dt>
<dd> <dd>
<t anchor='H3_CONNECT_ERROR'>The TCP connection established in response to a CONNECT req uest was reset or <t anchor='H3_CONNECT_ERROR'>The TCP connection established in response to a CONNECT req uest was reset or
abnormally closed.</t> abnormally closed.</t>
</dd> </dd>
<dt><xref format='none' target='H3_VERSION_FALLBACK'>H3_VERSION_FALLBACK</xref><iref item= 'H3_VERSION_FALLBACK'/> (0x0110):</dt> <dt>H3_VERSION_FALLBACK (0x0110)<iref item='H3_VERSION_FALLBACK'/>:</dt>
<dd> <dd>
<t anchor='H3_VERSION_FALLBACK'>The requested operation cannot be served over HTTP/3. T he peer should <t anchor='H3_VERSION_FALLBACK'>The requested operation cannot be served over HTTP/3. T he peer should
retry over HTTP/1.1.</t> retry over HTTP/1.1.</t>
</dd> </dd>
</dl> </dl>
<t>Error codes of the format <tt>0x1f * N + 0x21</tt> for non-negative integer values of <t>Error codes of the format <tt>0x1f * N + 0x21</tt> for non-negative integer values of
<tt>N</tt> are reserved to exercise the requirement that unknown error codes be treated <tt>N</tt> are reserved to exercise the requirement that unknown error codes be treated
as equivalent to <xref format='none' target='H3_NO_ERROR'>H3_NO_ERROR</xref><iref item='H3_NO_ERROR' /> (<xref target='extensions'/>). Implementations <bcp14>SHOULD</bcp14> as equivalent to <xref format='none' target='H3_NO_ERROR'>H3_NO_ERROR</xref><iref item='H3_NO_ERROR' /> (<xref target='extensions'/>). Implementations <bcp14>SHOULD</bcp14>
select an select an
error code from this space with some probability when they would have sent error code from this space with some probability when they would have sent
skipping to change at line 2574 skipping to change at line 2574
<title>QPACK: Field Compression for HTTP/3</title> <title>QPACK: Field Compression for HTTP/3</title>
<author fullname='Charles &apos;Buck&apos; Krasic' initials='C.' surname='Krasic'> <author fullname='Charles &apos;Buck&apos; Krasic' initials='C.' surname='Krasic'>
<organization>Google, Inc</organization> <organization>Google, Inc</organization>
</author> </author>
<author fullname='Mike Bishop' initials='M.' surname='Bishop'> <author fullname='Mike Bishop' initials='M.' surname='Bishop'>
<organization>Akamai Technologies</organization> <organization>Akamai Technologies</organization>
</author> </author>
<author fullname='Alan Frindell' initials='A.' role='editor' surname='Frindell'> <author fullname='Alan Frindell' initials='A.' role='editor' surname='Frindell'>
<organization>Facebook</organization> <organization>Facebook</organization>
</author> </author>
<date month='May' year='2022'/> <date month='June' year='2022'/>
</front> </front>
<seriesInfo name='RFC' value='9204'/> <seriesInfo name='RFC' value='9204'/>
<seriesInfo name='DOI' value='10.17487/RFC9204'/> <seriesInfo name='DOI' value='10.17487/RFC9204'/>
</reference> </reference>
<reference anchor='RFC9110' target='https://www.rfc-editor.org/info/rfc9110'> <reference anchor='RFC9110' target='https://www.rfc-editor.org/info/rfc9110'>
<front> <front>
<title>HTTP Semantics</title> <title>HTTP Semantics</title>
<author fullname='Roy T. Fielding' initials='R.' role='editor' surname='Fielding'> <author fullname='Roy T. Fielding' initials='R.' role='editor' surname='Fielding'>
<organization>Adobe</organization> <organization>Adobe</organization>
</author> </author>
<author fullname='Mark Nottingham' initials='M.' role='editor' surname='Nottingham'> <author fullname='Mark Nottingham' initials='M.' role='editor' surname='Nottingham'>
<organization>Fastly</organization> <organization>Fastly</organization>
</author> </author>
<author fullname='Julian Reschke' initials='J.' role='editor' surname='Reschke'> <author fullname='Julian Reschke' initials='J.' role='editor' surname='Reschke'>
<organization>greenbytes</organization> <organization>greenbytes</organization>
</author> </author>
<date month='May' year='2022'/> <date month='June' year='2022'/>
</front> </front>
<seriesInfo name='STD' value='97'/> <seriesInfo name='STD' value='97'/>
<seriesInfo name='RFC' value='9110'/> <seriesInfo name='RFC' value='9110'/>
<seriesInfo name='DOI' value='10.17487/RFC9110'/> <seriesInfo name='DOI' value='10.17487/RFC9110'/>
</reference> </reference>
<reference anchor='RFC9111' target='https://www.rfc-editor.org/info/rfc9111'> <reference anchor='RFC9111' target='https://www.rfc-editor.org/info/rfc9111'>
<front> <front>
<title>HTTP Caching</title> <title>HTTP Caching</title>
<author fullname='Roy T. Fielding' initials='R.' role='editor' surname='Fielding'> <author fullname='Roy T. Fielding' initials='R.' role='editor' surname='Fielding'>
<organization>Adobe</organization> <organization>Adobe</organization>
</author> </author>
<author fullname='Mark Nottingham' initials='M.' role='editor' surname='Nottingham'> <author fullname='Mark Nottingham' initials='M.' role='editor' surname='Nottingham'>
<organization>Fastly</organization> <organization>Fastly</organization>
</author> </author>
<author fullname='Julian Reschke' initials='J.' role='editor' surname='Reschke'> <author fullname='Julian Reschke' initials='J.' role='editor' surname='Reschke'>
<organization>greenbytes</organization> <organization>greenbytes</organization>
</author> </author>
<date month='May' year='2022'/> <date month='June' year='2022'/>
</front> </front>
<seriesInfo name='STD' value='98'/> <seriesInfo name='STD' value='98'/>
<seriesInfo name='RFC' value='9111'/> <seriesInfo name='RFC' value='9111'/>
<seriesInfo name='DOI' value='10.17487/RFC9111'/> <seriesInfo name='DOI' value='10.17487/RFC9111'/>
</reference> </reference>
<reference anchor='URI' target='https://www.rfc-editor.org/info/rfc3986'> <reference anchor='URI' target='https://www.rfc-editor.org/info/rfc3986'>
<front> <front>
<title>Uniform Resource Identifier (URI): Generic Syntax</title> <title>Uniform Resource Identifier (URI): Generic Syntax</title>
<author fullname='T. Berners-Lee' initials='T.' surname='Berners-Lee'> <author fullname='T. Berners-Lee' initials='T.' surname='Berners-Lee'>
<organization/> <organization/>
skipping to change at line 2824 skipping to change at line 2824
<title>HTTP/1.1</title> <title>HTTP/1.1</title>
<author fullname='Roy T. Fielding' initials='R.' role='editor' surname='Fielding'> <author fullname='Roy T. Fielding' initials='R.' role='editor' surname='Fielding'>
<organization>Adobe</organization> <organization>Adobe</organization>
</author> </author>
<author fullname='Mark Nottingham' initials='M.' role='editor' surname='Nottingham'> <author fullname='Mark Nottingham' initials='M.' role='editor' surname='Nottingham'>
<organization>Fastly</organization> <organization>Fastly</organization>
</author> </author>
<author fullname='Julian Reschke' initials='J.' role='editor' surname='Reschke'> <author fullname='Julian Reschke' initials='J.' role='editor' surname='Reschke'>
<organization>greenbytes</organization> <organization>greenbytes</organization>
</author> </author>
<date month='May' year='2022'/> <date month='June' year='2022'/>
</front> </front>
<seriesInfo name='STD' value='99'/> <seriesInfo name='STD' value='99'/>
<seriesInfo name='RFC' value='9112'/> <seriesInfo name='RFC' value='9112'/>
<seriesInfo name='DOI' value='10.17487/RFC9112'/> <seriesInfo name='DOI' value='10.17487/RFC9112'/>
</reference> </reference>
<reference anchor='RFC9113' target='https://www.rfc-editor.org/info/rfc9113'> <reference anchor='RFC9113' target='https://www.rfc-editor.org/info/rfc9113'>
<front> <front>
<title>HTTP/2</title> <title>HTTP/2</title>
<author fullname='Martin Thomson' initials='M.' role='editor' surname='Thomson'> <author fullname='Martin Thomson' initials='M.' role='editor' surname='Thomson'>
<organization>Mozilla</organization> <organization>Mozilla</organization>
</author> </author>
<author fullname='Cory Benfield' initials='C.' role='editor' surname='Benfield'> <author fullname='Cory Benfield' initials='C.' role='editor' surname='Benfield'>
<organization>Apple Inc.</organization> <organization>Apple Inc.</organization>
</author> </author>
<date month='May' year='2022'/> <date month='June' year='2022'/>
</front> </front>
<seriesInfo name='RFC' value='9113'/> <seriesInfo name='RFC' value='9113'/>
<seriesInfo name='DOI' value='10.17487/RFC9113'/> <seriesInfo name='DOI' value='10.17487/RFC9113'/>
</reference> </reference>
<reference anchor='BREACH' target='http://breachattack.com/resources/BREACH%20-%20SSL,%20gon e%20in%2030%20seconds.pdf'> <reference anchor='BREACH' target='http://breachattack.com/resources/BREACH%20-%20SSL,%20gon e%20in%2030%20seconds.pdf'>
<front> <front>
<title>BREACH: Reviving the CRIME Attack</title> <title>BREACH: Reviving the CRIME Attack</title>
<author initials='Y.' surname='Gluck'> <author initials='Y.' surname='Gluck'>
<organization/> <organization/>
</author> </author>
skipping to change at line 3080 skipping to change at line 3080
that depend on the presence of flags need to allocate space for flags as part that depend on the presence of flags need to allocate space for flags as part
of their frame payload.</t> of their frame payload.</t>
<t>Other than these issues, frame type HTTP/2 extensions are typically portable to <t>Other than these issues, frame type HTTP/2 extensions are typically portable to
QUIC simply by replacing stream 0 in HTTP/2 with a <xref format='none' target='control-streams'>cont rol stream</xref><iref item='control stream'/> in HTTP/3. QUIC simply by replacing stream 0 in HTTP/2 with a <xref format='none' target='control-streams'>cont rol stream</xref><iref item='control stream'/> in HTTP/3.
HTTP/3 extensions will not assume ordering, but would not be harmed by ordering, HTTP/3 extensions will not assume ordering, but would not be harmed by ordering,
and are expected to be portable to HTTP/2.</t> and are expected to be portable to HTTP/2.</t>
</section> </section>
<section anchor='comparison-of-http2-and-http3-frame-types'> <section anchor='comparison-of-http2-and-http3-frame-types'>
<name>Comparison of HTTP/2 and HTTP/3 Frame Types</name> <name>Comparison of HTTP/2 and HTTP/3 Frame Types</name>
<dl> <dl>
<dt><xref format='none' target='frame-data'>DATA</xref><iref item='DATA'/> (0x00):</dt> <dt><xref format='none' target='frame-data'>DATA</xref> (0x00)<iref item='DATA'/>:</dt>
<dd> <dd>
<t>Padding is not defined in HTTP/3 frames. See <xref target='frame-data'/>.</t> <t>Padding is not defined in HTTP/3 frames. See <xref target='frame-data'/>.</t>
</dd> </dd>
<dt><xref format='none' target='frame-headers'>HEADERS</xref><iref item='HEADERS'/> (0x0 1):</dt> <dt><xref format='none' target='frame-headers'>HEADERS</xref> (0x01)<iref item='HEADERS' />:</dt>
<dd> <dd>
<t>The PRIORITY region of <xref format='none' target='frame-headers'>HEADERS</xref><ir ef item='HEADERS'/> is not defined in HTTP/3 frames. Padding is not <t>The PRIORITY region of <xref format='none' target='frame-headers'>HEADERS</xref><ir ef item='HEADERS'/> is not defined in HTTP/3 frames. Padding is not
defined in HTTP/3 frames. See <xref target='frame-headers'/>.</t> defined in HTTP/3 frames. See <xref target='frame-headers'/>.</t>
</dd> </dd>
<dt>PRIORITY (0x02):</dt> <dt>PRIORITY (0x02):</dt>
<dd> <dd>
<t>As described in <xref target='h2-diff-priority'/>, HTTP/3 does not provide a means of <t>As described in <xref target='h2-diff-priority'/>, HTTP/3 does not provide a means of
signaling priority.</t> signaling priority.</t>
</dd> </dd>
<dt>RST_STREAM (0x03):</dt> <dt>RST_STREAM (0x03):</dt>
<dd> <dd>
<t>RST_STREAM frames do not exist in HTTP/3, since QUIC provides stream lifecycle <t>RST_STREAM frames do not exist in HTTP/3, since QUIC provides stream lifecycle
management. The same code point is used for the <xref format='none' target='frame-cancel-push'>CANC EL_PUSH</xref><iref item='CANCEL_PUSH'/> frame management. The same code point is used for the <xref format='none' target='frame-cancel-push'>CANC EL_PUSH</xref><iref item='CANCEL_PUSH'/> frame
(<xref target='frame-cancel-push'/>).</t> (<xref target='frame-cancel-push'/>).</t>
</dd> </dd>
<dt><xref format='none' target='frame-settings'>SETTINGS</xref><iref item='SETTINGS'/> ( 0x04):</dt> <dt><xref format='none' target='frame-settings'>SETTINGS</xref> (0x04)<iref item='SETTIN GS'/>:</dt>
<dd> <dd>
<t><xref format='none' target='frame-settings'>SETTINGS</xref><iref item='SETTINGS'/> frames are sent only at the beginning of the connection. See <t><xref format='none' target='frame-settings'>SETTINGS</xref><iref item='SETTINGS'/> frames are sent only at the beginning of the connection. See
<xref target='frame-settings'/> and <xref target='h2-settings'/>.</t> <xref target='frame-settings'/> and <xref target='h2-settings'/>.</t>
</dd> </dd>
<dt><xref format='none' target='frame-push-promise'>PUSH_PROMISE</xref><iref item='PUSH_ PROMISE'/> (0x05):</dt> <dt><xref format='none' target='frame-push-promise'>PUSH_PROMISE</xref> (0x05)<iref ite m='PUSH_PROMISE'/>:</dt>
<dd> <dd>
<t>The <xref format='none' target='frame-push-promise'>PUSH_PROMISE</xref><iref item=' PUSH_PROMISE'/> frame does not reference a stream; instead, the <xref format='none' target='push-str eams'>push stream</xref><iref item='push stream'/> <t>The <xref format='none' target='frame-push-promise'>PUSH_PROMISE</xref><iref item=' PUSH_PROMISE'/> frame does not reference a stream; instead, the <xref format='none' target='push-str eams'>push stream</xref><iref item='push stream'/>
references the <xref format='none' target='frame-push-promise'>PUSH_PROMISE</xref><iref item='PUSH_P ROMISE'/> frame using a <xref format='none' target='server-push'>push ID</xref><iref item='push ID'/ >. See references the <xref format='none' target='frame-push-promise'>PUSH_PROMISE</xref><iref item='PUSH_P ROMISE'/> frame using a <xref format='none' target='server-push'>push ID</xref><iref item='push ID'/ >. See
<xref target='frame-push-promise'/>.</t> <xref target='frame-push-promise'/>.</t>
</dd> </dd>
<dt>PING (0x06):</dt> <dt>PING (0x06):</dt>
<dd> <dd>
<t>PING frames do not exist in HTTP/3, as QUIC provides equivalent <t>PING frames do not exist in HTTP/3, as QUIC provides equivalent
functionality.</t> functionality.</t>
</dd> </dd>
<dt><xref format='none' target='frame-goaway'>GOAWAY</xref><iref item='GOAWAY'/> (0x07): </dt> <dt><xref format='none' target='frame-goaway'>GOAWAY</xref> (0x07)<iref item='GOAWAY'/>: </dt>
<dd> <dd>
<t><xref format='none' target='frame-goaway'>GOAWAY</xref><iref item='GOAWAY'/> does n ot contain an error code. In the client-to-server direction, <t><xref format='none' target='frame-goaway'>GOAWAY</xref><iref item='GOAWAY'/> does n ot contain an error code. In the client-to-server direction,
it carries a <xref format='none' target='server-push'>push ID</xref><iref item='push ID'/> instead o f a server-initiated stream ID. it carries a <xref format='none' target='server-push'>push ID</xref><iref item='push ID'/> instead o f a server-initiated stream ID.
See <xref target='frame-goaway'/>.</t> See <xref target='frame-goaway'/>.</t>
</dd> </dd>
<dt>WINDOW_UPDATE (0x08):</dt> <dt>WINDOW_UPDATE (0x08):</dt>
<dd> <dd>
<t>WINDOW_UPDATE frames do not exist in HTTP/3, since QUIC provides flow control.</t> <t>WINDOW_UPDATE frames do not exist in HTTP/3, since QUIC provides flow control.</t>
</dd> </dd>
<dt>CONTINUATION (0x09):</dt> <dt>CONTINUATION (0x09):</dt>
 End of changes. 29 change blocks. 
29 lines changed or deleted 29 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/