QUIC 协议的优势

QUIC 协议的优势包括:

  • 快速建立连接:将传输层和加密层的握手合并,减少了连接建立的延迟。QUIC 建连时间大约为 0~1RTT,相比 HTTPS 的 3RTT 建连,具有极大的优势。客户端第一次建连的握手协商需 1RTT,而已建连的客户端重新建连可以使用之前协商好的缓存信息来恢复 TLS 连接,仅需 0RTT 时间。
  • 可扩展性强:拥有 32 位的版本协商扩展位,有较多空间部署新版本,厂商也可以利用这些空间定义自己的专属版本。能够在应用层实现,可更快地进行更新,服务可以快速演进,新特性每天都能得到部署。
  • 降低对丢包的敏感度:使用类似 HTTP/2 的多路复用模式,可以同时支持多个数据流。如果一个数据流发送错误导致丢包,其他数据流会继续发送数据包,不会阻塞传输,解决了 TCP 的队头阻塞问题。
  • 切换网络时的性能提升:支持连接迁移,用一个 connection ID 标识连接,当源的 IP 或端口发生变化时,只要 connection ID 一致,连接都可以保持,不会发生切断重连,实现无缝连接。比如在移动端使用时,当网络环境发生变化(如从 Wi-Fi 切换到移动数据网络),QUIC 可以在不中断连接的情况下继续传输数据,避免了因网络切换而导致的延迟和数据丢失。
  • 提升的安全性和隐私保护:在传输层中内置了加密功能,从而验证整个负载(包括 header),默认支持安全的 TLS,意味着端到端完全安全。
  • 细致的流量控制:从不同粒度进行流量控制,即基于连接的流量控制与基于流的流量控制。
  • 更快的特性迭代速度:在用户态实现,支持新特性的快速演进,能支持可插拔的拥塞控制算法,不仅能够在现有的成熟拥塞控制算法(如 cubic、bbr 等)之间进行轻易切换,而且还能快速部署验证基于 AI 的拥塞控制算法(例如基于强化学习的拥塞控制算法)。
  • 多路径传输提高带宽利用率:多路径 QUIC(MPQUIC)可以让一个 QUIC 连接同时利用多条链路来进行数据传输,从而最大化可用带宽的利用率,也提高了连接的容错能力(其中一条链路出现故障不会影响传输)。
  • 按需进行一定的扩展:除了与 QUIC 本身特性密切相关的标准外,还有许多关于 QUIC 的扩展特性的标准或草案,为 QUIC 自身特性注入新的血液,也为 QUIC 的应用带来了更广阔的想象。

QUIC 协议的劣势主要有:

  • 在网络质量较好的链路上表现可能不如 TCP:在高带宽、低时延和低丢包率的网络中,QUIC 的性能有时还不如 TCP。同等流量下,QUIC 的 CPU 消耗高于使用了 SSL 的 TCP,尽管经过了优化,QUIC 的 CPU 消耗率仍比 TCP/SSL 要高不少。这主要是因为 QUIC 底层使用 UDP 进行传输,而内核中设计的 UDP 收发包机制存在一定问题,影响了 QUIC 报文的传输性能;QUIC 内部利用 TLS 对报文进行了加密,复杂的加密过程对 CPU 的性能损耗较大;QUIC 把包括 ACK 在内的所有报文先收上来放到用户层后再进行处理,导致了额外的用户级和内核级的上下文切换以及数据从内核转移至用户的额外拷贝;国内不少运营商会对 UDP 流量进行限速处理,UDP 五元组变化频繁也会给某些状态设备造成压力。
  • 对流量管理和分析不太友好:由于使用了 TLS1.3 作为安全性保证以及 UDP 作为底层传输协议,这让 Wireshark、Zeek 等抓包及网络安全分析工具无法获取到 QUIC 报文携带的关键信息,会给想要过滤 QUIC 流量的用户造成一定影响。不过,目前较新版本的 Wireshark 已经支持通过导入密钥日志文件来抓取 QUIC 报文并进行解密,QUIC 协议也自带了 qlog 这一机制(目前还处于草案阶段)来方便使用者进行调试并观察 QUIC 报文交互过程。
  • 迁移 APP 面临巨大挑战:将 APP 从 HTTP/2 迁移到 HTTP/3(或者从 TCP 迁移到 UDP)需要将整个应用层实现和传输层实现转移到 UDP,并在服务端和客户端构建全新的解决方案,对于资源相对有限的小厂商而言挑战较大。
  • QUIC 包含 TCP 回退:基于 QUIC 的 APP 必须设计成能够回退到 TCP,以防万一,这意味着开发者要同时开发和维护两个不同的版本,负担较重。
  • 不具备某些 TCP 特性:例如不支持成块传输(chunked transfer,即将视频切片分割为小块的能力),限制了用于基于 QUIC 的视频传输的协议数量。
  • 可能需要更高的 CPU 使用率:QUIC 所需的 HTTP/3 在客户端和服务端可能占用了更多的 CPU 资源。不过,谷歌认为 QUIC 有助于延长电池寿命。随着该协议进入主流技术栈,这一问题预计不会有太大影响。
  • 采用受限:几乎每个浏览器都接受使用 QUIC 进行简单的网页浏览,但除了 chromium,没有浏览器将它设置为默认选项。在流媒体领域,除了谷歌和 facebook(现更名为 meta)之外,少有公司使用 QUIC。只有少数 CDN 提供商支持 QUIC,且一些只是验证了 QUIC 的实现,并未为大规模部署做好准备。这就带来了问题:如果推出使用 multi-CDN 并基于 QUIC 的新服务,那么只有部分访问能使用 QUIC,因为难以向用户证明它对用户体验的显著影响。
  • 网络防火墙可能拦截:网络防火墙无法解密 QUIC 流量来检查数据包,所以潜在的恶意流量可能没有被标准安全功能检测出来而进入网络。一些安全厂商通常会在端口 80(web 服务器)和 443(TSL)拦截 QUIC 数据包(认为它们包含恶意软件),迫使客户端回退使用 HTTP/2 和 TCP 协议。但这种操作通常不会显著影响内容用户体验,因为正确实现的流媒体服务会默认回退到 TCP+TLS。不过这可能会阻止率先部署 QUIC 的想法,只有解决这一挑战,QUIC 才能被各大企业广泛接受。

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

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

相关文章

Linux 和Windows创建共享文件夹实现文件共享

直接开整 1.Windows下创建共享文件夹share右击-》属性—》共享-》选择所有人-》点击共享 2.共享创建完成后可以使他的共享网络地址或者Windows ip地址-推荐使用Windows ip地址有时候 不知道什么原因他Linux解析不了网络地址 共享网络地址 —共享文件夹share 右击-》属性—》共…

扫普通链接二维码打开小程序

1. 2.新增规则(注意下载文件到跟目录下,需要建个文件夹放下载的校验文件) 3.发布 ps:发布后,只能访问正式版本。体验版本如果加了 测试链接http://xxx/xsc/10 那么http://xxx/xsc/aa.....应该都能访问 例如aa101 aa…

CMOS晶体管的串联与并联

CMOS晶体管的串联与并联 前言 对于mos管的串联和并联,一直没有整明白,特别是设计到EDA软件中,关于MOS的M和F参数,就更困惑了,今天看了许多资料以及在EDA软件上验证了电路结构与版图的对应关系,总算有点收…

VScode中CMake无高亮(就是没有补全的提示)

在我学的过程中我发现我的CMake是这样的,如下图 但在教学视频里是这样的(如下图) 这非常的难受,所以疯狂的找,最后是CMake报错有 原因就是:本地没有配置环境变量,解决方法是下一个cmake然后直接…

STM32-CubeIDE用串口通讯

USART串口通讯 一、轮询模式 1.设置所接引脚为UART异步模式 选择完成CTRLS保存。 2.编写测试代码(自动发送hello world) 在mian函数里面编写代码 原函数 调用函数,需要数据类型一致,使用函数通过串口发送数组里面的数据 打开串…

延迟队列实现及其原理详解

1.绪论 本文主要讲解常见的几种延迟队列的实现方式,以及其原理。 2.延迟队列的使用场景 延迟队列主要用于解决每个被调度的任务开始执行的时间不一致的场景,主要包含如下场景: 1.比如订单超过15分钟后,关闭未关闭的订单。 2.比如用户可以…

基于springboot+微信小程序校园自助打印管理系统(打印1)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于springboot微信小程序校园自助打印管理系统实现了管理员、店长和用户。管理员实现了用户管理、店长管理、打印店管理、打印服务管理、服务类型管理、预约打印管理和系统管理。店长实现…

vue3中报has no default export错误

原因 在同时使用Vetur和Volar插件的Vue2与Vue3项目中,遇到Module has no default export错误。通过在VSCode设置中将vetur.validation.script设为false,可以消除该报错,不影响实际运行。 解决办法 "vetur.validation.script": fa…

【Linux线程】Linux线程编程基础:概念、创建与管理

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:Linux “ 登神长阶 ” 🌹🌹期待您的关注 🌹🌹 ❀Linux多线程 📒1. 线程概念📜2. 进程VS线程📚3. 线程控制…

算法魅力-双指针的实战

目录 1.双指针的介绍 1. 左右指针(对撞指针) 2. 快慢指针 2.题目练习讲解 2.1 移动零 算法思路 代码展示 画图效果效果 2.2 复写零 算法思路 代码展示 2.3 快乐数 算法思路 代码展示 2.4 盛最多水的容器 算法思路 代码展示 结束语 1.双指针的…

大模型带来新安全机遇

当前网络空间安全面临攻击隐蔽难发现、数据泄露风险高和违法信息审核难等挑战。大模型展现出强大的信息理解、知识抽取、意图和任务编排等能力,为网络空间安全瓶颈问题提供了新的解决思路和方法。与此同时,大模型发展也催生了恶意软件自动生成、深度伪造…

架构师之路-学渣到学霸历程-22

NFS文件共享服务器 今天开始了云计算-SRE架构师的第二个阶段, 第二阶段就是服务阶段了;第一个分享的就是NFS服务; 文件共享服务; 早上就了解一下NFS原理; 1、NFS文件共享服务器 NFS:就是network file sy…

【YOLO学习】YOLOv5详解

文章目录 1. 网络结构2. 结构整体描述2.1 输入端2.2 Backbone2.3 Neck2.4 Head 3. 模块细节3.1 Focus模块3.2 SPPF3.3 Bounding Box损失函数 4. 训练策略 1. 网络结构 1. 目标检测的模型框架大体都是以下图示这样的结构: 2. 关于 YOLOv5 的网络结构其实网上相关的讲…

数据结构 - 队列

队列也是一种操作受限的线性数据结构,与栈很相似。 01定义 栈的操作受限表现为只允许在队列的一端进行元素插入操作,在队列的另一端只允许删除操作。这一特性可以总结为先进先出(First In First Out,简称FIFO)。这意味…

R语言机器学习算法实战系列(八)逻辑回归算法 (logistic regression)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍教程下载数据加载R包导入数据数据预处理数据描述数据切割构建模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性保存模型总结系统信息介绍 …

MySQL数据库和表的基本操作

文章目录 一、数据库的基础知识 背景知识数据库的基本操作二、数据类型 字符串类型数值类型日期类型三、表的基本操作 创建表查看表结构查看所有表删除表 一、数据库的基础知识 背景知识 MySQL是一个客户端服务器结构的程序 主动发送数据的这一方,客户端(client…

“智改数转”转了什么?

万界星空科技专门针对数字化改造申报的MES系统具有显著的技术优势和实施效果,能够为制造型企业提供全方位、高效、可靠的数字化转型支持。项目合作可以私信或者百度上海万界星空科技官网。 “智改数转”是一个综合性的过程,涉及企业多个方面的转型和升…

【python实战】利用代理ip爬取Alibaba海外版数据

引言 在跨境电商的业务场景中,数据采集是分析市场、了解竞争对手以及优化经营策略的重要环节。然而,随着越来越多企业依赖数据驱动决策,许多跨境电商平台为了保护自身数据,采取了更严格的防护措施。这些平台通过屏蔽大陆IP地址或部…

【Spring声明式事务失效的12种场景测试】

文章目录 一.Spring声明式事务是什么?二.Spring事务失效的12种场景1.访问权限问题 小结 一.Spring声明式事务是什么? Spring声明式事务是一种通过配置的方式管理事务的方法,它通过注解或XML配置来声明哪些方法需要事务管理,从而将…

JRT怎么从IRIS切换到PostGreSql库

1.执行M导出得到建库脚本文件 2.下载生成的脚本到本地D盘 3.修改驱动为PostGreSql 4.修改连接串 5.到PostGreSql里面创建一个jrtlis的数据库,模式为jrt 6.启动网站点击导入脚本按钮 导入完成了就可以正常使用PostGreSql库了