HTTP/3 为什么正迅速吞噬世界?

作者 | Robin Marx
译者 | 核子可乐
【HTTP/3 为什么正迅速吞噬世界?】策划 | 丁晓昀
超文本传输协议(HTTP)作为互联网的基石,一直在网页加载、视频流传输、应用获取数据等方方面面发挥重要作用 。
去年,负责定义互联网技术的互联网工程任务组(IETF)将该协议的最新版本 HTTP/3 定为标准 。在此之后 , HTTP.3 及相关 QUIC 协议在公共网络上迅速普及 。尽管不同来源和测量方法给出的结果略有差别,但目前普遍认为全球 19% 到 50% 的 Web 服务器和网络均已支持 HTTP/3 。
由于这些新协议得到谷歌和 Meta 等大公司的广泛应用,我们认为,当前互联网流量中已经有很大一部分在使用 HTTP/3 。
在本篇文章中,我将介绍一些背景信息 , 介绍 HTTP/3 解决了哪些问题、它是如何执行的、为什么能够得到迅速普及 , 以及 HTTP/3 仍然面临哪些有待克服的障碍 。
1我们为什么需要 HTTP/3?
网络协议所描述的,是数据如何在网络上的两个实体之间(通常是用户设备和 Web 服务器)进行通信 。因为市场上有多家公司在为网络开发软件,因此通信协议必须确保标准化,以便所有软件之间都可以“互操作” 。换句话说,各软件能够在遵循相同规则的基础之上相互理解 。
在实践当中,我们往往不会使用单一某种协议,而是同时使用多种协议的组合 。其中各项协议都有自己的作用和规则(详见图一) 。这样的设计是为了保障灵活性和可复用性——无论大家使用的是 Wi-Fi、固网还是 4G/5G,都能使用完全相同的 HTTP 逻辑 。

HTTP/3 为什么正迅速吞噬世界?

文章插图
图 1 HTTP/2 与 HTTP/3 的协议栈,如何将多项协议组合起来以提供完整的互联网功能
不少初期互联网协议早在上世纪 80、90 年代就已经被定为标准 , 这意味着它们在设计上考虑的是几十年前的需求和限制 。虽然其中一些协议经受住了时间的考验,但也有不少已经明显有些过时了 。大多数问题倒是可以通过变通和一些小技巧进行解决,可也有一些到了不得不变的时候 。其中最典型的就是传输控制协议(TCP),它的作用是确保数据能够可靠地在互联网上往来传输 。
2为什么说 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 负责加密网络上的敏感数据 , 也就是 HTTPS 中的 S(安全) 。在 TCP 协议下,TLS 仅加密实际 HTTP 数据(参见图二);对于 QUIC,TLS 还会对 QUIC 协议本身的大部分内容进行加密 。也就是说,TCP 当中对所有中间件均可见(且可更改)的元数据(例如数据包编号、连接关闭信号等),在现在的 QUIC 中将仅供客户端和服务器使用 。
HTTP/3 为什么正迅速吞噬世界?

文章插图
图 2 TCP+TLS 与 QUIC 之间的加密差异 。可以看到 , QUIC 中被加密的不仅仅是 HTTP 数据
此外,由于 QUIC 的加密程度更高,所以对它的变更或新功能添加要比 TCP 简单得多——即只需要更新客户端和服务器,因为中间件无论如何也无法解密元数据 。这就让 QUIC 成为一种面向未来的协议,能帮助我们快速解决种种新兴挑战 。


推荐阅读