In this article, we will introduce the main key features of HTTP 1.0, HTTP 1.1, HTTP 2.0, and HTTP 3.0.

HTTP1.0

HTTP1.0 was published in 1996 and already obsoleted.

In HTTP1.0, each request needs to make TCP 3-way-handshake connection, which means will high cost for time-consuming and low efficiency.

Some developers have deployed a `short of keep-alive mechanism to implement the keep TCP connection to increase performance.

HTTP1.1

HTTP1.1 was published in 1997, and added the following features:

  • Persistent connections: keep-alive-mechan

In keep-alive mode, after the first TCP 3-way-handshake connection has been sent, the following request will not need re-negotiated the handshake, and this persistent connection will make the connection to be faster.

  • HTTP pipelining

HTTP Pipeline can allow multiple requests can send by one TCP connection, but each pipeline is dependent on the others, which means that will cause HOL blocking(Head of line blocking) when on package failed.

Fig from Wikipedia

  • HTTP Host

In HTTP1.1, the Host is required include in the HEADER.

  • HTTP methods

Http1.1 add 5 new methods: PUT, DELETE, CONNECT, OPTIONS, and TRACE.

  • Range

If we need a multi-threads download process, the range attribute can support signify download range for a big file. HTTP1.1 start support range transfer, client can send part of segment and signify segment range or multiple part byterange of Content-Range: bytes {unit first byte pos} - {last byte pos}/{entity length} and Content-Length:{entity length}. When the range is fulfilled, the server will send back a 206 Partial Content. If the condition is not fulfilled, the server will send back 200 status. If the range is out of bounds, the server will send back 416 status for Requested Range Not Satisfiable.

HTTP2.0

HTTP2.0 was published in May 2015.

HTTP2.0 was keep the HTTP1.1 features, and bring more new features:

  • STREAMS Multiplexing

The HTTP2.0 has extended the persistent connection by multiplexing, this replaced the HTTP1.1 pipelining mechanism.

The streams multiplexing can be sent multiple streams of requests on a single TCP/IP connection, and unlike HTTP1.1 the HTTP2.0 each stream requests are independent of each other at the application layer(Layer 7).

But in multiplexing, the issue of HOL blocking still exists in the transport layer (Layer 4) with TCP.

  • Encoder

HTTP2.0 can cache header files to reduce the transfer size.

HTTP3.0

HTTP3.0 was keep the HTTP1.1, HTTP2.0 features.

In June 2022, part of the HTTP3.0 RFCs was published, and bring new protocol called QUIC.

  • QUIC

The HTTP3.0 QUIC is based on UDP, that was replaced the HTTP1.0, HTTP1.1, and HTTP2.0 TCP/IP mechanism.

(source: wiki)

This QUIC mechanism was no `head-of-line blocking, and it was designed for mobile.

In a mobile use case, switching the network to another will cause sluggish, and QUIC can use the connection ID to allow connection to be re-established simply by resenting the single packet, this will benefit the IP addresses switch reliably.

In a TCP + TLS process, the web client needs more RTT(Round Trip Time) to establish a secure connection with the server before sending a request. In QUIC, can directly send a request to the server to initialize the handshake and exchange key.

(source)