HTTP (Hypertext Transfer Protocol) 1.1 / 2 / 3
What it is for
★★★ HTTP's semantics have barely changed: method, path, headers, body going out; status code, headers, body coming back. GET /index.html means the same thing in all three generations.
★★ What keeps changing is how it is packed onto the wire and what it is carried on. So the three scenarios here are the three generations -- one request, packed three ways.
★★★ The three generations, and what HTTPS is
· 1.1: plain text, and one connection can carry only one request at a time;
· HTTPS: ★not a generation but an inserted layer -- HTTP placed inside TLS, with the semantics untouched;
· 2: binary frames multiplexed by stream ID -- but still over a single TCP connection;
· 3: the whole thing moved onto QUIC, where streams live below, so one loss stalls only one of them.
★★ The stack of grey blocks in each diagram is what that generation rides on.
★ Common misconceptions
★★★ "HTTPS is a different protocol" -- it is not. It is HTTP plus TLS: methods, status codes and headers are unchanged, and even the port merely moves from 80 to 443.
★★★ "HTTP/2 fixed head-of-line blocking" -- it fixed the HTTP half. One loss on the single TCP connection underneath stalls every stream, which is exactly the last step of scenario 2.
★★ "HTTP/3 uses UDP, so it is unreliable" -- the reliability lives in QUIC.