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.

Liangxu Linux
Liangxu Linux
Liangxu Linux
A Love Letter to HTTP: From GET to HTTP/2 Through a Romantic Timeline

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

0

Additional 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.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Backend DevelopmentHTTPweb protocolclient-server
Liangxu Linux
Written by

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.)

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.