HTTP/1, HTTP/2, HTTP/3 解决了什么问题?

网络 网络管理
HTTP 3.0 第一稿于 2020 年发布。它是 HTTP 2.0 的后续版本。它使用 QUIC 代替 TCP 作为底层传输协议,从而消除了传输层中的 HOL 阻塞。

每一代 HTTP 解决了什么问题?下图说明了主要特征。

图片图片

HTTP/1

HTTP 1.0 于 1996 年定型并形成完整文档。对同一服务器的每个请求都需要单独的 TCP 连接。

HTTP 1.1 于 1997 年发布。TCP 连接可以保持开放以便重复使用(持久连接),但这并不能解决 HOL(Head of Line)阻塞问题。

HOL 阻塞 - 当浏览器允许的并行请求数用完时,后续请求需要等待前一个请求完成。

HTTP/2

HTTP 2.0 于 2015 年发布。它通过请求复用解决了 HOL 问题,消除了应用层的 HOL 阻塞,但传输(TCP)层仍存在 HOL。

如图所示,HTTP 2.0 引入了 HTTP “流”的概念:这是一种抽象概念,允许在同一 TCP 连接上复用不同的 HTTP 交换。每个流无需按顺序发送。

应用场景:

  • 大型网站:HTTP/2 的多路复用特性允许多个请求共享一个连接,避免了 HTTP/1.1 中的队头阻塞问题。这对于需要加载大量资源的复杂网页(如图片、脚本、样式表等)非常适合。
  • CDN:HTTP/2 的头部压缩和二进制格式能够显著减少数据量,提升数据传输效率。更高效的连接复用让 CDN 在传输大型文件或流媒体内容时有更好的性能。
  • 移动应用:HTTP/2 可以显著减少移动设备上的网络延迟,适合需要快速响应的移动应用和 API 请求。

HTTP/3

HTTP 3.0 第一稿于 2020 年发布。它是 HTTP 2.0 的后续版本。它使用 QUIC 代替 TCP 作为底层传输协议,从而消除了传输层中的 HOL 阻塞。

QUIC 基于 UDP。它将流作为一等公民引入传输层。QUIC 流共享同一个 QUIC 连接,因此创建新的 QUIC 流无需额外的握手和慢启动,但 QUIC 流是独立传输的,因此在大多数情况下,影响一个流的数据包丢失不会影响其他流。

应用场景:

  • 实时应用和游戏:HTTP/3 的快速握手和低延迟特性使其非常适合需要实时数据传输的应用,比如在线游戏、视频会议、和实时流媒体。
  • 现在 web 应用:由于 HTTP/3 提供了更高效的连接管理和更好的用户体验,对于现代 Web 应用和服务提供商来说,如使用 SPAs(单页应用)和频繁的小数据请求的场景,HTTP/3 是更优的选择。
  • 安全性要求较高的服务:QUIC 协议自带加密,简化了 TLS 的握手过程,因此对于那些需要快速、安全连接建立的服务,HTTP/3 是很合适的。
责任编辑:武晓燕 来源: ByteByteGo
相关推荐

2020-03-08 21:22:03

HTTP112

2022-06-21 10:10:14

HTTP协议TCP

2019-09-23 08:35:52

2019-04-12 10:44:39

2021-10-30 19:57:00

HTTP2 HTTP

2019-11-17 22:47:53

HTTP23

2020-12-04 09:30:18

HTTPWeb前端

2023-09-06 12:01:50

HTTP协议信息

2018-07-04 14:56:02

HTTP传输编码

2022-07-13 14:12:41

HTTP/3前端

2022-06-07 08:39:35

RPCHTTP

2020-08-26 07:50:01

HTTP 3网络协议HTTP

2021-06-02 10:52:01

HTTP3Linux

2023-10-16 08:57:52

2020-11-25 09:36:17

HTTPRPC远程

2014-10-22 09:36:41

TCPIP

2019-12-13 09:14:35

HTTP2协议

2024-07-11 10:41:07

HTTPSHTTP文本传输协议

2018-11-14 15:00:08

HTTP程序员前端

2020-05-22 09:12:46

HTTP3网络协议
点赞
收藏

51CTO技术栈公众号