Skip to content

HTTP1.0/1.1/2.0/3.0的区别

专题简介

  • HTTP1.0
  • HTTP1.1
  • HTTP2.0
  • HTTP3.0

HTTP/1.0

http1.0是1996年发行的最早版本,最初设计用于传输静态 HTML 页面。它使用短连接,即每次请求都需要单独建立一个 TCP 连接,请求完成后立即关闭连接。这种方式效率低下且延迟高。

缺点

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

总结

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

HTTP/1.1

http1.1是1999年版本,比1.0有较大的性能提升(比如,缓存处理,长连接,带宽优化),目前市面上最广泛的就是1.1。

HTTP/1.1主要改进

  • 长连接:长连接是指允许多个请求和响应复用同一个 TCP 连接,减少了连接建立的开销。
  • 实现了管线化(Pipeline)技术:管线化是指允许在一个TCP连接中同时发送多个请求,提高了请求的并发性。
  • HTTP/1.1 还引入了一些新的请求头和响应状态码。
  • 引入了新的缓存处理机制,可以减少服务器的压力,并提高数据的传输速率。使用 Cache-Control 和 ETag 等头部来控制缓存机制,并对缓存进行更精细的控制。
  • 引入了更严格的身份验证和密码保护方案,可以对资源进行更好的保护,防止资源被非法访问。
  • 支持多种编码格式,并允许服务器压缩数据并在客户端解压缩,从而减少数据传输的数量和时间。

HTTP/1.1存在的缺点

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

HTTP/2

HTTP/2 是在 SPDY 协议基础上发展而来的,于2015年发布。HTTP2.0在相比之前版本,性能上有很大的提升

HTTP/2主要改进有哪些?

  • 多路复用
  • 二进制分帧
  • 头部压缩
  • 服务器推送:HTTP 2.0 允许服务器提前向客户端推送数据,客户端在没有明确请求时就会收到来自服务器的资源,加快了网页的加载速度。

什么是链路复用?

客户端和服务器建立连接的时候这个空档期可以处理其他的请求和通信。好处就是不需要重复去建立连接了,在有限的连接里面发送更多的请求和响应更多的数据

什么是二进制分帧?

将消息分为更小的帧,每个帧都包含帧头信息,这些帧进行无序传输而且并行处理,帧之间互不影响,同时用二进制编码降低了出错率。

二进制分帧优势?

http2启用二进制帧的方式进行传输,相比http1传输数据是通过字符串传输,不好分割,不好处理,解析慢。

什么是头部压缩?

在 HTTP 2.0 中,客户端和服务器可以维护一个静态表和动态表,用来存储之前发送的 HTTP 头部。这些头部可以被压缩,从而在网络上传输更快,采用专门的HPACK压缩算法

  • 索引表
  • 霍夫曼编码

http2的缺点

  • 需要新的服务器和客户端支持:对于老版本的浏览器和服务器,需要额外的配置和插件才能兼容。

  • 使用开销较大:由于首部压缩使用的算法复杂,需要更高的计算机资源。

  • 不支持无状态连接:HTTP 2.0 通过多路复用来提升性能,但这也带来了一个问题,即相比 HTTP 1.x,HTTP 2.0 的连接更为耗费资源,无法像 HTTP 1.x 一样保持为无状态连接。

  • Head-of-line blocking:在 HTTP 2.0 中,多个请求共享一条TCP连接,但在 HTTP 2.0 中,响应需要按照请求的顺序返回,对于某个没有返回的请求,会阻塞当前连接的其他请求,这种现象称作 Head-of-line blocking。

HTTP/3

HTTP 3.0 于 2022 年 6 月 6 日正式发布。 HTTP/3 是基于 QUIC 协议构建的,QUIC 是一个可靠性和安全性更好的传输协议,使用 UDP 协议传输数据。HTTP/3 相较于 HTTP/2 在传输层协议上有巨大的改变,提供更好的流控制和拥塞控制。HTTP/3 通过使用 UDP 协议来减少传输延迟,并支持快速握手,提供更好的性能和安全性。

协议上的改变

HTTP/2和1是采用的TCP协议建立连接的,HTTP/3是采用UDP协议

什么是UDP协议

QUIC 的小写是 quic,谐音 quick,意思就是快。它是 Google 提出来的一个基于 UDP 的传输协议,所以 QUIC 又被叫做快速 UDP 互联网连接。

UDP协议优势

  • 使用 UDP 协议,不需要三次连接进行握手,而且也会缩短 TLS 建立连接的时间,所以他的最大优势就是快。
  • 解决了队头阻塞问题。
  • 实现动态可插拔,在应用层实现了拥塞控制算法,可以随时切换。
  • 报文头和报文体分别进行认证和加密处理,保障安全性。
  • 连接能够平滑迁移

连接平滑迁移指的是,你的手机或者移动设备在 4G 信号下和 WiFi 等网络情况下切换,不会断线重连,用户甚至无任何感知,能够直接实现平滑的信号切换。

总结

  • HTTP/1.0 是最早的版本,使用短连接,效率低下且延迟高。
  • HTTP/1.1 引入持久连接和管线化,提高了性能和并发性。
  • HTTP/2 引入二进制分帧层和多路复用,进一步提升性能和效率。
  • HTTP/3 基于 QUIC 协议,提供更好的流控制和拥塞控制,通过 UDP 协议传输数据,提供更好的性能和安全性。

参考资料

参考资料

参考资料