什么是 HTTP/3?HTTP/3 为何席卷全球?HTTP/3 中有什么新内容?为什么需要它?

超文本传输​​协议 ( HTTP ) 是互联网的基石,有助于加载网页、流式传输视频以及为您最喜爱的应用程序获取数据。

去年 ,负责定义互联网技术的组织 互联网工程任务组 ( IETF )对该协议的新版本 HTTP/3 进行了标准化。自那时起,HTTP/3 和相关的 QUIC 协议在公共网络上迅速普及。确切的数字取决于来源和测量方法,全球范围内,HTTP/3 的支持率从 19% 到 50% 不等 。

H3使用增长迅猛

由于这些新协议被 Google 和 Meta 等大公司大量使用,我们可以肯定地说, 目前很大一部分互联网流量已经在使用 HTTP/3。事实上,你现在正在阅读的博客文章也很可能就是通过 HTTP/3 加载的!

在本系列中,我将提供一些背景信息,说明 HTTP/3 解决了哪些问题、它的性能如何、为什么它得到如此迅速的采用,以及它仍在努力克服哪些限制。

为什么我们需要 HTTP/3?

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

实际上, 我们不会使用单一协议,而是同时使用几种协议的组合,每种协议都有自己的职责和规则(图 1)。这是为了让事情变得灵活和可重复使用——无论你使用的是 WiFi、有线还是4G / 5G,你仍然可以使用完全相同的 HTTP 逻辑。

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

互联网的许多原始协议都是在 20 世纪 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 负责加密 Web 上的敏感数据 — 正是它在HTTPS中提供 S(安全) 。使用 TCP,TLS 仅加密实际的 HTTP 数据(图 2)。使用 QUIC,  TLS 还会加密 QUIC 协议本身的大部分内容。这意味着,在 TCP 中所有中间件都可以看到(并可更改)的元数据(例如数据包编号和连接关闭信号),现在在 QUIC 中仅客户端和服务器可用。


图 2 — TCP+TLS 和 QUIC 之间的加密差异。QUIC 加密的不仅仅是 HTTP 数据。
 

此外,由于 QUIC 的加密范围更广,因此更改它或添加新功能将比 TCP 容易得多——我们只需要更新客户端和服务器,因为中间件无论如何都无法解密元数据。这使得 QUIC 成为一种面向未来的协议,使我们能够更快地解决新挑战。

当然, 这种额外的加密对新协议的总体安全性和隐私性也有好处。虽然 TCP + TLS 非常适合保护敏感的个人数据(例如信用卡或电子邮件内容),但它们仍然容易受到复杂的(隐私)攻击,由于人工智能的最新进展,这种攻击变得越来越实际。通过进一步加密此类元数据,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 几乎完全相同。它们的主要区别在于在 QUIC 或 TCP 之上的功能的技术实现。但是,由于 HTTP/3 可以使用 QUIC 的所有新功能,因此 在加载网页和流式传输视频时,预计其性能会更高。在实践中,正是这一方面促使 HTTP/3 得到了迅速采用。

QUIC 将帮助修复 HTTP/2 的一些重大缺点

  • 开发一种方法来解决当智能手机从 WiFi 切换到蜂窝数据时(例如离开家或办公室时)性能缓慢的问题
  • 减少丢包的影响——当一个信息包没有到达目的地时,它不会再阻塞所有的信息流(称为“队头阻塞”的问题)

其他好处包括:

更快的连接建立

QUIC 允许 TLS 版本协商与加密和传输握手同时发生

零往返时间 (0-RTT)

对于它们已经连接的服务器,客户端可以跳过握手要求(互相确认和验证以确定它们将如何通信的过程)

更全面的加密

QUIC 的新握手方式将默认提供加密,这是对 HTTP/2 的巨大升级,并将有助于减轻攻击的风险

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3280786.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

C语言分支结构作业

作业 输入你的身高和体重,测试你的健康状况。 计算bmi的值, bmi (体重/身高的平方) 如果bmi 小于18.5,则显示“偏瘦,注意加强营养” 如果bmi 在18.5和23.9之间,则显示“体重指数良好,注意保持…

Linux基本功能

Linux 操作系统,作为开源社区的明星之一,以其稳定性、安全性和灵活性在全球范围内得到广泛应用。 1. 多用户和多任务支持 Linux 是一个真正的多用户系统,允许多个用户同时登录并在同一时间内运行多个程序。每个用户拥有自己的账户和权限&…

Javascript前端面试基础(九)

浏览器缓存 浏览器缓存分为强缓存和协商缓存。当客户端请求某个资源时,获取缓存的流程如下 先根据这个资源的一些http header判断它是否命中强缓存,如果命中则直接从本地获取缓存资源,不会发请求到服务器;当强缓存没有命中时,客户…

数说故事 | 大数据洞察宠物消费市场数据

“班味”越来越重的年轻人正靠养宠物来“拯救”自己的生活。结束了一天的忙碌,推开家门,撸个猫、遛个狗,哪怕云吸一下,命就续上了,感觉瞬间焕发新生,能量值满满。 宠物对于铲屎官的意义,不止于…

MATLAB(2)海底地形模型

一、介绍 在MATLAB中创建海底地形模型,你可以使用不同的方法,包括从现有的数据(如地形数据文件、DEM(数字高程模型)等)中加载数据,或者使用数学函数来生成模拟的地形。下面,我将提供…

Flink 实时数仓(二)【DIM 层搭建】

1、DIM 层搭建 1.1、设计要点 DIM层设计要点: DIM层存的是维度表(环境信息,比如人、场、货等)DIM层的数据存储在 HBase 表中DIM层表名的命名规范为dim_表名 DIM 层表是用于维度关联的,要通过主键(维度外…

Magento2 常用命令以及技巧

1.Magento 命令行工具 Magento2 带有一个命令行工具,在windows下,用管理员权限打开MS-DOS命令提示符,然后cd到Magento根目录,运行下面命令,就可 以看到这个强大的命令行工具的命令清单: php bin/magentoU…

【echarts】echarts-liquidfill 水球图

echarts-liquidfill3兼容echarts5 echarts-liquidfill2兼容echarts4 npm install echarts npm install echarts-liquidfill设置水球图背景色和内边框样式 var option {series: [{type: liquidFill,data: [0.6, 0.5, 0.4, 0.3],backgroundStyle: {borderWidth: 5,//边框宽度bo…

《史上最简单的SpringAI+Llama3.x教程》-04-RAG核心Embedding及向量检索Retrieval

上一节咱们顺利从本地读取了文件内容,并且可以使用transform工具对文件进行内容处理,下面咱们继续看看如何将文件进行向量化,并且存储到向量数据库中。 Embedding 知识扩展 Embeddings是一种将高维数据映射到低维空间的技术,它能…

【Webpack 踩坑】img 标签图片加载不出来

问题&#xff1a;在html的img标签路径解析错误&#xff0c;导致加载不出来 一直用框架开发&#xff0c;好久没用过webpack写原生代码&#xff0c;一下子踩了好多坑… 图片位置&#xff1a; 其中一个就是在html中写了图片地址&#xff1a; <!-- src/pages/index.html --&…

实战:ElasticSearch 索引操作命令(补充)

四.ElasticSearch 操作命令 4.1 集群信息操作命令 4.1.1 查询集群状态 &#xff08;1&#xff09;使用 Postman 客户端直接向 ES 服务器发 GET 请求 http://hlink1:9200/_cat/health?v &#xff08;2&#xff09;使用服务端进行查询 curl -XGET "hlink1:9200/_cat/h…

2024.07纪念一 debezium : spring-boot结合debezium

使用前提&#xff1a; 一、mysql开启了logibin 在mysql的安装路径下的my.ini中 【mysqlid】下 添加 log-binmysql-bin # 开启 binlog binlog-formatROW # 选择 ROW 模式 server_id1 # 配置 MySQL replaction 需要定义&#xff0c;不要和 canal 的 slaveId 重复 参考gitee的项目…

收藏!国内外GPU算力厂商详细盘点

如今&#xff0c;图形处理器&#xff08;GPU&#xff09;作为计算领域的核心部件&#xff0c;其算力性能直接决定了诸多应用场景的效率和效果。从深度学习、科学计算到视频处理&#xff0c;GPU的算力已成为衡量技术实力的重要指标。本文将详细盘点当前市场上GPU算力领先的厂商&…

iOS开发-图片上涂鸦绘制撤销功能

iOS开发-图片上涂鸦绘制撤销功能 当我们需要重新在图片上进行绘制涂鸦生成新的图&#xff0c;这里使用到了Graphics中的API功能。 Graphics Framework是一套基于C的API框架&#xff0c;使用了Quartz作为绘图引擎。它提供了低级别、轻量级、高保真度的2D渲染。 微信搜索小游戏…

单线程 和多线程区别,看打印输出1000个数字效果

执⾏过程: 加载func() -> 执⾏main -> 创建⼦线程t -> ⼦线程t启动 -> 执⾏func中的内容 |-> 继续执⾏main from threading import Thread #此线程不用安装自带。T是大写注意哟 def func():for i in range(1000):print(func,i) #定义一个函数打印 if __name__ …

<数据集>DOTA v1.0遥感航拍目标识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;1869张&#xff08;训练集1411&#xff0c;验证集458&#xff09; 标注数量(xml文件个数)&#xff1a;1869 标注数量(txt文件个数)&#xff1a;1869 标注类别数&#xff1a;15 标注类别名称&#xff1a;[plane, ba…

基于Python的哔哩哔哩国产动画排行数据分析系统

需要本项目的可以私信博主&#xff0c;提供完整的部署、讲解、文档、代码服务 随着经济社会的快速发展&#xff0c;中国影视产业迎来了蓬勃发展的契机&#xff0c;其中动漫产业发展尤为突出。中国拥有古老而又璀璨的文明&#xff0c;仅仅从中提取一部分就足以催生出大量精彩的…

python——joblib进行缓存记忆化-对计算结果缓存

问题场景 在前端多选框需要选取多个数据进行后端计算。 传入后端是多个数据包的对应路径。 这些数据包需要按一定顺序运行&#xff0c;通过一个Bag(path).get_start_time() 可以获得一个float时间值进行排序&#xff0c;但由于数据包的特性&#xff0c;这一操作很占用性能和时…

碰撞检测 | 矩形增量膨胀安全走廊模型(附C++/Python仿真)

目录 0 专栏介绍1 安全走廊建模的动机2 矩形增量膨胀算法3 算法仿真3.1 C实现3.2 Python实现 0 专栏介绍 &#x1f525;课设、毕设、创新竞赛必备&#xff01;&#x1f525;本专栏涉及更高阶的运动规划算法轨迹优化实战&#xff0c;包括&#xff1a;曲线生成、碰撞检测、安全走…

哪个牌子的眼镜清洗机好?买超声波清洗机有必要吗

生活中&#xff0c;我们经常忽视眼镜的清洁。你知道吗&#xff1f;眼镜如果长时间不清洁的话&#xff0c;镜片上的污垢和油脂会让视线变得模糊不清&#xff0c;甚至油污滋生的细菌还可能伤害到我们的眼睛&#xff0c;比如引起眼睛疲劳或炎症。为了保持眼镜干净&#xff0c;现在…