QUIC协议连接详解(二)

news2025/1/24 5:48:32

目录

一:RTT解释

二:QUIC 1-RTT连接

三:QUIC 0-RTT连接


一:RTT解释

        在介绍QUIC协议的连接之前先科普一下什么是RTT。RTT是Round-Trip Time的英文缩写,翻译过来就是一趟来回的时间即往返时延。时间计算即从发送方发送数据开始,到发送方接收到来自接收方的确认消息所经过的时间。

        RTT时延通常由三部分决定:链路的传播时间、末端系统的处理时间、路由器等网络中间节点的缓存和排队时间。正常情况下报文的传输时间和在应用处理时间相对固定,在网络拥堵情况下会出现RTT时延的波动。

        RTT是衡量网络传输性能的重要指标之一,能够反映出数据在网络中传输的速度和稳定性。通常情况下,RTT越短,网络传输的速度就越快,反之则越慢。因此,通过监测TCP中的RTT时延,可以初步判断网络的性能如何。但需要注意的是,RTT时延只是一个指标,要全面评估网络性能还需要结合其他指标进行综合分析。

二:QUIC 1-RTT连接

我们先看看Google官网的关于QUIC握手的流程图

详细步骤如下:

(1) 客户端判断本地是否已有服务器的全部配置参数,如果有则直接跳转到(5)发送client hello,否则继续

(2) 客户端向服务器发送inchoate client hello(CHLO)消息

(3) 服务器收到CHLO,回复rejection(REJ)消息,其中包含服务器的server config ,long-term DH public key 等

(4) 客户端收到REJ,提取并认证和存储服务器server config

(5) 客户端向服务器发送client hello消息,开始准备发送数据包,消息中包括客户端的DH public vlaue。此时客户端可以根据server config参数和自己的public value,计算出初始密钥。

(6) 服务器收到 client hello,如果不同意连接就回复REJ,同(3);如果同意连接,根据客户端的public value计算出初始密钥initial key,并回复server hello(SHLO)消息,SHLO使用initial key加密,并且其中包含服务器的临时的DH public value

(7) 客户端收到服务器的回复,如果是REJ则情况同(4);如果是SHLO,则尝试用初始密钥解密,提取出ephemeral DH public value

(8) 客户端和服务器根据得到的ephemeral public key, 计算出新的forward-secure key

(9) 双方更换为使用 forward-secure key 通信,QUIC握手过程完毕。之后会话密钥更新的流程与以上过程类似。

QUIC 1-RTT 流程图

三:QUIC 0-RTT连接

1-RTT握手建立成功后,QUIC的握手只需要0-RTT了。完整的Client Hello不仅可携带的与初始的Client Hello相同的Tag,也会包含SCID等信息

下面给出完整的交互图

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

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

相关文章

工作每天都在用的 DNS 协议,你真的了解么?

♥ 前 言 我们经常访问一些网址的时候,浏览器里输入类似于 www.baidu.com 这样的地址,那么在浏览器里输入这个地址---> 百度服务器给我们返回这个百度的页面,中间的过程是什么样的呢? 带着这个问题,我们一起来解…

答题题库模拟考试流量主小程序源码开发

一款专门为练题开发的题库答题考试模拟小程序,适用于多种用户群体,驾照考题、各种职业考试、英语四六级等等。接入流量主功能,运营方可以更灵活的配置收益方式。 小程序核心功能介绍: 1、多题型支持,判断题、单选题…

记一次Nacos线程数飙升排查

近日有个项目用到了Nacos做注册中心。运行一段时间发现Nacos服务的线程数达到了1k。这肯定是不正常的。 环境: Nacos-server 2.2.3docker-compose编排部署 nacos:image: "nacos/nacos-server:latest"environment:- JAVA_OPTS-XX:MetaspaceSize128m -XX:…

PLC-Recorder离线分析软件Ana里为什么不能显示变量的编号?

在PLC-Recorder在线软件里,大家可以在曲线上找到变量的编号(由通道编号、变量类型、同类型序号组成)。这个编号也是各软件识别变量的唯一标识。在变量和PLC很多时,可以方便地找到对应的PLC,如下: 有朋友问&…

【QGIS】Openstreetmap获取路网数据

目录 一、从Openstreetmap获取路网数据 1.1 根据城市名获取对应ID 1.2 根据城市ID获取路网数据 二、下载安装QGIS 2.1 下载QGIS 2.2 安装QGIS 2.3 页面语言设置 三、将获取到的osm文件拖入QGIS 一、从Openstreetmap获取路网数据 在大多数研究中,经常使用到的…

类欧笔记存档

电子版:https://blog.csdn.net/zhangtingxiqwq/article/details/132718582

【JavaScript手撕代码】instanceof

目录 instanceof手写详解 instanceof 手写 /* * param {Object} obj 需要判断的数据 * param {Object} constructor 这里请注意 * return {Boolean} **/ function myInstanceof(obj, constructor){if (![function, object].includes(typeof obj) || obj null) return falsel…

第 362 场 LeetCode 周赛题解

A 与车相交的点 数据范围小直接暴力枚举 class Solution { public:int numberOfPoints(vector <vector<int>> &nums) {unordered_set<int> vis;for (auto &p: nums)for (int i p[0]; i < p[1]; i)vis.insert(i);return vis.size();} };B 判断能否…

操作系统之课后习题——引论

&#xff08;一&#xff09;简答题 1.在计算机系统上配置OS的目标是什么&#xff1f;作用主要表现在哪几个方面&#xff1f; 答&#xff1a; 在计算机系统上配置OS&#xff0c;主要目标是实现&#xff1a;方便性、有效性、可扩充性和开放性&#xff1b; OS的作用主要表现在以下…

腾讯云CVM标准型S4服务器性能测评_CPU_网络收发包PPS详解

腾讯云服务器CVM标准型S4性能测评&#xff0c;包括S4云服务器CPU型号、处理器主频、网络收发包PPS、队列数、出入内网带宽能力性能参数说明&#xff0c;标准型 S4 实例是次新一代的标准型实例&#xff0c;CPU采用2.4GHz主频的Intel Xeon Skylake 6148处理器&#xff0c;腾讯云百…

2024浙大MEM提面结果已出,笔试过线率让人堪忧

众所周知&#xff0c;浙大MEM项目对于申请提前批面试并获得“优秀”资格的考生提供了“联考笔试达到国家线&#xff0c;政治成绩合格即可拟录取”的优惠政策。这一政策也成为近几年每年提面申请人数超过1000名考生参加提前批面试的重要推动力。今天&#xff0c;考生们终于迎来了…

字符编码基本介绍

基础概念 字符 任何一个文字或符号都是一个字符&#xff0c;不同的编码导致一个字符所占的内存不同。字符集 字符的集合就叫字符集。字符编码(charset encoding&#xff0c;简写为 encoding) 1. 定义字符集中的字符如何编码为特定的二进制数。2. 字符集和字符编码一般一一对…

企业架构LNMP学习笔记36

1、MySQL的负载均衡&#xff1a; 1&#xff09;在各个数据库授权远程登录用户&#xff1b; 2&#xff09;在各个数据库创建不同的识别数据库&#xff1b; 3&#xff09;配置转发规则&#xff1b; 4&#xff09;查看测试&#xff1b; 1、在各个数据库授权远程登录用户&#…

Qt6中使用Qt Charts

官方文档&#xff1a;Qt Charts 6.5.2 如果你是使用 CMake 构建的&#xff0c;则应在 CMakeLists.txt 中添加如下两行代码&#xff1a; find_package(Qt6 REQUIRED COMPONENTS Charts)target_link_libraries(mytarget PRIVATE Qt6::Charts) 其中 mytarget 为你的项目名称。一共…

管理类联考——数学——汇总篇——知识点突破——浓度

&#x1f44a; 溶液溶质溶剂&#xff1b;浓度 溶质 溶液 \frac{溶质}{溶液} 溶液溶质​100% 溶质 溶质 溶剂 \frac{溶质}{溶质溶剂} 溶质溶剂溶质​100%。重要等量关系 ①浓度不变准则&#xff1a;将溶液分成若干份&#xff0c;每份的浓度相等&#xff0c;都等于原来溶液的浓…

Python教程(13)——Python运算符详解|算术运算符|比较运算符|逻辑运算符|位运算符

Python运算符 算术运算符比较运算符赋值运算符逻辑运算符逻辑运算类型逻辑运算本质 位运算符 Python的运算符是用于执行各种操作的符号或符号组合。它们用于操作数据并进行算术、比较、逻辑和其他类型的运算。我们所熟知的加减乘除也是运算符中的一种。Python提供了多种类型的运…

无涯教程-JavaScript - COUPNCD函数

描述 COUPNCD函数返回一个数字,该数字表示结算日期之后的下一个息票日期。 语法 COUPNCD (settlement, maturity, frequency, [basis])争论 Argument描述Required/OptionalSettlement 证券的结算日期。 证券结算日期是指在发行日期之后将证券交易给买方的日期。 RequiredMa…

spring入门之环境搭建!!!

1.创建一个maven项目。 不会配置maven环境的可以看这里&#xff1a;maven的下载安装与配置环境变量&#xff01;&#xff01;&#xff01;&#xff08;全网最详细&#xff09;_明天更新的博客-CSDN博客 2.引入依赖 <dependencies><dependency><groupId>or…

Python自动化测试框架【生成测试报告】

如何才能让用例自动运行完之后&#xff0c;生成一张直观可看易懂的测试报告呢&#xff1f; 小编使用的是unittest的一个扩展HTMLTestRunner 环境准备 使用之前&#xff0c;我们需要下载HTMLTestRunner.py文件 点击HTMLTestRunner后进入的是一个写满代码的网页&#xff0c;小…

MySQL (2) DQL

目录 操作须知 1 单表查询 1.1 范围查询 1.2 模糊查询 1.3 去重查询 1.4 正则查询 1.5 替换查询 1.6 排序查询 1.7 聚合分组查询 1.7.1 聚合查询(只有1行) 1.7.2 分组查询(针对"聚合查询") 1.8 分页查询 1.9 拼接查询 2 多表查询 2.1 内连接 2.2 外连…