The document provides an overview of the evolution of HTTP from its early versions to the current HTTP/2 and upcoming HTTP/3. It details the key developments including the invention of the world wide web in 1990 using HTTP/0.9, the introduction of request headers and status codes in HTTP/1.0, standardization and performance improvements in HTTP/1.1, enhanced performance of HTTP/2 using binary format and header compression, and plans for HTTP/3 to further reduce latency using QUIC. The document serves as a high-level guide to the changes and capabilities introduced in each major version of HTTP over the past few decades.
2. What is HTTP?
HTTP stands for HyperText Transfer Protocol.
● It’s the underlying protocol used by the World Wide Web.
● This protocol defines commands and services used for transmitting data.
● HTTP uses client-server model for requesting and response for a service.
3. Invention of the World Wide Web
Tim Berners-Lee and his team implemented WWW over existing TCP/IP protocol
in 1990.It was consisted of 4 building blocks -
1. A textual form to represent hypertext document (HTML)
2. A simple protocol to exchange these documents (HTTP)
3. A client to display the documents (The first browser called WorldWideWeb)
4. A server to give access to the documents (early version of httpd)
4. Spread of World Wide Web
The four building blocks were implemented by 1990 and the first servers were
already running outside of CERN (Conseil Européen pour la Recherche Nucléaire)
by early 1991. On August 6th 1991, Tim Berners-Lee’s post on the public
alt.hypertext newsgroup is now considered as the official start of the World Wide
Web as a public project.
5. HTTP Versions
There are four HTTP version released so far! These releases are listed below -
1. HTTP/0.9 - The one-line protocol
2. HTTP/1.0 - Building extensibility
3. HTTP/1.1 - The standardized protocol
4. HTTP/2 - A protocol for greater performance
7. HTTP/0.9 - The one-line protocol
GET /mypage.html
<HTML>
A very simple page.
</HTML>
Figure: client request
Figure: server response
8. HTTP/0.9 - The one-line protocol (continued)
Characteristics of HTTP/0.9 -
1. Only supported HTTP method was GET.
2. HTML was the only supported type for transmission.
3. There were no HTTP header or status code.
4. Problem description was sent back in a HTML file.
9. HTTP/1.0 - Building extensibility
GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT Server:
CERN/3.0 libwww/2.17 Content-Type: text/html
<HTML>
A page with an image
<IMG SRC="/myimage.gif">
</HTML>
GET /myimage.gif HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
200 OK
Date: Tue, 15 Nov 1994 08:12:32 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/gif
(image content)
Figure: User request/response Figure: Subsequent request/response
10. HTTP/1.0 - Building extensibility (continued)
Characteristics of HTTP/1.0 is listed below -
1. Notion of HTTP headers has been introduced for both request and response
2. HTTP version information is sent with each request
3. A status code is sent at the beginning of the response.
4. New documents can be transmitted(thanks to Content-Type header).
12. HTTP/1.1 – The standardized protocol (continued)
GET /static/img/header-background.png HTTP/1.1
Host: developer.cdn.mozilla.net
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0)
Gecko/20100101 Firefox/50.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br Referer:https://developer.mozilla.org/en-
US/docs/Glossary/Simple_header
200 OK
Age: 9578461
Cache-Control: public, max-age=315360000
Connection: keep-alive
Content-Length: 3077
Content-Type: image/png
Date: Thu, 31 Mar 2016 13:34:46 GMT
Last-Modified: Wed, 21 Oct 2015 18:27:50 GMT
Server: Apache
(image content of 3077 bytes)
Figure: Subsequent user request Figure: Server response
13. HTTP/1.1 – The standardized protocol (continued)
Characteristics of HTTP/1.1 is listed below -
1. HTTP/1.1 is the first standardized version of HTTP.
2. A connection can be reused for multiple requests and responses.
3. Pipelining has been added to reduce the latency for communication.
4. Chunked responses are supported now!
5. Additional cache control mechanisms have been implemented!
6. Content negotiation has been introduced .
7. Virtual hosting was made possible with the help of Host header where a
single IP could be used for multiple servers.
14. More than 15 years of Extensions
HTTP was very successful because of its extensibility. Creating new headers and
methods is easy.
1. Using HTTP for secure transmissions
2. Using HTTP for complex applications
3. Relaxing the security-model of the Web
15. HTTP/2 – A protocol for greater performance
HTTP/2 derived from the experimental SPDY protocol.Characteristics of HTTP/2
is given below -
1. It is a binary protocol rather than text.
2. It is a multiplexed protocol.
3. It compresses headers.
4. It allows a server to populate data in a client cache.
16. Upcoming HTTP/3
QUIC - stands for Quick UDP Internet Connections.
1. Improves connection oriented Web applications.
2. Reduces connection and transport latency, bandwidth estimation to avoid
congestion.
17. References
Here is the list of the reference sites that I have visited for this presentation -
1. https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP
2. https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
3. https://en.wikipedia.org/wiki/HTTP/2
4. https://en.wikipedia.org/wiki/HTTP/3
5. https://en.wikipedia.org/wiki/QUIC