#http #http3 #evolution #sre #devops #https #aws #azure #gcp
HTTP/1.0
HTTP, or Hypertext Transfer Protocol, is the protocol used for transferring data over the internet. It was first introduced in 1991 as HTTP/0.9 and was designed to transfer only plain text documents. However, it was quickly realized that the internet needed a more robust protocol, which led to the development of HTTP/1.0 in 1996.
HTTP/1.0 is a stateless protocol, which means that every request and response is treated as an independent transaction. This led to several performance issues, such as slow load times and high latency. Additionally, HTTP/1.0 could only transfer one resource at a time, which meant that websites with many images, scripts, and stylesheets had to send multiple requests, leading to even slower load times.
HTTP/1.1
To address the issues with HTTP/1.0, HTTP/1.1 was introduced in 1999. This version introduced several improvements, including persistent connections, pipelining, and chunked transfers.
Persistent connections allowed the client and server to reuse the same TCP connection for multiple requests and responses, which reduced the overhead of opening and closing connections. Pipelining allowed the client to send multiple requests at once, without waiting for each response, which improved latency. Finally, chunked transfers allowed resources to be sent in multiple, smaller parts, which reduced the latency caused by slow connections.
Despite these improvements, HTTP/1.1 still had several issues, including head-of-line blocking and inefficient use of network resources. Additionally, websites continued to become more complex, with larger files and more resources, which put further strain on the protocol.
HTTP/2
To address the issues with HTTP/1.1, HTTP/2 was introduced in 2015. This version introduced several significant improvements, including binary framing, server push, and header compression.
Binary framing replaced the text-based protocol used in HTTP/1.1 with a binary protocol, which reduced the overhead of parsing requests and responses. Server push allowed the server to send resources to the client before the client requested them, which reduced the number of round trips required to load a page. Finally, header compression reduced the size of HTTP headers, which improved network efficiency.
HTTP/2 also addressed head-of-line blocking by allowing the client to request resources in any order, which further improved performance. Additionally, HTTP/2 supported multiplexing, which allowed multiple requests and responses to be sent over the same connection, further improving network efficiency.
HTTP/3
Despite the improvements introduced in HTTP/2, there were still several issues with the protocol, including the reliance on TCP and the complexity of the protocol. To address these issues, HTTP/3 was introduced in 2020.
HTTP/3 replaces TCP with QUIC, which is a UDP-based protocol designed for low-latency, unreliable networks. This allows HTTP/3 to improve performance in situations where packet loss is common, such as wireless networks or congested networks.
Additionally, HTTP/3 uses a new encryption protocol called "0-RTT" to reduce the time required to establish a connection. This further improves performance by reducing the latency caused by connection setup.
Ещё видео!