A Love Letter to HTTP: From GET to HTTP/2 Through a Romantic Timeline
This whimsical diary narrates the evolution of the HTTP protocol—from its humble GET request origins to the sophisticated features of HTTP/2—using a client‑server love story to illustrate methods, headers, pipelining, chunked transfer, and server push in an engaging, educational way.
1991 – The Birth of HTTP
In a metaphorical diary, the client (named "client") falls in love with the server (named "server") and invents the HTTP protocol so they can communicate. The client can only send a GET request and the server replies with an HTML document:
<html>
<body>Hello World</body>
</html>The client calls this version 0.9, hoping to improve later.
1996 – Adding More Feelings
The client wants to share images, video, and binary files, so it adds new methods POST and HEAD. To make each exchange clearer, it introduces request and response headers such as: Accept: */* – tells the server which media types the client can handle. Content-Type: image/jpeg or Content-Type: video/mp4 – lets the client know the type of data being returned. Accept-Encoding: gzip, deflate – indicates supported compression algorithms. Content-Encoding: gzip – informs the client of the actual compression used.
Because each TCP connection could only carry a single request, browsers began using a non‑standard Connection: keep-alive header to keep the connection open: Connection: keep-alive This header was not yet part of the official standard.
1997 – Standardizing Keep‑Alive and Pipelining
The client pushes Connection: keep-alive into the standard, allowing persistent connections. It also introduces pipelining, enabling multiple requests to be sent without waiting for each response.
The server starts sending Content-Length so the client knows the size of the payload, and later the client adds Transfer-Encoding: chunked for responses of unknown length. An example of a chunked response:
HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked
25
This is the data in the first chunk
1C
and this is the second one
3
con
8
sequence
0Additional methods PUT and PATCH are also introduced, and the protocol version is named 1.1.
2009 – SPDY Appears
Google publishes the SPDY protocol to address performance issues in HTTP/1.1, but the client remains loyal to its original HTTP protocol after an 18‑year relationship.
2015 – The Leap to HTTP/2
Building on ideas from SPDY, the client performs several optimizations and names the new version HTTP/2.0 (with future 3.0, 4.0 in mind):
Headers are encoded in binary (instead of ASCII) to reduce parsing overhead.
Multiplexing allows concurrent requests and responses over a single connection.
Header compression and indexing (similar to HPACK) replace repeated header fields with short indexes, and gzip/compress can be applied to header blocks.
Server push enables the server to send resources proactively without an explicit client request.
These changes dramatically speed up communication, delivering love‑messages in milliseconds.
Conclusion
From slow, distant letters to instant, millisecond‑level exchanges, the HTTP protocol’s evolution mirrors a romantic journey, reminding readers that technical progress can be as heartfelt as any love story.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Liangxu Linux
Liangxu, a self‑taught IT professional now working as a Linux development engineer at a Fortune 500 multinational, shares extensive Linux knowledge—fundamentals, applications, tools, plus Git, databases, Raspberry Pi, etc. (Reply “Linux” to receive essential resources.)
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
