为什么说 HTTP/3 正在吞噬世界?

【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解决了什么问题、性能如何、为什么如此迅速被采用,以及仍需努力克服哪些限制等问题。

为什么我们需要HTTP/3?

网络协议描述了网络上的两个实体之间如何进行数据通信,通常是用户设备和Web服务器之间的通信。由于有许多不同的公司构建面向Web的软件,因此协议需要标准化,以便所有这些软件可以“互操作”,也就是说它们都遵循相同的规则,可以相互理解。

在实践中,我们不会只使用一种协议,而是组合使用多个协议,每个协议都有自己的职责和规则(如图1所示)。这是为了提高灵活性和可重用性,无论是使用Wi-Fi、有线连接还是4G/5G,都可以使用完全相同的HTTP逻辑。

图1:HTTP/2和HTTP/3的协议栈,展示了多个协议如何组合以提供完整的互联网功能。

许多最初用于互联网的协议是在80年代和90年代标准化的,这意味着它们是根据那些年代的目标和限制构建的。尽管其中一些协议经受住了时间的考验,但有一些则显得有些过时。大多数问题都已通过权宜之计和巧妙的技巧解决。但是显然有些协议需要一些改变。尤其是负责保证数据可靠穿越互联网的TCP协议(传输控制协议)。

为什么TCP不适合如今的网络?

HTTP/1.1和HTTP/2依赖于TCP来执行任务。客户端和服务器必须先建立一个TCP连接,才能交换HTTP请求和响应。

随着时间的推移,人们已经做出了许多努力来更新TCP并解决一些效率问题,如TCP仍然像加载单个文件一样加载网页,而不会加载数百个单独文件的集合。其中一些更新取得了成功,但大多数影响过大的更新(例如TCP多路径和TCP快速开启)几乎花费了将近十年的时间才能在公共互联网上实际使用。

更改TCP的主要难点是,互联网上有成千上万的设备都拥有自己的TCP协议实现。这些设备包括手机、笔记本电脑、服务器,以及路由器、防火墙、负载均衡器和其他类型的“中间设备”。因此,如果我们想要更新TCP,必须等待相当一部分设备更新其实现,而实际上这可能需要数年的时间。

QUIC解决方案

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/3;我们需要的是QUIC。

最初,人们曾尝试保留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」来了!

一图速览!1024 程序员节亮点抢先看

媲美GPT-4,百度公布文心大模型4.0;英伟达芯片将被出口管制,多家国内厂商回应;微软AutoGen爆火|极客头条

相关推荐

  • 重构“彻底”的百度文库,如何成为内容生产的新起点?
  • 上海内推 | 微软亚洲研究院人工智能与机器学习组招聘研究型实习生
  • ICCV 2023 | 向量也疯狂,卷起2023年的巴黎时尚风暴!
  • 麻瓜数学:数据增强提高大模型数学推理能力,但泛化能力待提升
  • 强化学习在推荐系统的应用
  • 经济转型时期公司和个人的困境——如何进行高质量的转型?
  • 倒计时3天!Apache Doris 首届线下技术峰会即将召开
  • 文心大模型 4.0 发布!李彦宏:相比 GPT-4 毫不逊色
  • OpenAI 悄悄改变核心价值观惹争议:埋头搞 AGI,其他的都是浮云!
  • 抖音同款、2023 必看:火山引擎团队整理的“易复用”的音视频处理经验都在这了
  • 千刀万剐的微服务,我们到底应该如何应对分布式系统的挑战和风险
  • 前端根本不需要构建!“技术邪教” Ruby on Rails 之父再出激进言论引争议
  • 突发!美国又“出手”了!
  • 355亿,深圳最火独角兽要IPO了
  • 鱼皮的编程小圈子
  • 为什么程序员一定要写单元测试?
  • 微软 VSCode 决定放弃Python3.7!
  • PyTorch大更新,速度大幅提升
  • 分享下几个经典的CV和NLP实战项目
  • 重磅!清华芯片新突破登Science!