Skip to content

Commit bab7dd2

Browse files
committed
Merge branch 'master' into alpn-alt-svc
2 parents 39f2090 + ed81d4c commit bab7dd2

File tree

2 files changed

+24
-32
lines changed

2 files changed

+24
-32
lines changed

draft-ietf-quic-http.md

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,9 @@ HTTP/2.
141141

142142
# Connection establishment {#connection-establishment}
143143

144-
HTTP-over-QUIC connections are established as described in {{QUIC-TRANSPORT}}.
145-
During connection establishment, HTTP/QUIC support is indicated by selecting the
146-
ALPN token "hq" in the crypto handshake.
144+
HTTP/QUIC connections are established as described in {{QUIC-TRANSPORT}}. During
145+
connection establishment, HTTP/QUIC support is indicated by selecting the ALPN
146+
token "hq" in the crypto handshake.
147147

148148
While connection-level options pertaining to the core QUIC protocol are set in
149149
the initial crypto handshake, HTTP-specific settings are conveyed
@@ -265,8 +265,8 @@ other reasons.
265265

266266
### Header Compression
267267

268-
HTTP-over-QUIC uses HPACK header compression as described in {{!RFC7541}}. HPACK
269-
was designed for HTTP/2 with the assumption of in- order delivery such as that
268+
HTTP/QUIC uses HPACK header compression as described in {{!RFC7541}}. HPACK was
269+
designed for HTTP/2 with the assumption of in- order delivery such as that
270270
provided by TCP. A sequence of encoded header blocks must arrive (and be
271271
decoded) at an endpoint in the same order in which they were encoded. This
272272
ensures that the dynamic state at the two endpoints remains in sync.
@@ -289,22 +289,21 @@ do we need to retain compatibility with HTTP/2's HPACK?
289289

290290
## Stream Priorities {#priority}
291291

292-
HTTP-over-QUIC uses the priority scheme described in {{!RFC7540}} Section 5.3.
293-
In this priority scheme, a given stream can be designated as dependent upon
294-
another stream, which expresses the preference that the latter stream (the
295-
"parent" stream) be allocated resources before the former stream (the
296-
"dependent" stream). Taken together, the dependencies across all streams in a
297-
connection form a dependency tree. The structure of the dependency tree changes
298-
as HEADERS and PRIORITY frames add, remove, or change the dependency links
299-
between streams.
292+
HTTP/QUIC uses the priority scheme described in {{!RFC7540}} Section 5.3. In
293+
this priority scheme, a given stream can be designated as dependent upon another
294+
stream, which expresses the preference that the latter stream (the "parent"
295+
stream) be allocated resources before the former stream (the "dependent"
296+
stream). Taken together, the dependencies across all streams in a connection
297+
form a dependency tree. The structure of the dependency tree changes as HEADERS
298+
and PRIORITY frames add, remove, or change the dependency links between streams.
300299

301300
Implicit in this scheme is the notion of in-order delivery of priority changes
302301
(i.e., dependency tree mutations): since operations on the dependency tree such
303302
as reparenting a subtree are not commutative, both sender and receiver must
304303
apply them in the same order to ensure that both sides have a consistent view of
305304
the stream dependency tree. HTTP/2 specifies priority assignments in PRIORITY
306305
frames and (optionally) in HEADERS frames. To achieve in-order delivery of
307-
priority changes in HTTP-over-QUIC, PRIORITY frames are sent on the connection
306+
priority changes in HTTP/QUIC, PRIORITY frames are sent on the connection
308307
control stream and the PRIORITY section is removed from the HEADERS frame. The
309308
semantics of the Stream Dependency, Weight, E flag, and (for HEADERS frames)
310309
PRIORITY flag are the same as in HTTP/2.
@@ -324,9 +323,9 @@ HTTP level.
324323

325324
## Server Push
326325

327-
HTTP-over-QUIC supports server push as described in {{!RFC7540}}. During
328-
connection establishment, the client indicates whether it is willing to receive
329-
server pushes via the SETTINGS_ENABLE_PUSH setting in the SETTINGS frame (see
326+
HTTP/QUIC supports server push as described in {{!RFC7540}}. During connection
327+
establishment, the client indicates whether it is willing to receive server
328+
pushes via the SETTINGS_ENABLE_PUSH setting in the SETTINGS frame (see
330329
{{connection-establishment}}), which defaults to 1 (true).
331330

332331
As with server push for HTTP/2, the server initiates a server push by sending a
@@ -561,8 +560,8 @@ bytes than would be used to transfer the maximum permitted value.
561560
#### Defined SETTINGS Parameters
562561

563562
Some transport-level options that HTTP/2 specifies via the SETTINGS frame are
564-
superseded by QUIC transport parameters in HTTP-over-QUIC. Below is a listing of
565-
how each HTTP/2 SETTINGS parameter is mapped:
563+
superseded by QUIC transport parameters in HTTP/QUIC. Below is a listing of how
564+
each HTTP/2 SETTINGS parameter is mapped:
566565

567566
SETTINGS_HEADER_TABLE_SIZE:
568567
: An integer with a maximum value of 2^32 - 1.

draft-ietf-quic-tls.md

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -231,15 +231,15 @@ A simplified TLS 1.3 handshake with 0-RTT application data is shown in
231231
Client Server
232232

233233
ClientHello
234-
(0-RTT Application Data)
235-
(end_of_early_data) -------->
234+
(0-RTT Application Data) -------->
236235
ServerHello
237236
{EncryptedExtensions}
238237
{ServerConfiguration}
239238
{Certificate}
240239
{CertificateVerify}
241240
{Finished}
242241
<-------- [Application Data]
242+
(EndOfEarlyData)
243243
{Finished} -------->
244244

245245
[Application Data] <-------> [Application Data]
@@ -315,7 +315,7 @@ ensures that TLS handshake messages are delivered in the correct order.
315315
QUIC Frames <any> @1
316316
<--------
317317
@1 QUIC STREAM Frame(s) <1>:
318-
(end_of_early_data)
318+
(EndOfEarlyData)
319319
{Finished}
320320
-------->
321321

@@ -728,7 +728,7 @@ NewSessionTicket.
728728

729729
The second flight of TLS handshake messages from the client, and any TLS
730730
handshake messages that are sent after completing the TLS handshake do not need
731-
special packet protection rules. This includes the end_of_early_data alert that
731+
special packet protection rules. This includes the EndOfEarlyData message that
732732
is sent by a client to mark the end of its 0-RTT data. Packets containing these
733733
messages use the packet protection keys that are current at the time of sending
734734
(or retransmission).
@@ -1034,9 +1034,8 @@ See {{useless}} for a discussion of these risks.
10341034

10351035
To avoid receiving TLS packets that contain no useful data, a TLS implementation
10361036
MUST reject empty TLS handshake records and any record that is not permitted by
1037-
the TLS state machine. Any TLS application data or alerts - other than a single
1038-
end_of_early_data at the appropriate time - that is received prior to the end of
1039-
the handshake MUST be treated as a fatal error.
1037+
the TLS state machine. Any TLS application data or alerts that is received
1038+
prior to the end of the handshake MUST be treated as a fatal error.
10401039

10411040

10421041
## Use of 0-RTT Keys {#using-early-data}
@@ -1054,12 +1053,6 @@ server can send 0-RTT data until it receives all of the server's handshake
10541053
messages. A client SHOULD stop sending 0-RTT data if it receives an indication
10551054
that 0-RTT data has been rejected.
10561055

1057-
A client SHOULD send its end_of_early_data alert only after it has received all
1058-
of the server's handshake messages. In other words, a client is encouraged to
1059-
use 0-RTT keys until 1-RTT keys become available. This prevents stalling of the
1060-
connection when there is packet loss or delay and allows the client to send
1061-
continuously.
1062-
10631056
A server MUST NOT use 0-RTT keys to protect packets.
10641057

10651058

0 commit comments

Comments
 (0)