http1.0、http1.1、http2.0、http3.0的区别?
1. HTTP 1.0:
- 非持久连接:每个请求/响应都需要建立一个新的连接。每次请求都要进行三次握手和关闭连接的过程。
- 无法发送多个请求:在发送一个请求后,必须等待响应返回后才能发送下一个请求。
- 不支持请求/响应的头部压缩:每个请求/响应的头部信息都需要完整地发送。
- 不支持管道化:客户端无法同时发送多个请求,必须等待前一个请求的响应后才能发送下一个请求。
2. HTTP 1.1:
- 持久连接:在一个连接上可以发送多个请求/响应,减少了连接建立和关闭的开销。
- 支持管道化:客户端可以同时发送多个请求,无需等待前一个请求的响应。
- 引入了请求/响应头部的压缩(chunked transfer encoding):可以压缩请求/响应的头部信息,减少了数据传输的大小。
- 引入了更多的缓存机制:包括强制缓存、协商缓存等,提高了缓存的效率。
3. HTTP 2:
- 二进制分帧:将数据分割为更小的帧,通过多路复用在同一个连接上并行发送和接收多个帧,提高了传输的效率。
- 头部压缩:使用HPACK算法对请求/响应的头部进行压缩,减少了数据传输的大小。
- 服务器推送(Server Push):服务器可以主动向客户端推送资源,减少了客户端发起请求的次数。
- 优先级和依赖:可以指定请求的优先级和依赖关系,优化资源的加载顺序。
4. HTTP 3:
- 使用QUIC作为传输协议:HTTP 3基于QUIC(Quick UDP Internet Connections)协议,取代了TCP作为传输层协议。
- 改进的拥塞控制:HTTP 3使用了更先进的拥塞控制算法,提高了网络的稳定性和性能。
- 减少握手延迟:QUIC协议通过0-RTT(零往返时间)握手和快速握手恢复,减少了握手的延迟。
- 抗丢包能力:QUIC协议具有更好的丢包恢复能力,可以更快地恢复丢失的数据包。
总体而言,HTTP 1.0到HTTP 1.1的改进主要集中在持久连接、管道化和头部压缩等方面,提高了性能和效率。HTTP 2引入了二进制分帧、头部压缩和服务器推送等功能,进一步提升了性能和并行传输的能力。而HTTP 3则使用了QUIC协议,改善了传输的可靠性和拥塞控制,减少了握手延迟,提升了性能和用户体验。