Fundamentals 12 min read

Evolution of HTTP: From 0.9 to HTTP/3 and Its Key Features

This article explains the historical development of the HTTP protocol—from the simple HTTP/0.9 version through HTTP/1.0, 1.1, the binary‑based HTTP/2, and the emerging HTTP/3—highlighting each version's features, limitations, and the motivations behind their upgrades.

Full-Stack Internet Architecture
Full-Stack Internet Architecture
Full-Stack Internet Architecture
Evolution of HTTP: From 0.9 to HTTP/3 and Its Key Features

Hello everyone, I’m Tom.

Today we discuss the HTTP protocol.

In the Internet era, data transmission enables us to explore the world with just a mouse click.

We know the OSI model has seven layers: Physical Layer , Data Link Layer , Network Layer , Transport Layer , Session Layer , Presentation Layer , Application Layer .

The higher the layer, the closer it is to user habits; the application layer is where HTTP lives.

1. HTTP/0.9

Released in 1991, HTTP/0.9 is very simple.

1) It only supports GET requests and has no headers; each request creates a new TCP connection, leading to poor reuse and performance.

2) Server responses can only be in HTML format; after sending, the TCP connection is closed, and missing pages return no error code.

As user needs grew, HTTP began evolving.

2. HTTP/1.0

Published in 1996, HTTP/1.0 added many features.

1) Request and response headers were introduced, e.g.:

Content-Type allows non‑HTML responses
Expires、Last-Modified for caching
Authorization for authentication
Connection: keep-alive supports persistent connections (non‑standard)

2) New request methods POST and HEAD were added.

3) Support for various content types such as text, images, video, and binary files.

4) HTTP version and status codes were added to responses.

Drawback: Each TCP connection could only carry one request, causing performance issues due to the three‑way handshake.

To mitigate this, a non‑standard Connection: keep-alive header was introduced to ask the server not to close the TCP connection.

3. HTTP/1.1

Released in 1997, HTTP/1.1 is the most widely used version today.

1) Default support for persistent connections and request pipelining, allowing multiple requests/responses over a single TCP connection.

2) Pipelining enables batch sending of requests, solving head‑of‑line blocking, though responses must follow request order.

3) Streaming rendering lets the server send data in chunks, reducing latency and white‑screen time.

4) The Range header allows partial resource requests (status 206).

5) The Host header enables virtual hosting, allowing multiple sites on one server.

6) Additional caching headers such as E-Tag and Cache-Control .

7) Introduced 24 new status codes, e.g., 409 (Conflict) and 410 (Gone).

4. HTTP/2

Born in 2015, HTTP/2 uses a binary framing layer to greatly improve transmission efficiency.

New features:

Binary frames: the smallest unit of HTTP/2 transmission.

Messages: logical HTTP messages composed of one or more frames.

Data streams: virtual channels that can carry multiple messages bidirectionally.

On a single TCP connection, frames from different streams can be interleaved and later reassembled, enabling true multiplexing.

2) Multiplexing allows concurrent requests over one connection, vastly increasing throughput compared to HTTP/1.1’s multiple‑connection model.

3) Header compression uses a static table of 61 common header fields, representing them with index numbers to achieve 50‑90% compression.

4) Request priority: each stream carries a priority flag, letting the server decide response order.

5) Server push: the server can proactively send resources (e.g., JS, CSS) without the client having to request them again.

Example: when an HTML page contains <script src="xxxx.js"> , HTTP/2 can deliver the script together with the HTML response.

5. HTTP/3

Although HTTP/2 eliminates head‑of‑line blocking at the application layer, TCP still suffers from it.

Google introduced the QUIC protocol, allowing HTTP to run over QUIC instead of TCP; this new version is called HTTP/3.

HTTP/3 is currently a draft and not yet officially released.

Tip: When designing software architecture, define interfaces carefully and leave room for future extensions; later optimizations should be internal and transparent to users.

Why is it called HTTP/2 instead of HTTP/2.0? The working group avoided the “minor version” notation to prevent confusion with HTTP/1.0 and HTTP/1.1.

For encryption, HTTP/2 defines two identifiers: h2 for encrypted and h2c for clear‑text.

HTTP/3 continues the evolution, aiming to solve TCP’s inherent head‑of‑line blocking.

HTTPnetworkingHTTP/3HTTP/2Web ProtocolinternetProtocol Evolution
Full-Stack Internet Architecture
Written by

Full-Stack Internet Architecture

Introducing full-stack Internet architecture technologies centered on Java

0 followers
Reader feedback

How this landed with the community

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