HTTP/HTTPS Internals
Inspect a real HTTP request and TLS handshake with curl and openssl, then compare HTTP/1.1, HTTP/2, and HTTP/3 directly against the same server to see exactly what each version changes and why.
Prerequisites: TCP/IP Fundamentals; DNS Deep Dive.
Here's the detail that makes HTTP's version history easy to reason about: the request methods, status codes, and header semantics you already know (GET, POST, 200, 404, Content-Type) have stayed essentially constant across HTTP/1.1, HTTP/2, and HTTP/3. What's changed, version to version, is entirely about how those semantics get transported — the wire format and the underlying connection. HTTP/1.1 sends plain text over TCP. HTTP/2 sends a binary framing format, multiplexed over a single TCP connection. HTTP/3 keeps HTTP/2's multiplexing idea but moves off TCP entirely, onto QUIC — a transport protocol built on UDP.
This project inspects all three directly against real infrastructure, plus the TLS handshake that (with the narrow exception of plaintext HTTP/1.1 on port 80) now underlies practically every request on the modern web.
Anatomy of a request with curl -v
The TLS handshake underneath
HTTP/2: multiplexing, and the head-of-line blocking it doesn't fully solve
HTTP/3 and QUIC: check it directly against a real site
Secret Mission: benchmark the same resource three ways
Before You Go
Test what you just learned
Self-testing is one of the best ways to retain new skills. Unlock project quizzes to check your understanding.
Log in to unlock0 / 7 complete
