One request/response idea, three radically different wire protocols — and the head-of-line blocking problem that forced each rewrite.
The request/response model, methods, headers, status codes, URLs, and why HTTP is stateless — read this before the version deep-dives.
A human-readable text protocol. Keep-alive, why pipelining failed, and the 6-connections-per-host hack.
A binary framing layer: streams, frames, true multiplexing on one connection, and HPACK header compression.
Abandon TCP for QUIC on UDP: independent streams, built-in TLS 1.3, 0-RTT, and connection migration.
The single problem that drove every version bump — traced through three layers of the stack.
The full comparison table and a straight answer on which version to run where.