免费体验 Gpt4 plus 与 AI作图神器,我们出的钱 体验地址:体验
超文本传输协议(HTTP)是互联网的基石,有助于加载网页、流式传输视频以及为我们喜爱的应用程序获取数据。
去年,负责定义互联网技术的互联网工程任务组(IETF)对该协议的新版本 HTTP/3 进行了标准化。此后,HTTP/3 和相关的 QUIC 协议在公共网络上迅速普及。具体数字取决于资料来源和测量方法,全球支持 HTTP/3 的网络服务器和网络的比例从 19% 到 50% 以上不等。
由于谷歌和 Meta 等大公司都在大量使用这些新协议,我们可以有把握地说,目前大部分互联网流量都已使用 HTTP/3
在本文中将介绍 HTTP/3 解决了哪些问题、它的性能如何、为何能如此迅速地被采用,以及它仍在努力克服哪些限制。
为什么需要 HTTP/3?
网络协议描述了网络上两个实体(通常是用户设备和网络服务器)之间的数据通信方式。由于有许多不同的公司都在为网络开发软件,因此需要将协议标准化,以便所有这些软件都能 "互操作",也就是说,它们都能相互理解,因为它们遵循相同的规则。
实际上,我们并不使用单一协议,而是同时使用多个协议的组合,每个协议都有自己的职责和规则(图 1)。这样做的目的是让事情变得灵活和可重复使用--无论你使用的是 Wi-Fi、有线电视还是 4G/5G,你都可以使用完全相同的 HTTP 逻辑。
互联网的许多原始协议都是在上世纪 80 和 90 年代标准化的,这意味着它们是根据当时的目标和限制而构建的。其中一些协议经受住了时间的考验,而另一些协议则开始显出老态。大多数问题都通过变通方法和巧妙技巧得到了解决。不过,很明显,有些东西必须改变。传输控制协议(TCP)尤其如此,它可以确保您的数据在互联网上可靠传输。
为什么 TCP 协议不是当今网络的最佳选择
HTTP/1.1 和 HTTP/2 依靠 TCP 成功完成任务。在客户端和服务器交换 HTTP 请求/响应之前,它们必须建立 TCP 连接。
随着时间的推移,人们一直在努力更新 TCP 并解决它的一些低效问题--TCP 仍然把网页当作单个文件加载,而不是成百上千个单独文件的集合。其中一些更新取得了成功,但大多数影响较大的更新(如 TCP 多路径和 TCP 快速打开)需要近十年的时间才能在公共互联网上实际使用。
对 TCP 协议进行修改所面临的主要挑战是,互联网上成千上万的设备都有自己的 TCP 协议。这些设备包括手机、笔记本电脑和服务器,以及路由器、防火墙、负载平衡器和其他类型的 "中间件"。因此,如果我们想更新 TCP 协议,就必须等待所有这些设备中的很大一部分更新它们的实现,而这实际上可能需要数年时间。
QUIC 解决方案
这就成了一个问题,以至于最实际的办法就是用一种全新的协议来取代 TCP。这种替代品就是 QUIC 协议,尽管许多人仍然(开玩笑地)把它称为 TCP 2.0。这个昵称是恰当的,因为 QUIC 包含了许多与 TCP 相同的高级功能,但也有一些关键的变化。
主要变化是 QUIC 与传输层安全(TLS)协议进行了大量整合。TLS 负责加密网络上的敏感数据,也就是 HTTPS 中的 S
(安全)。使用 TCP
时,TLS
只对实际 HTTP 数据进行加密(图 2)。对于 QUIC,TLS 还对 QUIC 协议本身的大部分内容进行加密。这就意味着,在 TCP 中所有中间件都能看到(并且可以更改)的数据包编号和连接关闭信号等元数据,现在只有 QUIC
中的客户端和服务器才能看到。
此外,由于 QUIC
进行了更广泛的加密,因此更改它或添加新功能比 TCP 要容易得多--我们只需更新客户端和服务器,因为中间件无论如何都无法解密元数据。这使得 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
迅速得到采用。
交流
首发于公众号 大迁世界,欢迎关注。📝 每周一篇实用的前端文章 🛠️ 分享值得关注的开发工具 ❓ 有疑问?我来回答
本文 GitHub github.com/qq449245884... 已收录,有一线大厂面试完整考点、资料以及我的系列文章。