[QUIC] 版本协商

QUIC 兼容的版本协商

QUIC的核心规范中没有定义一个完整的版本协商机制,只是提供了一个拒绝客户端使用的版本的方法。

这里我们定义一种新的机制来让服务器端和客户端进行版本协商。并且如果客户端选择的版本和最终协商出来的版本之间的第一组包结构是互相兼容的,这里的协商机制可以在原有 QUIC 流程上完成,不需要额外的客户端服务器端交互。


定义


  • 第一组包 (first flight of packets): 是指由客户端创建和发送的用于初始化一个 QUIC 链接的那些 QUIC 包, 并且在此之前,客户端没有从服务器端收到过任何 QUIC 包.

  • 客户端选择的版本(client’s Chosen Version): 在第一组包中使用的 QUIC 版本

  • 原始版本(Original Version) : 是指客户端在发送它的第一个 QUIC 包使用的 QUIC 版本

  • 协商版本(Negotiated Version): 在版本协商流程完成后, 当前链接上使用的版本信息。

  • 可接受的版本(Acceptable Versions): 是指那些服务器支持的协议版本,如果客户端在它的第一组包中便使用其中的版本,那么该链接就可以直接用这个版本了,无需再协商。

  • 提供的版本(Offered Versions): 是指那些如果客户端的版本号服务器端不支持时,我们附带在 Version Negotiation 包中的版本号。 这里的版本号通常和可接受的版本号是相同的.


版本协商机制


这里我们定义两种版本协商的方法:

  1. “不兼容的”(incompatible): 它需要客户端和服务器端进行一次额外的交互,但是适用于所有 QUIC 版本
  2. “兼容的”(compatible): 它不需要客户端和服务器端进行额外的交互,但是只适用于互相兼容的 QUIC 版本之间。

开始时, 客户端选择一个原始版本(Original Version), 然后创建和发送它的第一组 QUIC 包用于初始化 QUIC 链接过程。 这里第一组包都是用长头包(Long header packets), 这些包中包含相应的版本号,其中还有一个 Version Information

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

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

相关文章

JavaWeb复习

在网络应用程序中有两种基本的结构,即C/S和B/S,对于c/s程序分为客户机和服务器两层,把应用软件按照在客户机端(通常由客户端维护困难),通过网络与服务器进行相互通信。B/S结构却不用通知客户端安装某个软件,内容修改了…

qt获取本机IP和定位

前言: 在写一个天气预报模块时,需要一个定位功能,在网上翻来翻去才找着,放在这里留着回顾下,也帮下有需要的人 正文: 一开始我想着直接调用百度地图的API来定位, 然后我就想先获取本机IP的方…

python爬取旅游攻略(1)

参考网址: https://blog.csdn.net/m0_61981943/article/details/131262987 导入相关库,用get请求方式请求网页方式: import requests import parsel import csv import time import random url fhttps://travel.qunar.com/travelbook/list.…

Oracle OCP认证考试考点详解082系列12

题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 56. 第56题: 题目 解析及答案: 关于企业管理器(EM)Express,以下哪两个陈述是…

Postgresql源码(137)执行器参数传递与使用

参考 《Postgresql源码(127)投影ExecProject的表达式执行分析》 0 总结速查 prepare p_04(int,int) as select b from tbl_01 where a $1 and b $2为例。 custom计划中,在表达式计算中使用参数的值,因为custom计划会带参数值&…

SPI通信详解-学习笔记

参考原文地址 SPI:高速、全双工,同步、通信总线 SPI主从模式 SPI分为主、从两种模式,一个SPI通讯系统需要包含一个(且只能是一个)主设备,一个或多个从设备。提供时钟的为主设备(Master&#xff…

Day102漏洞发现-漏扫项目篇Poc开发Yaml语法插件一键生成匹配结果交互提取

知识点: 1、Nuclei-Poc开发-环境配置&编写流程 2、Nuclei-Poc开发-Yaml语法&匹配提取 3、Nuclei-Poc开发-BurpSuite一键生成插件 Nuclei-Poc开发-环境配置&编写流程 1、开发环境:VscodeYaml插件 Visual Studio Code - Code Editing. R…

Redis 初学者指南

Redis 初学者指南 1. 什么是 Redis?2. Redis 的基本概念3. 安装 Redis3.1 使用 Docker 安装3.2 从源码编译安装 4. 基本操作4.1 启动 Redis 服务4.2 连接 Redis 客户端4.3 常用命令 5. Redis 的数据结构5.1 字符串5.2 列表5.3 集合5.4 散列5.5 有序集合 6. 高级特性…

如何封装一个axios,封装axios有哪些好处

什么是Axios Axios 是一个基于 Promise 的 HTTP 客户端,用于在浏览器和 Node.js 中发送异步网络请求。它简化了发送 GET、POST、PUT、DELETE 等请求的过程,并且支持请求拦截、响应拦截、取消请求和自动处理 JSON 数据等功能。 为什么要封装Axios 封装…

Node.js 入门指南:从零开始构建全栈应用

​🌈个人主页:前端青山 🔥系列专栏:node.js篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来node.js篇专栏内容:node.js-入门指南:从零开始构建全栈应用 前言 大家好,我是青山。作…

WordPress网站添加嵌入B站视频,自适应屏幕大小,取消自动播放

结合bv号 改成以下嵌入式代码&#xff08;自适应屏幕大小,取消自动播放&#xff09; <iframe style"width: 100%; aspect-ratio: 16/9;" src"//player.bilibili.com/player.html?isOutsidetrue&bvidBV13CSVYREpr&p1&autoplay0" scrolling…

大模型应用系列:Query 变换的示例浅析

【引】NLP中的经典组件在大模型应用中还有效么&#xff1f;大模型对自然语言处理中的典型任务有什么影响么&#xff1f; RAG应用通过分割文档、嵌入向量化并检索高语义相似性的块来响应用户问题&#xff0c;但面临文档块不相关、用户用词不当及结构化查询需求等问题。若RAG无法…

【Oracle】空格单字符通配符查询匹配失败

问题 在进行模糊查询的时候&#xff0c;通过全局任意字符串匹配出含有两个字刘姓的人&#xff0c;但是通过刘_不能匹配出结果。 解决 检查后发现&#xff0c;姓名中包含空格 SELECT * FROM student WHERE TRIM(sname) LIKE 刘_;第一种解决方案就是查询的时候进行去空格处理&a…

讲讲⾼并发的原则?

大家好&#xff0c;我是锋哥。今天分享关于【讲讲⾼并发的原则&#xff1f;】面试题。希望对大家有帮助&#xff1b; 讲讲⾼并发的原则&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 高并发是指系统在同一时间内能够处理大量请求的能力。要有效地管理…

鸿蒙进阶-AlphabetIndexer组件

大家好&#xff0c;这里是鸿蒙开天组&#xff0c;今天我们来学习AlphabetIndexer组件&#xff0c;喜欢就点点关注吧&#xff01; 通过 AlphabetIndexer 组件可以与容器组件结合&#xff0c;实现导航联动&#xff0c;以及快速定位的效果 核心用法 AlphabetIndexer不是容器组件…

WebGL(Web Graphics Library)

WebGL&#xff08;Web Graphics Library&#xff09;是一种基于 JavaScript 的 API&#xff0c;允许在网页上渲染高性能的 2D 和 3D 图形。它利用计算机的 GPU 来实现硬件加速&#xff0c;因此适合创建游戏、数据可视化和交互式应用程序。 WebGL 的基本概念&#xff1a; 上下文…

nvm使用的方法

nvm——Node版本管理工具_node管理工具-CSDN博客

第四部分 可扩展的架构实践

第四部分 可扩展的架构实践 19. 第19章 对架构影响重大的需求20. 第20章 设计架构21. 第21章 评估架构22. 第22章 记录架构23. 第23章 管理架构债

ubuntu交叉编译expat库给arm平台使用

1.下载expat库源码: https://github.com/libexpat/libexpat/release?page=2 wget https://github.com/libexpat/libexpat/release/download/R_2_3_0/expat-2.3.0.tar.bz2 下载成功: 2.解压expat库,并进入解压后的目录: tar xjf expat-2.3.0.tar.bz2 cd expat-2.3.0 <…

Python中的PDF处理工具:PyPDF2和ReportLab使用指南

Python中的PDF处理工具&#xff1a;PyPDF2和ReportLab使用指南 在日常工作和项目中&#xff0c;PDF 文件处理是个常见需求&#xff0c;不论是合并报告、加密文档、填充表单&#xff0c;还是生成发票。Python 中有许多用于操作 PDF 文件的库&#xff0c;其中 PyPDF2 和 ReportL…