HTTP (Hypertext Transfer Protocol) is a method that allows the transfer of
HTTP functions on the application layer allow data to be sent/received on TCP connections established between the client and server. The current state of HTTP used widely has been through various iterations, which are discussed below:
HTTP/0.9 is known as the "one-line protocol." The first HTTP version was 0.9 and was numbered to differentiate it from the subsequent versions. This version of HTTP was very rudimentary.
It:
Only contained GET methods.
Didn't need the full URL for the path to a requested resource.
Didn't contain headers.
Didn't contain status codes.
In case of an error, an HTML file that included the description of the error would be sent to the client.
The process of receiving a file over HTTP/0.9 looks like the following code:
GET /resourcepage.html
<HTML>This is the requested page.</HTML>
In HTTP/ 1.0, the browsers and servers would add more features individually and gauge which ones would gain traction. This led to various interoperability issues that were eventually resolved in November 1996 with the arrival of a document known as the RFC 1945.
The RFC 1945 gathered the features that had gained traction. The HTTP/1.0 contains the following features:
Versioning information (being HTTP/1.0) within the request message
HTTP headers (these allowed the transfer of metadata)
The Content-Type
header allowed files other than plain HTML (e.g., images) to be exchanged.
Status codes
POST and HEAD methods
The process of receiving a file over HTTP/1.0 is as follows:
GET /resourcepage.html HTTP/1.0User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
200 OKDate: Tue, 09 Aug 2022 02:29:50 GMTServer: CERN/3.0 libwww/2.17Content-Type: text/html<HTML>This is the requested page.</HTML>
A few months after HTTP/1.0 was introduced, HTTP/1.1 was published in January 1997 in the RFC 2068. This was the first standardized version of HTTP.
Several extensions were added to HTTP/1.0 in HTTP/1.1, some of which are:
Lower latency due to
Additional cache control mechanisms
Host header, which provided the ability for the client and server to agree on which content to exchange
Support for
PUT, PATCH, DELETE, CONNECT, OPTIONS, TRACE methods
Approximately 18 years after HTTP/1.1 was introduced, HTTP/2 was unveiled in 2015 in the RFC 7540.
This version implemented numerous features to improve the protocol's connections and data exchange, thereby increasing its performance and ability to handle increasingly complex web pages. Some of these features include:
Shifting from plain text protocols (used in previous HTTP versions) to a binary protocol
Automatic compression of request and response messages.
Assigning priority within a group of request messages
The largest feature of HTTP/2 is that it can be adopted without making changes to websites and applications. This is what's enabled nearly half of all websites to use HTTP/2.
HTTP/3 is an experimental protocol that uses Quick UDP Internet Connection (QUIC) instead of the current combination of TCP and TLS. While only published in RFC 9114 in June 2022, this protocol is supported by 75% of web browsers.
Free Resources