Evolution of HTTP

Vamsi K
2 min readNov 6, 2020

HTTP (HyperText Transfer Protocol) is the underlying protocol of the World Wide Web. Developed by Tim Berners-Lee and his team between 1989–1991, HTTP has seen many changes, keeping most of the simplicity and further shaping its flexibility. HTTP has evolved from an early protocol to exchange files in a semi-trusted laboratory environment, to the modern maze of the Internet, now carrying images, videos in high resolution and 3D.

HTTP/0.9 — The one-line protocol
The initial version of HTTP had no version number; it has been later called 0.9 to differentiate it from the later versions.

HTTP/0.9 is extremely simple: requests consist of a single line and start with the only possible method GET followed by the path to the resource (not the URL as both the protocol, server, and port are unnecessary once connected to the server).

HTTP/1.0 — Building extensibility
HTTP headers have been introduced, both for the requests and the responses, allowing metadata to be transmitted and making the protocol extremely flexible and extensible.
With the help of the new HTTP headers, the ability to transmit other documents than plain HTML files has been added (thanks to the Content-Type header).

HTTP/1.1 — The standardized protocol
HTTP/1.1 clarified ambiguities and introduced numerous improvements:

  • A connection can be reused, saving them time to reopen it numerous times to display the resources embedded into the single original document retrieved.
  • Pipelining has been added, allowing to send a second request before the answer for the first one is fully transmitted, lowering the latency of the communication.
  • Chunked responses are now also supported.
  • Additional cache control mechanisms have been introduced.
  • Content negotiation, including language, encoding, or type, has been introduced and allows a client and a server to agree on the most adequate content to exchange.
  • Thanks to the Host header, the ability to host different domains at the same IP address now allows server colocation.

HTTP/2 — A protocol for greater performance
The HTTP/2 protocol has several prime differences from the HTTP/1.1 version:

  • It is a binary protocol rather than a text. It can no longer be read and created manually. Despite this hurdle, improved optimization techniques can now be implemented.
  • It is a multiplexed protocol. Parallel requests can be handled over the same connection, removing the order and blocking constraints of the HTTP/1.x protocol.
  • It compresses headers. As these are often similar among a set of requests, this removes duplication and overhead of data transmitted.
  • It allows a server to populate data in a client cache, in advance of it being required, through a mechanism called the server push.

--

--