http1.0、http1.1、http2、http3 的区别详解

  1. HTTP/1.0:

    • 使用短连接(non-persistent connections):每个请求/响应都需要建立一个新的TCP连接。
    • 缓存控制使用 expires
    • 支持的方法有 get、head、post 【简单请求的方法】
      • 什么是简单请求?请看这篇文章
  2. HTTP/1.1:

    • 默认使用持久连接(persistent connections):同一连接可以被多个请求重复使用,减少了连接建立和断开的开销。
    • 有队头阻塞问题
    • 缓存控制使用 cache-control
    • 引入Host头部字段,使得一个物理服务器可以承载多个虚拟主机。
    • 新增了请求方法 put、delete、options
    • 有队头阻塞问题,所以浏览器会限制同一个连接的同时请求数,Chrome是限制6个
  3. HTTP/2:

    • 二进制协议:头部信息和数据都以二进制格式传输,减少了传输时的开销。
    • 多路复用(multiplexing):在一个连接上同时发送多个请求和响应,提高了并发性能。解决了队头阻塞问题
    • 头部压缩:使用HPACK算法对头部信息进行压缩,减少了传输的数据量。
    • 服务器推送(server push):服务器可以预测客户端需要的资源并在响应中主动推送。
    • 因为解决了队头阻塞问题,所以浏览器的同时请求数限制几乎没有
  4. HTTP/3:

    • 使用QUIC(Quick UDP Internet Connections)协议,使用UDP,而不是TCP协议,以减少连接建立的延迟。
    • 多路复用(multiplexing)和头部压缩等特性继承自HTTP/2。
    • 支持快速连接迁移:在网络切换时,可以更快地迁移连接。
    • 具有更好的流量控制和错误恢复机制。
    • http3 已经成为正式的标准,有些服务商已经可以使用了。

首先说几个重点

(1)我们最常用的http请求是 http1.1 和http2

(2)如何使用http2 或者http3,这个不是我们前端的任务,是服务端的配置任务,比如你用的阿里云服务器,那就需要去阿里云那边配置,如果你用 nginx,那也需要使用nginx配置

(3)chrome 浏览器的最大连接数为6是针对http1的,因为http1有队头阻塞问题。

你可能感兴趣的:(http,计算机网络)