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

news2024/11/26 7:45:15

超文本传输​​协议 ( 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://www.coloradmin.cn/o/1962397.html

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

相关文章

KubeSphere 部署向量数据库 Milvus 实战指南

作者:运维有术星主 Milvus 是一个为通用人工智能(GenAI)应用而构建的开源向量数据库。它以卓越的性能和灵活性,提供了一个强大的平台,用于存储、搜索和管理大规模的向量数据。Milvus 能够执行高速搜索,并以…

纷享销客北方战区游学营举行 五大专项助力伙伴业务“倍速增长”

首届纷享销客北方战区渠道核心伙伴游学营日前在山东济南登场,此次游学营一共设置了五大模块,包括财务专项、组织建设专项、团队成长专项、开源专项、续费及增购专项,旨在帮助纷享销客渠道伙伴夯实高质量增长基础,全方位提升企业经…

上海亚商投顾:沪指震荡收跌 地产、芯片股逆势走强

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 市场昨日探底回升,三大股指小幅下跌,黄白二线分化明显。 商业航天概念继续走强&#…

hive 中编写生成连续月sql

记录一下 sql 编写生成从一个确定的起始月份到当前月份的连续月份序列 SELECT substr(add_months(table1.start_dt,table2.pos),1,4) AS INDICT_YEAR,substr(add_months(table1.start_dt,table2.pos),1,7) AS INDICT_MON FROM (SELECT 2024-01-01 AS start_dt,substr(CURRE…

wpf基础

快速换行的快捷键 vs 工具->选项->文本编辑器->XAML->Formatting(格式化)->spacing(间距)-> 选择第三个 ,将各个属性分行放置。 然后按CtrlKD 如何快速生成下面的代码 鼠标放在Slider_ValueChanged上面然后FnF12 就可以快速生成 wpf中的绑定 在…

Golang处理Word文档模板实现标签填充|表格插入|图标绘制和插入|删除段落|删除标签

本教程主要实现【Golang处理Word文档模板实现标签填充|表格插入|图标绘制和插入|删除段落|删除标签】。 本文源码:https://gitee.com/songfayuan/go-zero-demo 教程源码分支:master 分支(_examples/word-template/fill-word-template.go&…

ZFIU001 批导会计凭证报错,通过监控点和消息类来定位触发的位置

在创建会计凭证的时候,发送错误,通过打消息类和消息号的条件断点/监控点才解决 文章目录 报错消息号:F5846 创建监控点创建条件断点 报错原因非常注意 报错 消息号:F5846 创建监控点 创建条件断点 报错原因 非常注意

Java8新特性之Stream-Map

Map一些新方法的具体使用案例 1、getOrDefault:default V getOrDefault(Object key, V defaultValue) package com.qbb.threadpool;import java.util.HashMap; import java.util.Map;/*** author QiuQiu&LL (个人博客:https://www.cnblogs.com/qbbit)* version 1.0* date…

力扣高频SQL 50题(基础版)第三十四题

文章目录 力扣高频SQL 50题(基础版)第三十四题1978.上级经理已离职的公司员工题目说明实现过程准备数据实现方式结果截图 力扣高频SQL 50题(基础版)第三十四题 1978.上级经理已离职的公司员工 题目说明 表: Employees -------…

论文阅读:基于生物神经元的模拟游戏世界感知与学习

论文内容概述 AI要90分钟学会的游戏,人脑细胞竟在5分钟搞定了。Cell在2022年的研究中,使用80万体外神经元细胞(DishBrain)竟然学会玩70年代经典街机游戏Pong! 论文链接:In vitro neurons learn and exhibit sentience when emb…

HCIA总结

一、情景再现:ISP网络为学校提供了DNS服务,所以,DNS服务器驻留在ISP网络内,而不再学校网络内。DHCP服务器运行在学校网络的路由器上 小明拿了一台电脑,通过网线,接入到校园网内部。其目的是为了访问谷歌网站…

ctfshow 权限维持 web670--web679

web670 <?php// 题目说明&#xff1a; // 想办法维持权限&#xff0c;确定无误后提交check&#xff0c;通过check后&#xff0c;才会生成flag&#xff0c;此前flag不存在error_reporting(0); highlight_file(__FILE__);$a$_GET[action];switch($a){case cmd:eval($_POST[c…

2024年技校云计算实验室建设及云计算实训平台整体解决方案

随着信息技术的飞速发展&#xff0c;云计算已成为推动数字化转型的关键力量。技校作为培养技能型人才的摇篮&#xff0c;建设云计算实验室并配套完善的实训平台&#xff0c;对于提升学生的专业技能、增强就业竞争力具有重要意义。本文旨在提出2024年技校云计算实验室建设及云计…

列表内容过多卡顿?有索引栏如何实现滚动加载?

&#x1f453;写在前面 很多小伙伴可能在开发业务中会遇到这种问题&#xff0c;数据列表过多&#xff0c;造成dom一次性渲染卡顿&#xff0c;本文主要介绍滚动加载&#xff0c;实现在有索引栏的列表中使用滚动加载的方法。 本文技术栈使用的是vue2vant2&#xff0c;其他框架组…

letcode - string

翻转字符串 344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/reverse-string/ class Solution { public:void reverseString(vector<char>& s) {reverse(s.begin(),s.end());//直接上逆置接口} }; 函数签名: void reverseStr…

CVPR 2024 录用数据出炉!这些方向是大趋势!

一年一度的计算机视觉和模式识别会议&#xff08;CVPR&#xff09;一直是 CV 界前沿研究的灯塔。 CVPR 2024 录用结果显示&#xff0c;今年共有 2719 篇论文被接收&#xff0c;录用率 23.6%。 那么大模型时代&#xff0c;今年的研究主题有哪些变化&#xff1f; 最近&#xf…

【Python】 ValueError: too many values to unpack 解决方案

【Python】 ValueError: too many values to unpack 解决方案 在Python编程中&#xff0c;ValueError: too many values to unpack是一个常见的错误&#xff0c;通常出现在使用解包操作时。本文将深入探讨这个错误的原因、解决思路、解决方法&#xff0c;并通过具体案例帮助大…

【Python学习手册(第四版)】学习笔记09.3-Python对象类型-分类、引用VS拷贝VS深拷贝、比较、相等、真假值等详解

个人总结难免疏漏&#xff0c;请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 这部分稍杂&#xff0c;视需要选择目录读取。 主要讲的是对之前的所有对象类型作复习&#xff0c;以通俗易懂、由浅入深的方式进行介绍&#xff0c;所有对象类型…

『康之泉活水馆』手游:打造夏日梦幻水世界

设计背景 夏日的热浪与城市的喧嚣困扰着忙碌奔波的人群&#xff0c;康之泉活水馆&#xff0c;作为多功能的室内水上乐园&#xff0c;以其独特的魅力&#xff0c;成为夏日避暑的理想之地&#xff0c;让身心得以彻底放松。 设计理念 优联前端以康之泉品牌IP形象“康康”为灵感&a…

[GYCTF2020]FlaskApp (pin码,jinja2绕过注入)

题目就是flask 下面是判断模版注入的方法 a{*comment*}b和{{7*7}}base64编码后解码都报错no&#xff0c;无法判断模版引擎 直接用下jinja2的试一试&#xff0c;把编码后的密文拿去解码&#xff0c;payload&#xff1a; {{"".__class__mro(2)__subclasses__()}} 报…