【CSDN 编者按】本文作者将提供一些背景信息,尝试阐述HTTP/3解决了什么问题、性能如何、为什么如此迅速被采用,以及仍需努力克服哪些限制等问题。
原文链接:https://blog.apnic.net/2023/09/25/why-http-3-is-eating-the-world/
未经允许,禁止转载!
作者 | Sven Mieke 译者 | 弯月责编 | 夏萌出品 | CSDN(ID:CSDNnews)超文本传输协议(HTTP)是互联网的基石,可帮助我们加载网页、流式传输视频以及为应用程序获取数据。
去年,负责定义互联网技术的组织IETF(互联网工程任务组)对该协议的新版本 HTTP/3 进行了标准化。从那以后,HTTP/3 和相关的 QUIC 协议在公共网络上迅速普及。在全世界的网络中,支持HTTP/3的Web服务器大约占19%~50%以上,确切数字取决于数据来源以及测量方法。
由于这些新协议已经被像谷歌和Meta这样的大公司广泛使用,我们可以肯定地说,当前互联网流量的很大一部分已经在使用HTTP/3。事实上,你正在阅读的这篇博客文章很可能是通过HTTP/3加载的!
在本文中,我将提供一些背景信息,尝试阐述HTTP/3解决了什么问题、性能如何、为什么如此迅速被采用,以及仍需努力克服哪些限制等问题。
网络协议描述了网络上的两个实体之间如何进行数据通信,通常是用户设备和Web服务器之间的通信。由于有许多不同的公司构建面向Web的软件,因此协议需要标准化,以便所有这些软件可以“互操作”,也就是说它们都遵循相同的规则,可以相互理解。
在实践中,我们不会只使用一种协议,而是组合使用多个协议,每个协议都有自己的职责和规则(如图1所示)。这是为了提高灵活性和可重用性,无论是使用Wi-Fi、有线连接还是4G/5G,都可以使用完全相同的HTTP逻辑。
图1:HTTP/2和HTTP/3的协议栈,展示了多个协议如何组合以提供完整的互联网功能。
许多最初用于互联网的协议是在80年代和90年代标准化的,这意味着它们是根据那些年代的目标和限制构建的。尽管其中一些协议经受住了时间的考验,但有一些则显得有些过时。大多数问题都已通过权宜之计和巧妙的技巧解决。但是显然有些协议需要一些改变。尤其是负责保证数据可靠穿越互联网的TCP协议(传输控制协议)。
HTTP/1.1和HTTP/2依赖于TCP来执行任务。客户端和服务器必须先建立一个TCP连接,才能交换HTTP请求和响应。
随着时间的推移,人们已经做出了许多努力来更新TCP并解决一些效率问题,如TCP仍然像加载单个文件一样加载网页,而不会加载数百个单独文件的集合。其中一些更新取得了成功,但大多数影响过大的更新(例如TCP多路径和TCP快速开启)几乎花费了将近十年的时间才能在公共互联网上实际使用。
更改TCP的主要难点是,互联网上有成千上万的设备都拥有自己的TCP协议实现。这些设备包括手机、笔记本电脑、服务器,以及路由器、防火墙、负载均衡器和其他类型的“中间设备”。因此,如果我们想要更新TCP,必须等待相当一部分设备更新其实现,而实际上这可能需要数年的时间。
TCP的问题十分严重,如今最切实可行的方法是用全新的协议替代TCP。这个替代品就是QUIC协议,尽管许多人(打趣地)将其称为TCP 2.0。这个绰号很贴切,因为QUIC包含了TCP的许多高级特性,但有一些关键的改变。
主要的变化是,QUIC与传输层安全性(TLS)协议紧密集成。TLS负责在网络上加密敏感数据,它就是HTTPS中的S(安全)。在TCP中,TLS只加密实际的HTTP数据(图2)。而在QUIC中,TLS还加密了QUIC协议本身的大部分内容。这意味着,数据包编号和连接关闭信号等元数据在TCP中对所有中间设备可见(且可更改),但在QUIC中现在只对客户端和服务器可见。
图2:TCP+TLS和QUIC之间的加密差异。QUIC加密的不仅仅是HTTP数据。
此外,由于QUIC的加密更加广泛,因此比TCP更容易更改或添加新功能——我们只需要更新客户端和服务器,因为中间设备无法解密元数据。因此,QUIC成为了一种面向未来的协议,可以让我们更快地解决新的挑战。
QUIC还具有许多其他与安全相关的功能,包括抵御分布式拒绝服务(DDoS)攻击,具有防放大和RETRY数据包等功能。
最后,与TCP相比,QUIC还包括大量的效率和性能改进,例如更快的连接握手(请参见图3),消除了“首行阻塞”问题,更好的数据包丢失检测/恢复,以及处理用户切换网络的方法。
图3:QUIC具有更快的连接设置,因为它将“传输”三次握手与TLS加密会话建立结合在一起,而在TCP+TLS中,这是两个单独的过程。
最初,人们曾尝试保留HTTP/2,并进行最小的调整,以便在较低的层上也可以使用QUIC(毕竟,这么多可重用协议的整个目的就在于此)。然而,我们很快就发现,QUIC与TCP有很大区别,无法兼容HTTP/2。因此,人们决定制定一个只能用于QUIC的新版本HTTP,最终成为了HTTP/3。
HTTP/3几乎与HTTP/2相同。它与HTTP/2的主要区别是它基于QUIC,而不是TCP。然而,由于HTTP/3可以使用QUIC的所有新功能,因此在加载网页和流式传输视频时,具有更高的性能。实际上,这正是HTTP/3迅速被采用的原因。
推荐阅读:
▶突发!MIUI 时代落幕,雷军官宣:全新「小米澎湃OS」来了!
▶媲美GPT-4,百度公布文心大模型4.0;英伟达芯片将被出口管制,多家国内厂商回应;微软AutoGen爆火|极客头条