Hi
Nice short introduction, thanks for sharing this 🙏. If you don’t mind, there’s one important detail though: it’s the part about HTTP being a stateless protocol.
It used to be very true, with a new TCP connection established for each request (HTTP 1.0) But that was very inefficient, so HTTP 1.1 changed that to keep and re-use the TCP connection by default. But the HTTP semantics were still stateless (the underlying stack kept a state for performance reasons, but this was not visible to HTTP requests contents)
And now with HTTP 2 (no already used everywhere), this connection and state start to become more visible (i.e. server push with multiple responses is possible because the client and server remain connected after the initial response). Long story short, it was purely stateless, but it became more subtle than that ;)
It’s much better explained in the great A Brief History of HTTP (I could not explain these parts better than they do).
And for many (too much?) technical details, Ilya Grigorik’s Introduction to HTTP/2 is a gold mine. You’ll find there this note:
HTTP/2 breaks away from the strict request-response semantics and enables one-to-many and server-initiated push workflows that open up a world of new interaction possibilities both within and outside the browser.
Thanks again for the introduction.