Five-minute technical talk | HTTP evolution history

Five-minute technical talk | HTTP evolution history

Part 01

Protocol Introduction

HTTP is the most popular network protocol today. It can be seen everywhere in daily life. Whether using mobile phones, computers or other terminal devices, Windows, IOS or Android, browsers or apps, the network communication behind them is inseparable from it. HTTP adopts the architecture design of request and response between client and server. It is a communication protocol that can obtain network resources such as HTML and is the basis for data exchange on the Web.

Part 02

Development History

Since the HTTP protocol was proposed by British engineer and computer scientist Tim Berners-Lee in 1989, it has evolved over 30 years and has formed five major versions, as shown in the following figure:

2.1 HTTP/0.9

As the original version, it laid the foundation for the core content of the protocol, such as determining the architecture of client-server interaction, domain name: port to determine the target address, and carriage return and line feed as basic separators.

Version 0.9 is only a small subset of the later versions in terms of functionality. It does not support Headers and only supports the GET method. The server can only respond to strings in HTML format and cannot respond to other formats. It is a typical stateless service, and each access is processed independently. After the processing is completed, the TCP connection will be closed.

2.2 HTTP/1.0

Version 1.0 has made a lot of expansions on the basis of version 0.9, adding POST and HEAD methods, introducing request headers and return codes, and supporting multiple character sets and multi-line requests. The transmission is not limited to text capabilities, such as images, videos, and binary files. It can be said that it is small but complete, and it is the first protocol version with wide practical application value.

Version 1.0 has the same defects as version 0.9. Since both are stateless connections, the established TCP connection cannot be reused, and the next request can only be sent after the response to the previous request arrives, which easily causes head-of-line blocking and affects performance.

2.3 HTTP/1.1

Version 1.1 has expanded its functions and optimized its transmission performance based on version 1.0.

Functions include newly added PUT, PATCH, OPTIONS, and DELETE methods, enriched response status codes, introduced range breakpoint resumption, added TLS support, and more connection model support, such as short connection, long connection, websocket model, etc.; in addition, the Host request header is introduced to specify the server domain name, so that multiple domain name servers can be deployed on a host, which lays a solid foundation for the rise of virtualization technology.

In terms of performance, long connections are introduced and the request header Connection: keep-alive is set to keep the connection from being disconnected, so that the connection can be reused by multiple requests. However, each request is executed serially, and there is still a head-of-line blocking problem. In order to optimize this problem, pipeline technology is introduced on the basis of long connections, which can continue to send subsequent requests without waiting for the response of the previous request, further improving the transmission efficiency. However, the server response is returned strictly in order, and the head-of-line blocking problem is still not solved.

2.4 HTTP/2.0

Version 2.0 is more of an innovation than an optimization of version 1.x. The main adjustments include: binary framing, multiplexing, header compression, and server push.

- Binarization framing

1.x is a text protocol, but 2.0 uses binary frames as the basic unit, divides all transmitted information into messages and frames, and uses binary format encoding. One frame contains data and identifiers, making network transmission efficient and flexible.

- Multiplexing

In 1.x, there are problems with the cost and efficiency of establishing multiple connections. Version 2.0 uses identifiers in binary frames to distinguish them, so that multiple requests can be reused concurrently on a TCP connection.

- Header compression

Version 1.1 carries the same header every time a request is sent. Version 2.0 uses the HPACK algorithm to compress the header and incrementally updates the header information, effectively reducing the amount of data and improving transmission efficiency.

- Server push

Different from the question-and-answer interaction mode adopted in version 1.x, version 2.0 allows the server to actively send resources to the client, which can effectively reduce additional delay time.

The transmission diagram of HTTP/2.0 is as follows:

Although version 2.0 significantly improves the performance of version 1.1, the TCP-based implementation leaves three problems:

1. The head-of-line blocking caused by the ordered byte stream greatly reduces the multiplexing capability of version 2.0;

2. TCP and TLS have handshake delays, so the connection establishment time can be reduced by 1 time.

3. Determine a connection based on the TCP quaternary. This design, which was born in the wired network, is not suitable for mobile wireless networks. This means that frequent changes in IP addresses will lead to repeated handshakes of TCP connections and TLS sessions, which is costly.

2.5 HTTP/3.0

With the development of 5G networks and Internet technologies, more than half of Internet traffic is now transmitted wirelessly. This trend has brought challenges to the overall web browsing experience. The key point is to solve the head-of-line blocking problem in TCP when wireless coverage is insufficient, and version 3.0 came into being.

HTTP/3.0, also known as HTTP Over QUIC, is the latest generation of HTTP protocol. It abandons the TCP protocol and uses the QUIC protocol based on the UDP protocol. The core idea of ​​the QUIC protocol is to transfer the functions of the TCP protocol implemented in the kernel, such as reliable transmission, flow control, and congestion control, to the user state to implement, thus avoiding the natural defects of the TCP mechanism. The difference between the HTTP/3.0 and HTTP/2.0 architectures is shown in the figure below:

However, many network devices are not friendly to UDP data packet policies and intercept them, resulting in a decrease in successful connection rate. In addition, the correct and secure configuration of HTTP/3 and QUIC is extremely complex, and there is still a long way to go to turn it into a simple and easy-to-use commercial service.

Part 03

Review Summary

HTTP has experienced more than 30 years of evolution and has achieved leapfrog development. From initially being able to transmit hypertext files serially to being able to transmit multimedia files in parallel today, it has made great improvements in functionality, performance, and security. Finally, let's briefly summarize several milestone versions:

  • HTTP/0.9 establishes an interactive architecture and implements basic request responses.
  • HTTP/1.0 adds HTTP headers, enriches the types of transmitted resources, and lays the foundation for the development of the Internet.
  • HTTP/1.1 adds persistent connections and pipelining, which improves HTTP transmission efficiency.
  • HTTP/2.0 uses a binary transmission format and maximizes transmission efficiency on the HTTP + TCP architecture through HTTP multiplexing, header compression, and server-side push.
  • HTTP/3.0 replaces the transport layer with QUIC, and further improves HTTP transmission efficiency through improved congestion control, flow control, 0-RTT connection establishment, transport layer multiplexing, connection migration and other features.

<<:  Ethernet vs. WiFi: A Comparison of Internet Connection Technologies

>>:  Wi-Fi7 is here, should the access method of smart home appliances be unified?

Recommend

Considerations and conclusions of Iperf network throughput/bandwidth testing

Iperf test: Use udp to set the bandwidth to 2M, 5...

my country has built the world's largest 4G network

[[181278]] On January 6, the Ministry of Science ...

FCC win clears way for massive Wi-Fi 6E upgrade

A ruling [PDF] made public on Tuesday by the U.S....

China Mobile added 16.65 million 5G package users in May, totaling 222 million

[[406533]] China Mobile recently announced its op...

Summary information: Casbay/98 Cloud/Asia Cloud/Journey Cloud/PUAEX

I will continue to share some of the merchant sub...

In the 5G era, what is the United States worried about?

Today I want to talk to you about a technical top...

Verizon is embarrassed: 5G speed is slower than 4G

According to foreign media, PCMag recently tested...

5G innovation promotes green and low-carbon development

Energy conservation is the key support for achiev...

Are you still worried about network operations? SD-WAN is here to save you!

Software-defined WAN or SD-WAN is a great example...

5G, why not completely jointly build and share wireless access networks?

The key to 5G is to provide diversified services ...