Protocol in Code · Track

HTTP/QUIC

parsing, pooling, and multiplexing as stateful logic

10 sessions Course material (English)

Sessions

HTTP/QUIC track sessions

Session 01

A Request Is Parsed Text

Before any header semantics or routing, what shape does raw HTTP text have to match, and what breaks that shape?

Open Session 01
Session 02

Headers Come with Rules

Once a request is parsed into a flat list of name/value pairs, what turns that list into "valid" or "invalid," and who decides?

Open Session 02
Session 03

Keep-Alive Is a Pool

When a client wants a connection to a host, how does it decide between reusing something idle and opening something new — and what makes an idle connection stop being reusable?

Open Session 03
Session 04

Cacheable Is a Decision Tree

Given a response's caching directives, three separate questions have to be answered in order: should this be stored at all, can a stored copy be reused right now, and if not, does revalidation confirm nothing changed?

Open Session 04
Session 05

Redirects Are a Bounded Loop

Following a redirect chain is a loop with no natural stopping point — what two mechanisms turn it into something that is guaranteed to terminate, and what determines whether a POST survives the trip?

Open Session 05
Session 06

Chunked Is a Parser State Machine

Chunked transfer encoding is a stream of alternating size-lines and data — what single field tracks where the parser is in that alternation, and what makes an error state permanent once entered?

Open Session 06
Session 07

Streams Share One Connection

An HTTP/2 connection multiplexes many independent request/response streams over one transport — what proves each stream's state is tracked separately, and what makes the very first frame on a stream special?

Open Session 07
Session 08

QUIC Streams Don't Block Each Other

TCP has one sequence space per connection, so a gap anywhere stalls everything behind it. QUIC gives every stream its own offset space — so what, mechanically, keeps one stream's gap from ever touching another stream's delivery?

Open Session 08
Session 09

Flow Control Is a Credit Balance

QUIC enforces flow control at two levels at once — per stream and per connection. What decides whether a send goes through, and what exactly happens to each level's balance when the answer is no?

Open Session 09
Session 10

Build the Toy HTTP Server Loop

A server doesn't parse a request in isolation, or check headers in isolation, or answer from cache in isolation — it does all three, in order, once per request, for as many requests as one connection carries. What is the exact loop that wires those three earlier sessions together, and what makes it stop?

Open Session 10