HTTP… The Protocol of the Web.
If you are a person who takes an interest in computer science topics then you might be aware of the importance of this four-character word. Every time you see this word at the beginning of the URL of any kind of website but have you ever tried to know how it works and how it has evolved throughout the years…? Have you ever tried to get more knowledge about HTTP?
Today in this blog we will discuss a few concepts about HTTP and how it plays an important role between the client and the server in the world of the web.
An Introduction to HTTP?
HTTP stands for Hypertext Transfer Protocol which is basically responsible for communication between web servers and clients. It is defined as the protocol of the web, or we can say it is the set of rules used in the delivery of web pages from servers to the client.
Every time you open up your browser and you visit a web page or you submit a form or you click a button that sends some kind of Ajax request or fetches request, you are using HTTP and you go through some request and response cycle.
HTTP is stateless and every request is completely independent. Each request is a single transaction and when you make one request, visiting a web page or you go to another page after that, or reload the page it doesn’t remember anything about the previous transaction. Programming, Local Storage, Cookies, Sessions are used to create enhanced user experiences.
Generally, you see HTTPS (Hypertext Transfer Protocol Secure) in your web browser which is the same protocol used with the encryption layer for more security purposes. Data is encrypted by something by SSL (Secure Socket Layer) /TLS (Transport Layer Security). So anytime if you’re sending sensitive information, you should always be over HTTPS.
If you have the knowledge about OSI (Open System Interconnection) Specification of the Internetworking/Communications then consider HTTP as an application layer protocol. This layer has no interconnection with the underlying hardware structures or media and it has nothing to do with that. Due to this reason, it is feasible to improve and upgrade the HTTP specification with more bandwidth.
Let’s see how Mozilla defines HTTP…
“HTTP is a client-server protocol: requests are sent by one entity, the user-agent (or a proxy on behalf of it). Most of the time the user-agent is a Web browser, but it can be anything, for example, a robot that crawls the Web to populate and maintain a search engine index.”
In the above definition user agent is the client and that client can be a browser, a program, or anything that sends the request to the server using the HTTP protocol. Once the server receives the request it responds with the delivery of the web page. Communication between the server and the user agent is coordinated by the numerous entities called proxies. Below is the functionality of Proxy…
- Filtering (Hiding adult content and blocking some content based on region)
- Load balancing (Direct requests to vacant servers)
- Authentication (Allow users to communicate with different servers)
- Logging (HTTP logging is common for anomaly detection and etc)
All the above tasks are performed without any trouble in HTTP 1 and HTTP 1.1. Some of the common HTTP methods are given below…
- GET: Retrieves data from the server
- POST: Submit data to the server
- PUT: Update data already on the server.
- DELETE: Deletes data from the server
HTTP 2 was introduced in 2015. HTTP 1 had some limitations with the advancement of network technologies and bandwidth. HTTP 2 came into existence overcoming those limitations. HTTP 2 makes your application faster, simpler, secure, and more efficient. All the changes to version 2 are pretty much under the hood meaning you don’t have to go and change the way your application works. All the core concepts, methods, URIs, status code remain the same as HTTP 1.
- The biggest advantage of HTTP 2 is that it reduces latency by enabling full request and response multiplexing. Multiplexing enables concurrent requests via the same TCP connection and it helps to load resources concurrently.
- To improve the speed of the page and to load the content faster HTTP 2 allows browsers to prioritize the content.
- Minimize protocol overhead via efficient compression of HTTP header fields.
- Cached by the client.
- Reused across different pages.
- Multiplexed alongside other resources.
- Prioritized by the server.
- Declined by the client.
HTTP 3 is the upcoming version of HTTP. YouTube is already using this version in the chrome browser. You can use the plugin to see the HTTP protocol (HTTP/2 and SPDY indicator). HTTP3 uses the same semantics and response code as HTTP 1 and HTTP 2. The major problem with HTTP 2 was head of line blocking, which arises from reliance on TCP. HTTP 3 provides better security and performance.
What’s New in HTTP 3?
HTTP 3 is much simpler because a lot of function has been moved to QUIC layer. One of the main motives of HTTP 3 is to simplify the TCP handshake (it is a 3-way handshake, hi, hi again, ok you got my hi, alike.). HTTP 2 can also be run on the QUIC but QUIC has no guarantee of the order of requests served unlike in TCP. HTTP header compression (HPACK) relies more on the ordering in TCP. Due to this reason, HTTP-2 was unusable on top of QUIC.
QUIC Protocol is used to establish the connection faster. This established connection provides a better connection migration generated between Wifi connections and mobile networks etc. Keep in mind that this connection migration is not something you see between the routers in the same network. It is more complex and sophisticated.
QUIC starts every connection with a TCP slow start setting the congestion window to the initial value. It upgrades the TCP slow start to achieve faster high speed. During this process, QUIC further increases the congestion window by the number of bytes acknowledged when each acknowledgment is processed. This results in the exponential growth of the congestion window.
For gameplay in cases like Stadia and video streaming in UHD and above this is an important upgrade. This may be the reason behind being YoutTube super fast and plays HD from startup without buffering.