QUIC streams and HTTP/3
HTTP/3 is made for QUIC so it takes full advantage of QUIC’s streams, whereHTTP/2 had to design its entire stream and multiplexing concept of its own ontop of TCP.
HTTP requests done over HTTP/3 use a specific set of streams.
HTTP/3 frames
HTTP/3 means setting up QUIC streams and sending over a set of frames to theother end. There’s but a small fixed number (actually nine on December 18th, 2018!) of known frames inHTTP/3. The most important ones are probably:
- HEADERS, that sends compressed HTTP headers
- DATA, sends binary data contents
- GOAWAY, please shutdown this connection
HTTP Request
The client sends its HTTP request on a client-initiated bidirectional QUICstream.
A request consists of a single HEADERS frame and might optionally be followedby one or two other frames: a series of DATA frames and possibly a finalHEADERS frame for trailers.
After sending a request, a client closes the stream for sending.
HTTP Response
The server sends back its HTTP response on the bidirectional stream. A HEADERSframe, a series of DATA frames and possibly a trailing HEADERS frame.
QPACK headers
The HEADERS frames contain HTTP headers compressed using the QPACK algorithm.QPACK is similar in style to the HTTP/2 compression called HPACK (RFC7541), but modified to work withstreams delivered out of order.
QPACK itself uses two additional unidirectional QUIC streams between the twoend-points. They are used to carry dynamic table information in eitherdirection.