Chapter 05 · HTTP3 Frame Processing and Request Response Semantics
Check your understanding
15 questionsself-scored · offline
Answer to check your grasp of Chapter 05. Multiple-choice and true/false questions score themselves and reveal an explanation; short-answer questions reveal a model answer. Nothing leaves your browser.
- Q1multiple choiceWhat is the shape of every HTTP/3 frame?WhyEvery HTTP/3 frame is Type + Length + Frame Payload, all framed so unknown types can be skipped by reading Length. [§5.1, RFC 9114 §7.1]
- Q2true / falseHTTP/3 frame boundaries line up with QUIC packet boundaries.WhyAn HTTP/3 frame lives in a QUIC stream's byte sequence and is delimited by its Length field, independent of packets — one frame can span many packets, and one packet can carry pieces of several frames. [§5.1]
- Q3multiple choiceOn a request/response stream, the valid frame sequence is:WhyA message is a HEADERS (header section), then DATA frames (content), then an optional trailing HEADERS. A DATA-before-HEADERS or a frame after the trailers is H3_FRAME_UNEXPECTED. [§5.1, §5.3, RFC 9114 §4.1]
- Q4multiple choiceWhy does HTTP/3 use QPACK instead of HTTP/2's HPACK?WhyHPACK required header blocks to be processed in order; over QUIC's out-of-order streams that would stall decoding. QPACK moves table updates to dedicated streams with a bounded blocking mechanism. [§5.2, RFC 9204 §2]
- Q5multiple choiceSetting SETTINGS_QPACK_MAX_TABLE_CAPACITY to 0 means:WhyA capacity of zero forbids the dynamic table, forcing static-only encoding: worse compression but guaranteed non-blocking decode. [§5.2, RFC 9204 §5]
- Q6multiple choiceA QPACK indexed field line (leading bit 1) encodes:WhyIndexed representations pull name and value from one static- or dynamic-table entry — a common header becomes a single byte. Literals (01 / 001) spell out the value or both. [§5.2, constants.md §14]
- Q7multiple choiceHow many requests may a client send on a single bidirectional stream?WhyA client sends exactly one request per stream; the server replies on the same stream. Concurrency comes from opening more streams, not reusing one. [§5.3, RFC 9114 §4.1]
- Q8multiple choiceA server wants the client to start fetching sub-resources before the final response is ready. It sends:WhyThe server may send zero or more interim (1xx) responses before the single final response on the same stream; 103 Early Hints is the common one and is now preferred over server push. [§5.3, RFC 9114 §4.1]
- Q9true / falseConcurrent HTTP/3 streams transmit simultaneously on the wire.WhyAt any instant the connection sends bytes for whichever stream the scheduler picked; concurrency means many streams are open and making progress over time, interleaved through one send path. [§5.3]
- Q10multiple choiceCancelling a single HTTP/3 request while keeping the connection alive is done with:WhyAbruptly terminating the stream (RESET_STREAM on the send side, STOP_SENDING on the receive side) with a code like H3_REQUEST_CANCELLED ends just that request; other streams continue. [§5.4, RFC 9114 §4.1.2]
- Q11multiple choiceWhat tells you whether an HTTP/3 failure ended one stream or the whole connection?WhyBoth scopes draw from the same HTTP/3 error-code space, so the code alone is ambiguous; the carrying frame gives the blast radius. [§5.4]
- Q12multiple choiceThe GOAWAY frame is used to:WhyGOAWAY starts an orderly drain: a server sends a client-initiated stream ID (a client, a push ID); requests at or above that identifier are rejected and retryable, ones below it may finish. The sender then closes, ideally with H3_NO_ERROR. [§5.4, RFC 9114 §5.2]
- Q13true / falseClosing the control stream or a QPACK stream is a connection error.WhyThe control and QPACK encoder/decoder streams are critical and must stay open for the connection's life; closing one is H3_CLOSED_CRITICAL_STREAM (0x0104). [§5.4, RFC 9114 §6.2.1]
- Q14short answerExplain the difference between a QUIC frame and an HTTP/3 frame.Model answerA QUIC frame (STREAM, ACK, CRYPTO, …) is a unit inside a QUIC packet, part of the transport. An HTTP/3 frame (DATA, HEADERS, SETTINGS, …) is a unit inside a QUIC stream's reassembled byte sequence, part of the application protocol. HTTP/3 frames are carried by QUIC STREAM frames, but the two layers' boundaries are unrelated: one HTTP/3 frame may span many QUIC packets. [§5.1]
- Q15short answerWhen you build an HTTP/3 client, what must it set up after the QUIC handshake before sending its first request?Model answerAfter the QUIC handshake negotiates ALPN 'h3', the client opens its unidirectional control stream (type 0x00) and sends SETTINGS as its first frame, and opens the QPACK encoder (0x02) and decoder (0x03) streams. Only then does it issue requests on client-initiated bidirectional streams (IDs 0, 4, 8, …), each carrying HEADERS then optional DATA. [§5.5, §5.1]