http 1.0、1.1、2.0,3.0的区别

700 阅读5分钟

HTTP 1.0:

特点:

1.0的HTTP版本,是一种无状态,无连接的应用层协议。 HTTP1.0规定浏览器和服务器保持短暂的链接。

浏览器每次请求都需要与服务器建立一个TCP连接,服务器处理完成以后立即断开TCP连接(无连接),服务器不跟踪也每个客户单,也不记录过去的请求(无状态)。

这种无状态性可以借助cookie/session机制来做身份认证和状态记录。

存在的问题

  • 无法复用连接,每次发送请求,都需要进行一次TCP连接,而TCP的连接释放过程又是比较费事的。这种无连接的特性会使得网络的利用率变低。
  • 队头阻塞(head of line blocking),由于HTTP1.0规定下一个请求必须在前一个请求响应到达之前才能发送,假设前一个请求响应一直不到达,那么下一个请求就不发送,后面的请求就阻塞了。
  • 不支持断点续传,也就是说,每次都会传送全部的页面和数据

HTTP 1.1

特点:

  • 长连接,HTTP1.1增加Connection字段,对于同一个host,通过设置Keep-Alive保持HTTP连接不断。避免每次客户端与服务器请求都要重复建立释放建立TCP连接。提高了网络的利用率。目前浏览器中对于同一个域名,默认允许同时建立 6 个 TCP 持久连接。
    如果客户端想关闭HTTP连接,可以在请求头中携带Connection:false来告知服务器关闭请求。
  • 提供虚拟主机的支持,在 HTTP/1.0 中,每个域名绑定了一个唯一的 IP 地址,因此一个服务器只能支持一个域名。但是随着虚拟主机技术的发展,需要实现在一台物理主机上绑定多个虚拟主机,每个虚拟主机都有自己的单独的域名,这些单独的域名都公用同一个 IP 地址。因此,HTTP/1.1 的请求头中增加了 Host 字段,用来表示当前的域名地址,这样服务器就可以根据不同的 Host 值做不同的处理。

\

  • 支持断点续传,通过使用请求头中的 Range 来实现。
  • 可以使用管道传输,多个请求可以同时发送,但是服务器还是按照顺序,先回应 A 请求,完成后再回应 B 请求。要是 前面的回应特别慢,后面就会有许多请求排队等着。这称为「队头堵塞」。
  • 客户端 Cookie、安全机制

我们知道 HTTP/1.1 为网络效率做了大量的优化,最核心的有如下三种方式:

增加了持久连接;

浏览器为每个域名最多同时维护 6 个 TCP 持久连接;

使用 CDN 的实现域名分片机制。

HTTP/1.1 的主要问题

HTTP/1.1对带宽的利用率却并不理想,这也是 HTTP/1.1 的一个核心问题。为啥会有这个问题呢?

第一个原因,TCP 的慢启动。

第二个原因,同时开启了多条 TCP 连接,那么这些连接会竞争固定的带宽。

第三个原因,HTTP/1.1 队头阻塞的问题。

因此http2出来了。主要解决上面的问题

HTTP/2 最核心、最重要且最具颠覆性的多路复用机制,怎么实现的?

具体过程:

  1. 首先,浏览器准备好请求数据,包括了请求行、请求头等信息,如果是 POST 方法,那么还要有请求体。这些数据经过二进制分帧层处理之后,会被转换为一个个带有请求 ID 编号的帧,通过协议栈将这些帧发送给服务器。
  2. 服务器接收到所有帧之后,会将所有相同 ID 的帧合并为一条完整的请求信息。
  3. 然后服务器处理该条请求,并将处理的响应行、响应头和响应体分别发送至二进制分帧层。
  4. 同样,二进制分帧层会将这些响应数据转换为一个个带有请求 ID 编号的帧,经过协议栈发送给浏览器。
  5. 浏览器接收到响应帧之后,会根据 ID 编号将帧的数据提交给对应的请求。

HTTP/2 添加了一个二进制分帧层,通过引入二进制分帧层,就实现了 HTTP 的多路复用技术。

因此:HTTP/3 选择了一个折衷的方法——UDP 协议,基于 UDP 实现了类似于 TCP 的多路数据流、传输可靠性等功能,我们把这套功能称为 QUIC 协议。

  1. 实现了类似 TCP 的流量控制、传输可靠性的功能。虽然 UDP 不提供可靠性的传输,但 QUIC 在 UDP 的基础之上增加了一层来保证数据可靠性传输。它提供了数据包重传、拥塞控制以及其他一些 TCP 中存在的特性。
  2. 集成了 TLS 加密功能。目前 QUIC 使用的是 TLS1.3,相较于早期版本 TLS1.3 有更多的优点,其中最重要的一点是减少了握手所花费的 RTT 个数。
  3. 实现了 HTTP/2 中的多路复用功能。和 TCP 不同,QUIC 实现了在同一物理连接上可以有多个独立的逻辑数据流(如下图)。实现了数据流的单独传输,就解决了 TCP 中队头阻塞的问题。