Evolution of HTTP

  • Amit Shekhar
    Amit Shekhar
    Published on
Evolution of HTTP

I am Amit Shekhar, I have taught and mentored many developers, and their efforts landed them high-paying tech jobs, helped many tech companies in solving their unique problems, and created many open-source libraries being used by top companies. I am passionate about sharing knowledge through open-source, blogs, and videos.

Join my program and get high paying tech job: amitshekhar.me

Before we start, I would like to mention that, I have released a video playlist to help you crack the Android Interview: Check out Android Interview Questions and Answers.

In this blog, we will learn about the evolution of HTTP.

HTTP has seen the following version in its evolution.

  • HTTP 1.0
  • HTTP 1.1
  • HTTP 2.0
  • HTTP 3.0

Each version has some problems, and in order to get rid of those problems, it has to update itself. That's why HTTP kept on evolving like any other technology.

So, we will discuss each of the versions of HTTP, the problem with that version, and how it got solved in the updated version.

Let's start with HTTP 1.0

HTTP 1.0

This was the first version of HTTP. It has a problem.

Problem: Each request to the same server needed a new TCP connection.

We needed a solution for that, and HTTP 1.1 was introduced to solve this problem.

HTTP 1.1

It solves the HTTP 1.0 problem. But it has another problem.

Problem: HOL blocking issue. HOL(head-of-line) blocking issue - new request had to wait for the earlier request to complete.

HOL blocking issue at two layers:

  • Application
  • Transport(TCP)

Again, we needed a solution for that, and then HTTP 2.0 was released to solve this problem.

HTTP 2.0

It solves the HTTP 1.1 problem of the HOL issue at the application layer using request multiplexing. But the HOL blocking issue at TCP was the problem.

Problem: HOL blocking issue at TCP.

And once again, we need a solution for that, and with the release of HTTP 3.0, this problem got solved.

HTTP 3.0

It solves the HOL blocking issue at TCP. It uses QUIC(Quick UDP Internet Connections) which is based on UDP.

This is how HTTP has evolved from HTTP 1.0 to HTTP 1.1 to HTTP 2.0 to HTTP 3.0.

Master Kotlin Coroutines from here: Mastering Kotlin Coroutines

That's it for now.


Amit Shekhar

You can connect with me on:

Read all of my high-quality blogs here.