http不同版本之间的区别

前言:http当前有哪些版本

HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体文档的应用层协议,当前主要使用的版本有 HTTP 1.0HTTP 1.1HTTP 2

一、HTTP 1.0

这是最早的版本,采用的是短连接,它有很多的缺点。

  • 每次请求都要与服务器建立一次TCP连接,请求结束后立即断开连接。
  • 不支持请求流水线,每次只能发送一个请求。
  • 数据传输没有压缩,可能会造成网络拥堵。
  • 报文头部信息过大,HTTP 1.0 的头部格式为 ASCII 码文本格式,每次请求时都需要传输相应的头部信息。哪怕存在重复的头部信息,这些信息也会被重复传输,浪费了带宽和时间。

总结:无法高效的处理长链接,流水线化请求;请求头信息过大,容易导致网络延迟,浪费资源。

二、HTTP 1.1

这个版本针对 1.0 版本的缺点做了一些优化,主要有以下几个方面。

  • 支持持久连接,即在客户端和服务器之间的 TCP 连接上可以发送多个请求和响应,不用每次请求都重新建立连接。
  • 支持流水线化,在一个 TCP 连接上可以同时发送多个请求,不需要等待响应返回。这样可以减少延迟,提高网络吞吐量。
  • 引入了新的缓存处理机制,可以减少服务器的压力,并提高数据的传输速率。使用 Cache-ControlETag 等头部来控制缓存机制,并对缓存进行更精细的控制。
  • 引入了更严格的身份验证和密码保护方案,可以对资源进行更好的保护,防止资源被非法访问。
  • 支持多种编码格式,并允许服务器压缩数据并在客户端解压缩,从而减少数据传输的数量和时间。

1.1 版本针对 1.0 版本做了一些优化,但仍然存在很多的问题。主要有以下几点。

  • HTTP 1.1 采用的是队列式的方式进行请求响应,同一时间内只能处理一个请求,不能并发请求,这可能会导致堵塞,从而导致剩余请求无法被传送,影响速度和性能。
  • 没有减少头部信息大小,依然存在 1.0 版本的问题。
  • 依赖于 TCP 连接,可能会有拥塞控制、包延迟等拥塞控制、包延迟等问题。
  • HTTP 1.1 下的 cookiesSSL 等安全机制并不完美,会面临信息泄露、身份伪造和跨站点脚本等问题,从而威胁到网络安全。

三、HTTP 2

这个版本是 2015 年发布的,也是现在应用最广泛的版本。它相对于 1.1 版本,进一步进行了优化。

  • 多路复用:HTTP 2.0 可以同时传输多个请求和响应,而不需要像 HTTP 1.x 版本那样需要建立多条 TCP 连接。
  • 二进制分帧:将消息分为更小的帧,每个帧都包含帧头信息,这些帧进行无序传输而且并行处理,帧之间互不影响,同时用二进制编码降低了出错率。
  • 首部压缩:在 HTTP 2.0 中,客户端和服务器可以维护一个静态表和动态表,用来存储之前发送的 HTTP 首部。这些首部可以被压缩,从而在网络上传输更快。
  • 服务器推送:HTTP 2.0 允许服务器提前向客户端推送数据,客户端在没有明确请求时就会收到来自服务器的资源,加快了网页的加载速度。

HTTP 2 已经足够优秀,但依然存在一些不足,不过这些不足只能说是以后的升级优化方向,并不是致命缺点。

  • 需要新的服务器和客户端支持:对于老版本的浏览器和服务器,需要额外的配置和插件才能兼容。
  • 使用开销较大:由于首部压缩使用的算法复杂,需要更高的计算机资源。
  • 不支持无状态连接:HTTP 2.0 通过多路复用来提升性能,但这也带来了一个问题,即相比 HTTP 1.xHTTP 2.0 的连接更为耗费资源,无法像 HTTP 1.x 一样保持为无状态连接。
  • Head-of-line blocking:在 HTTP 2.0 中,多个请求共享一条TCP连接,但在 HTTP 2.0 中,响应需要按照请求的顺序返回,对于某个没有返回的请求,会阻塞当前连接的其他请求,这种现象称作 Head-of-line blocking

END

猜你喜欢

转载自blog.csdn.net/m0_53808238/article/details/130834570
今日推荐