HTTP version history

Kashish Yadav
3 min readNov 5, 2020

The hypertext transfer protocol or HTTP is an application protocol that has always been the standard for all communications on the World Wide Web since its conception. It allows for fetching of resources (such as HTML documents) over the internet. Simply put, every time we enter an URL in our browser (client), a HTTP request is sent to the server and it is then returned with say, an image on the web page of the URL we’re trying to hit, an index.html file, etc. The first ever version of HTTP that was released was HTTP/0.9 by Tim Berners-Lee.

This version of HTTP that was developed had no version number initially, and was numbered later only to differentiate it from other versions that were introduced later. HTTP/0.9 was 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/0.9 could only transmit HTML files and no other type of documents! Moreover, there were no status or error codes incase a problem arose. The first version of HTTP was hence, rather short lived.

There are 3 main versions of HTTP- HTTP/1.0, HTTP/1.1 and HTTP/2.0. The first ever version — HTTP/1.0 created a new HTTP connection every time a request was made. Say we travel back in time and we’re trying to get to a web page of a URL www.example.com, and there are some texts and images on the web page that need to be loaded. So our HTTP request would be opened and a GET method would be used to access index.html file of the URL. The request then closes and a new request is made to “GET” an image on the web page. This used to take way too long and therefore resulted in a very high latency (time required for data packets to be completely processed). Not to mention the buffer time was significantly high back when HTTP/1.0 was used.

Then came along version HTTP/1.1. This version uses a “Keep alive” header. Which means that it doesn’t require a new HTTP connection with every request thereby saving the user’s precious time. Here’s how it works(in its most simplest sense)— It opens one HTTP connection for all requests and processes them. The HTTP connection closes only when all the requests are processed. This results in lower latency. It introduced a concept known as “Pipelining”. Pipelining allows to send a second request before the answer for the first one is fully transmitted, lowering the latency of the communication. It is still in use by most of the websites around the world though things are rapidly changing.

The latest version of HTTP that we use today is HTTP/2.0. It is a significantly advanced protocol version than any of its predecessors. It makes use of HPACK — which is a header compression algorithm supported by HTTP/2.0, which not only lowers latency but also makes it more secure. Another key feature of HTTP/2.0 that sets it apart is “Multiplexing”. Multiplexing simply means that several requests at parallel are made through single HTTP connection. Your browser can send multiple requests and receive multiple responses “bundled” into a single HTTP connection. It compresses headers. As these are often similar among a set of requests, this removes duplication and overhead of data transmitted. Moreover, it allows a server to populate data in a client cache, in advance of it being required, through a mechanism called the server push. Server push, for the most part, is a performance technique that can be helpful in loading resources preemptively.

Side note — this article will be updated in future. Thanks for reading! :)

--

--