写点什么

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

作者 | Robin Marx 

  • 2023-11-12
    北京
  • 本文字数:2263 字

    阅读完需:约 7 分钟

大小:1.18M时长:06:54
HTTP/3为什么正迅速吞噬世界?

超文本传输协议(HTTP)作为互联网的基石,一直在网页加载、视频流传输、应用获取数据等方方面面发挥重要作用。

 

去年,负责定义互联网技术的互联网工程任务组(IETF)将该协议的最新版本 HTTP/3 定为标准。在此之后,HTTP.3 及相关 QUIC 协议在公共网络上迅速普及。尽管不同来源和测量方法给出的结果略有差别,但目前普遍认为全球 19%到 50%的 Web 服务器和网络均已支持 HTTP/3。

 

由于这些新协议得到谷歌和 Meta 等大公司的广泛应用,我们认为,当前互联网流量中已经有很大一部分在使用 HTTP/3。

 

在本篇文章中,我将介绍一些背景信息,介绍 HTTP/3 解决了哪些问题、它是如何执行的、为什么能够得到迅速普及,以及 HTTP/3 仍然面临哪些有待克服的障碍。

 

我们为什么需要 HTTP/3?

 

网络协议所描述的,是数据如何在网络上的两个实体之间(通常是用户设备和 Web 服务器)进行通信。因为市场上有多家公司在为网络开发软件,因此通信协议必须确保标准化,以便所有软件之间都可以“互操作”。换句话说,各软件能够在遵循相同规则的基础之上相互理解。

 

在实践当中,我们往往不会使用单一某种协议,而是同时使用多种协议的组合。其中各项协议都有自己的作用和规则(详见图一)。这样的设计是为了保障灵活性和可复用性——无论大家使用的是 Wi-Fi、固网还是 4G/5G,都能使用完全相同的 HTTP 逻辑。



图 1 HTTP/2 与 HTTP/3 的协议栈,如何将多项协议组合起来以提供完整的互联网功能

 

不少初期互联网协议早在上世纪 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 负责加密网络上的敏感数据,也就是 HTTPS 中的 S(安全)。在 TCP 协议下,TLS 仅加密实际 HTTP 数据(参见图二);对于 QUIC,TLS 还会对 QUIC 协议本身的大部分内容进行加密。也就是说,TCP 当中对所有中间件均可见(且可更改)的元数据(例如数据包编号、连接关闭信号等),在现在的 QUIC 中将仅供客户端和服务器使用。

 


图 2 TCP+TLS 与 QUIC 之间的加密差异。可以看到,QUIC 中被加密的不仅仅是 HTTP 数据

 

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

 

当然,这种额外的加密机制也有助于增强新协议的总体安全性和隐私性。虽然 TCP+TLS 非常适合保护信用卡或电子邮件内容等个人敏感数据,但却仍容易受到复杂(隐私)攻击的影响。而且随着 AI 技术的快速发展,这些攻击的实施门槛也越来越低。通过进一步加密此类元数据,QUIC 协议无疑能够更好地应对精心策划的恶意攻击。

 

QUIC 还包含诸多其他与安全相关的功能,包括防御分布式拒绝服务(DDoS)攻击、以及防放大和 RETRY 数据包等功能。

 

最后,与 TCP 相比,QUIC 还带来了大量效率和性能改进,包括更快的连接握手(参见图三)、消除“队头阻塞”问题、更好的数据包丢失检测/恢复,以及处理用户切换网络的方法(我们将在后续文章中具体介绍)。



图 3 QUIC 在设置上拥有更快的连接速度,因为它能将“传输”三向握手与 TLS 加密会话相结合,性能优于 TCP+TLS 中的两个独立过程

 

我们真正需要的并不是 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 得到了市场的广泛认可和快速接纳。

 

原文链接:


https://blog.apnic.net/2023/09/25/why-http-3-is-eating-the-world/


相关阅读:


HTTP/3 发布了,我们来谈谈 HTTP/3

基于 QUIC 协议的 HTTP/3 正式发布

从 HTTP 到 HTTP/3 的发展简史

HTTP/3 与 HTTP/2 的性能对比

2023-11-12 08:007324

评论 1 条评论

发布
用户头像
真正推进很难吧,毕竟大量的基建(路由器之类的)都是支持tcp类型的,QUIC道阻且长
2023-11-23 10:44 · 北京
回复
没有更多了
发现更多内容

面试官:网关如何实现限流?

王磊

Java 面试 java面试

华为云康宁:携手伙伴,基于核心技术构筑健康可持续新生态

华为云开发者联盟

云计算 后端 华为云 大模型 华为云开发者联盟

打造数字经济全新引擎,用友iuap构建实体经济数智底座

用友BIP

数智底座

探索容灾架构演进之路-从单点到异地多活

柠檬汁Code(binbin0325)

容灾 异地多活 备份 & 恢复 部署架构 同城双活

Qualcomm IPQ6010-IPQ6018-IPQ6000- chip with open source OpenWiFi- customized network

wifi6-yiyi

wifi openwrt IPQ6010 Qualcomm openwifi

开发者的福利-Amazon CodeWhisperer

归来

大模型 Amazon CodeWhisperer AWS Toolkit

捆绑销售商业环境中,SaaS初创企业面临采购行为习惯转变

B Impact

OpenAI 治理结构为什么可以罢免CEO Sam Altman面临怎样管理问题

B Impact

2.5A、3MHz开关充电器解决方案

梦笔生花

CnosDB有主复制演进历程

CnosDB

开源 时序数据库 CnosDB

微信多开插件:WeChatHooks for mac

加油,小妞!

微信多开 WeChatHooks 微信插件

低代码平台技术分享官 | 漫话iGIX前端设计模式

inBuilder低代码平台

前端

向量数据库—加速大模型训练推理

不叫猫先生

大模型 向量数据库

边缘计算平台如何助力元宇宙实现?

3DCAT实时渲染

边缘计算平台

万字长文:从 C# 入门学会 RabbitMQ 消息队列编程

快乐非自愿限量之名

C# 编程语言

MacBook触控板窗口管理推荐 Swish免激活最新

胖墩儿不胖y

Mac软件 触控板管理工具

第六期 |《实时洞察 智能运营一用友企业绩效管理白皮书》解读

用友BIP

企业绩效

基于 DAG 任务编排实现

Bingo

Java DAG 任务编排 规则表达式

阿里云智能集团不再推进分拆,并加大投入

B Impact

Docker搭建Hadoop集群教程。

百度搜索:蓝易云

Docker hadoop Linux 运维 运维云计算

物联专栏丨云边协同技术加速AloT能力向边缘侧快速演进

inBuilder低代码平台

物联网

WebSocket是什么,怎么用?

百度搜索:蓝易云

云计算 Linux TCP 运维 websocket

WordPress 基于亚马逊云的部署实践(四)- 负载均衡+弹性伸缩

王坤祥

AWS 亚马逊云 弹性伸缩 负载均衡器

PullTube for Mac(在线视频下载软件) 1.8.5.19中文直装版

mac

视频下载工具 苹果mac Windows软件 PullTube

「Macos最新」XMind for mac v24.01中文版

加油,小妞!

思维导图 XMind

龙蜥社区召开理事闭门会,讨论多项社区规划

OpenAnolis小助手

阿里云 开源 龙蜥社区 开放原子 理事会

光纤的跳线和尾纤

小齐写代码

GreatSQL社区与Amazon、Facebook、Tencent共同被MySQL致谢

GreatSQL

greatsql

10m带宽香港服务器的优势

Geek_f19a80

服务器

INFINI Labs 产品更新 | 发布 Easysearch Java 客户端,Console 支持 SQL 查询等功能

极限实验室

console Gateway 客户端 easysearch 极限科技

Kubernetes Gateway API 攻略:解锁集群流量服务新维度!

SEAL安全

Gateway 运维‘ kubernetes 运维 企业号11月PK榜

HTTP/3为什么正迅速吞噬世界?_架构/框架_InfoQ精选文章