Chapter 01 · Foundations of QUIC and HTTP3
Check your understanding
13 questionsself-scored · offline
Answer to check your grasp of Chapter 01. Multiple-choice and true/false questions score themselves and reveal an explanation; short-answer questions reveal a model answer. Nothing leaves your browser.
- Q1multiple choiceFor a typical web page made of many small objects, what most often dominates completion time?WhyMost objects are small and never leave slow start, so latency — how many round trips setup and multiplexing take — dominates, not bandwidth. [§1.1]
- Q2multiple choiceIn the TCP + TLS + HTTP/2 stack, where does head-of-line blocking actually occur?WhyHTTP/2 multiplexes streams, but they share one ordered TCP byte stream; a single lost segment holds back all later bytes, including other streams' data. [§1.1]
- Q3true / falseQUIC eliminates every form of head-of-line blocking.WhyIt removes transport-level HoL blocking (streams deliver independently), but a lost packet can still stall QPACK header decompression that references not-yet-arrived state. [§1.3, §6.3]
- Q4multiple choiceBefore the first request is sent, how many round trips does QUIC's 1-RTT handshake need, versus TCP + TLS 1.3?WhyQUIC combines transport and TLS into one round trip; TCP + TLS 1.3 needs one for TCP and one for TLS, so two. 0-RTT resumption removes even QUIC's one. [§1.1, §1.2]
- Q5multiple choiceWhy do QUIC packet numbers give cleaner RTT samples than TCP sequence numbers?WhyA lost frame is re-sent in a new packet with a fresh, higher packet number, so acknowledgments are unambiguous — no TCP-style retransmission ambiguity. [§1.2, RFC 9000 §13.2.1]
- Q6multiple choiceHow many packet number spaces does QUIC maintain?WhyInitial, Handshake, and Application Data (0-RTT and 1-RTT share the last). Each has its own independent packet numbers. [§1.2, RFC 9000 §12.3]
- Q7true / falseA single HTTP/3 request/response exchange uses one client-initiated bidirectional stream.WhyThe client sends request frames and the server replies on the same bidirectional stream; such stream IDs are 0, 4, 8, …. [§1.3, RFC 9114 §4.1]
- Q8multiple choiceWhich of these has no HTTP/3 frame equivalent, because QUIC already provides the function?WhyQUIC does flow control itself, so HTTP/3 has no WINDOW_UPDATE frame. It also drops PING (QUIC PING) and RST_STREAM (QUIC RESET_STREAM). [§1.3, RFC 9114 §7.2.8]
- Q9multiple choiceWhat does a QUIC long header carry that the short (1-RTT) header omits?WhyLong headers bootstrap a fresh peer, so they carry the Version and both Connection IDs; the short header, having context, drops the version and Source CID. [§1.4, RFC 9000 §17]
- Q10multiple choiceA UDP datagram carrying a QUIC Initial packet must be at least how large?WhyInitial-bearing datagrams are padded to at least 1200 bytes, which underpins the anti-amplification limit. The value is the floor for max_udp_payload_size. [§1.4, constants.md §6]
- Q11true / falseA TLS keylog file can be shared publicly without exposing the captured traffic.WhyA keylog holds the session's decryption secrets; anyone with it can decrypt the matching capture. Enable it only for development/synthetic traffic. [§1.5]
- Q12short answerWhy can a QUIC connection survive a client moving from Wi-Fi to cellular, when a TCP connection cannot?Model answerA QUIC connection is identified by its Connection ID, not the UDP four-tuple. When the client's address changes, packets still carry a known Connection ID, so after path validation the connection continues rather than breaking. TCP is bound to the four-tuple and must reconnect. [§1.4, RFC 9000 §5.1, §9]
- Q13short answerDistinguish coalescing from multiplexing in QUIC.Model answerMultiplexing packs frames from different streams into one packet's payload. Coalescing concatenates several whole packets — possibly from different number spaces, e.g. an Initial and a Handshake packet — into one UDP datagram. A single datagram can do both at once. [§1.4, RFC 9000 §12.2]