超文本传输协议 ( HTTP ) 是互联网的基石,有助于加载网页、流式传输视频以及为您最喜爱的应用程序获取数据。
去年 ,负责定义互联网技术的组织 互联网工程任务组 ( IETF )对该协议的新版本 HTTP/3 进行了标准化。自那时起,HTTP/3 和相关的 QUIC 协议在公共网络上迅速普及。确切的数字取决于来源和测量方法,全球范围内,HTTP/3 的支持率从 19% 到 50% 不等 。
H3使用增长迅猛
由于这些新协议被 Google 和 Meta 等大公司大量使用,我们可以肯定地说, 目前很大一部分互联网流量已经在使用 HTTP/3。事实上,你现在正在阅读的博客文章也很可能就是通过 HTTP/3 加载的!
在本系列中,我将提供一些背景信息,说明 HTTP/3 解决了哪些问题、它的性能如何、为什么它得到如此迅速的采用,以及它仍在努力克服哪些限制。
为什么我们需要 HTTP/3?
网络协议描述了网络上两个实体(通常是用户设备和网络服务器)之间如何传输数据。由于有许多不同的公司在为网络开发软件,因此需要对协议进行标准化,以便所有这些软件都可以“互操作”,也就是说,它们都可以相互理解,因为 它们遵循相同的规则。
实际上, 我们不会使用单一协议,而是同时使用几种协议的组合,每种协议都有自己的职责和规则(图 1)。这是为了让事情变得灵活和可重复使用——无论你使用的是 WiFi、有线还是4G / 5G,你仍然可以使用完全相同的 HTTP 逻辑。
互联网的许多原始协议都是在 20 世纪 80 年代和 90 年代标准化的,这意味着它们是在考虑了那几十年的目标和限制的情况下构建的。 虽然其中一些协议经受住了时间的考验,但其他一些协议已经开始显露出它们的老旧。大多数问题都通过变通方法和巧妙的技巧得到了解决。然而,很明显有些事情必须改变。对于传输控制协议 ( TCP ) 来说尤其如此,它确保您的数据可靠地传输到互联网上。
为什么 TCP 不适合当今的 Web
HTTP/1.1 和 HTTP/2 依靠 TCP 来成功完成其工作——在客户端和服务器可以交换 HTTP 请求/响应之前,它们必须建立 TCP 连接。
随着时间的推移,人们付出了很多努力来更新 TCP 并解决其效率低下的问题——TCP 仍然将网页加载为单个文件,而不是数百个单独文件的集合。其中一些更新取得了成功,但大多数影响较大的更新(例如 TCP 多路径和 TCP Fast Open) 花了近十年的时间才在公共互联网上投入实际使用。
实施 TCP 变更的主要挑战是互联网上成千上万的设备都有自己的 TCP 协议实现。这些设备包括手机、笔记本电脑和服务器,以及路由器、防火墙、负载平衡器和其他类型的“中间件”。因此, 如果我们想要更新 TCP,我们必须等待所有这些设备中的很大一部分更新 其实现,这实际上可能需要数年时间。
QUIC 解决方案
这已经成为一个问题,以至于最实际的解决方法是用全新的东西取代 TCP。 这种替代就是 QUIC 协议,尽管许多人仍然(开玩笑地)将其称为 TCP 2.0。这个绰号很合适,因为 QUIC 包含许多与 TCP 相同的高级功能,但有一些关键的变化。
主要变化是 QUIC 与传输层安全性 ( TLS ) 协议高度集成。TLS 负责加密 Web 上的敏感数据 — 正是它在HTTPS中提供 S(安全) 。使用 TCP,TLS 仅加密实际的 HTTP 数据(图 2)。使用 QUIC, TLS 还会加密 QUIC 协议本身的大部分内容。这意味着,在 TCP 中所有中间件都可以看到(并可更改)的元数据(例如数据包编号和连接关闭信号),现在在 QUIC 中仅客户端和服务器可用。
此外,由于 QUIC 的加密范围更广,因此更改它或添加新功能将比 TCP 容易得多——我们只需要更新客户端和服务器,因为中间件无论如何都无法解密元数据。这使得 QUIC 成为一种面向未来的协议,使我们能够更快地解决新挑战。
当然, 这种额外的加密对新协议的总体安全性和隐私性也有好处。虽然 TCP + TLS 非常适合保护敏感的个人数据(例如信用卡或电子邮件内容),但它们仍然容易受到复杂的(隐私)攻击,由于人工智能的最新进展,这种攻击变得越来越实际。通过进一步加密此类元数据,QUIC 可以更好地抵御复杂的威胁行为者。
QUIC 还具有许多其他与安全相关的功能,包括防御分布式拒绝服务(DDoS)攻击,具有防止放大和 RETRY 数据包等功能。
最后, 与 TCP 相比,QUIC 还包括大量效率和性能改进,包括更快的连接握手(见图 3)、 消除“队头阻塞”问题、更好的数据包丢失检测/恢复,以及处理用户切换网络的方法(我将在下一篇文章中详细介绍这一点)。
我们不需要 HTTP/3。我们需要的是 QUIC
最初,有人尝试保留 HTTP/2 并进行最小限度的调整,以便我们也可以在较低层使用 QUIC(毕竟,这就是拥有这些不同的协作和可重用协议的全部意义所在)。然而,很明显 QUIC 与 TCP 的差异足以使其与 HTTP/2 不兼容。因此,我们决定为 QUIC 制作一个新版本的 HTTP,最终成为 HTTP/3。
HTTP/3 与 HTTP/2 几乎完全相同。它们的主要区别在于在 QUIC 或 TCP 之上的功能的技术实现。但是,由于 HTTP/3 可以使用 QUIC 的所有新功能,因此 在加载网页和流式传输视频时,预计其性能会更高。在实践中,正是这一方面促使 HTTP/3 得到了迅速采用。
QUIC 将帮助修复 HTTP/2 的一些重大缺点
- 开发一种方法来解决当智能手机从 WiFi 切换到蜂窝数据时(例如离开家或办公室时)性能缓慢的问题
- 减少丢包的影响——当一个信息包没有到达目的地时,它不会再阻塞所有的信息流(称为“队头阻塞”的问题)
其他好处包括:
更快的连接建立
QUIC 允许 TLS 版本协商与加密和传输握手同时发生
零往返时间 (0-RTT)
对于它们已经连接的服务器,客户端可以跳过握手要求(互相确认和验证以确定它们将如何通信的过程)
更全面的加密
QUIC 的新握手方式将默认提供加密,这是对 HTTP/2 的巨大升级,并将有助于减轻攻击的风险