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.rhkb.cn/news/452402.html

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

相关文章

其他css的用途

1.animation-fill-mode: backwards; //避免了在动画开始前元素的突然显现,动画必要。 2.用rem响应式字体大小,可以在html样式定义font-size?(例10px,62.5%(100%是16px))。然后样式就可以用rem代替px。 3.color: transparent;: 这行代码将文…

【动手学深度学习】7.3 网络中的网络(NiN)(个人向笔记)

LeNet,AlexNet和VGG都有一个共同的设计模型:通过一系列卷积层和汇聚层来提取空间结构特征,然后通过全连接层对特征的表征进行处理AlexNet和VGG对LeNet的改进主要是在于如何扩大和加深这两个模块网络中的网络(NIN)提出了:在每个像素…

炒股VS炒游戏装备,哪个更好做

这个项目,赚个10%都是要被嫌弃的 虽然天天都在抒发自己对股市的看法,但自己自始至终也没有买进任何一支股票。之所以对这个话题感兴趣,着实是因为手上的游戏搬砖项目也是国际性买卖,跟国际形势,国际汇率挂钩&#xff0…

【D3.js in Action 3 精译_034】4.1 D3 中的坐标轴的创建(中篇):定义横纵坐标轴的比例尺

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可…

H-TCP 的效率和公平性

昨晚带安孩楼下玩耍,用手机 desmos 作了一组 response curve 置于双对数坐标系: 长肥管道的优化思路都很类似,cwnd 增长快一点: BIC TCP:二分查找逼近 capacity;CUBIC TCP:上凸曲线逼近 capa…

探索光耦:光耦——不间断电源(UPS)系统中的安全高效卫士

在现代社会,不间断电源(UPS)系统已成为保障关键设备和数据安全的关键设施,广泛应用于企业数据中心、家庭电子设备等场景。UPS能在电力中断或波动时提供稳定电力,确保设备持续运行。而在这套系统中,光耦&…

一款Vue神器!支持拦截、跨域的超级Http请求插件,体积小,兼容全(带私活源码)

今天带来的是一款Vue神器Vue-resource 是那种体积小、兼容全、支持拦截、跨域的超级Http请求插件哦! 一、介绍 Vue-resource 是一个用于处理 HTTP 请求和响应的 Vue.js 组件库。它可以轻松地管理 HTTP 请求和响应,并提供了一些简单易用的 API。 Vue-r…

LeetCode刷题日记之贪心算法(四)

目录 前言柠檬水找零根据身高重建队列用最少数量的箭引爆气球总结 前言 在前几篇文章中,我们已经覆盖了贪心算法的基本思路和多种题型。这次我将继续分享几道具有挑战性的贪心题目。希望这篇文章能为大家带来更多解题灵感和技巧✍✍✍ 柠檬水找零 LeetCode题目链接…

javaWeb项目-ssm+vue宠物管理系统功能介绍

本项目源码(点击下方链接下载):java-ssmvue宠物管理系统实现源码(项目源码-说明文档)资源-CSDN文库 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:V…

Elasticsearch:Redact(编辑) processor

Redact 处理器使用 Grok 规则引擎来隐藏输入文档中与给定 Grok 模式匹配的文本。该处理器可用于隐藏个人身份信息 (Personal Identifying Information - PII),方法是将其配置为检测已知模式,例如电子邮件或 IP 地址。与 Grok 模式匹配的文本将被替换为可…

hdfs的分布式存储原理

1.想要把一个大文件存储到hdfs,首先进行划分,将文件划分为一个一个的block,这个block默认为512MB,可修改. 2.备份(也就是副本) 将文件划分后,一个block丢失则原来的大文件没有用了.为了确保文件的安全性,hdfs提供了副本,也就是备份,将文件划分之后hdfs默认将每一个block备份到…

xtrabackup工具介绍、安装及模拟数据库故障使用xtrabackup工具恢复数据等操作详细说明

一、xtrabackup工具介绍 Percona XtraBackup Percona XtraBackup是一个适用于MySQL的开源热备份工具,它在备份期间不锁表。它可以备份InnoDB、XtraDB以及MyISAM存储引擎的表。 2.4版本支持MySQL5.1、5.5、5.6以及5.7。 它有两个实用命令,分别是xtraback…

Python之briefcase生成安卓app解决按钮字母变大写问题

最近修改千纬认字&#xff0c;要在按钮上用拼音&#xff0c;发现拼音会自动变成大写的拼音加音调。 查了一下发现是android的问题。 Android学习之Button按钮在程序运行时全部变大写的处理 - 叶是风的眼泪 - 博客园 按照文中写的 在style.xml文件中加入&#xff1a;<item …

初始爬虫13(js逆向)

为了解决网页端的动态加载&#xff0c;加密设置等&#xff0c;所以需要js逆向操作。 JavaScript逆向可以分为三大部分&#xff1a;寻找入口&#xff0c;调试分析和模拟执行。 1.chrome在爬虫中的作用 1.1preserve log的使用 默认情况下&#xff0c;页面发生跳转之后&#xf…

【SPIE出版,EI检索稳定】2024年人机交互与虚拟现实国际会议(HCIVR 2024,11月15-17日)

2024年人机交互与虚拟现实国际会议&#xff08;HCIVR 2024&#xff09; 2024 International Conference on Human-Computer Interaction and Virtual Reality 官方信息 会议官网&#xff1a;www.hcivr.org 2024 International Conference on Human-Computer Interaction and …

Cuda By Example - 7 (光线追踪)

第6章以实现简单的光线追踪为例子&#xff0c;引入了Constant Memory和性能测量方法。 Constant Memory NVIDIA的硬件提供了64K的constant只读内存。定义constant内存的变量&#xff0c;使用关键字__constant__。从constant内存里读取出来的数据&#xff0c;可以缓存起来&…

【Ubuntu18.04命令行code打不开】可能的解决方法

目录 问题&#xff1a;命令行code打不开文件尝试① kimi是这么说的② sudo apt-get install apparmor apparmor_utils③ 在混沌的操作完以上一通后&#xff0c;sudo apt-get install snapd 我试了将近一个小时 : ( so depressed 我只是想用vscode打开个文件夹&#xff0c;我甚至…

Leetcode 1129. 颜色交替的最短路径

1.题目基本信息 1.1.题目描述 给定一个整数 n&#xff0c;即有向图中的节点数&#xff0c;其中节点标记为 0 到 n – 1。图中的每条边为红色或者蓝色&#xff0c;并且可能存在自环或平行边。 给定两个数组 redEdges 和 blueEdges&#xff0c;其中&#xff1a; redEdges[i] …

从零入门AI篡改图片检测(金融场景)#Datawhale十月组队学习

1.大赛背景 在全球人工智能发展和治理广受关注的大趋势下&#xff0c;由中国图象图形学学会、蚂蚁集团、云安全联盟CSA大中华区主办&#xff0c;广泛联合学界、机构共同组织发起全球AI攻防挑战赛。本次比赛包含攻防两大赛道&#xff0c;分别聚焦大模型自身安全和大模型生成内容…

安装好的 Nginx 增加 nginx-module-vts 模块

目录 1. nginx-module-vts 准备 2.查看已安装的的 nginx 编译参数 3. 重新编译 nginx 添加 nginx-module-vts 模块 4. 验证 1. nginx-module-vts 准备 # 解压 unzip nginx-module-vts-master.zip # 将解压包移动到/usr/local/目录 mv nginx-module-vts-master /usr/local/ …