当前位置: 首页 > article >正文

[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.kler.cn/a/380021.html

相关文章:

  • 为什么要使用Docker?
  • 【Centos】在 CentOS 9 上使用 Apache 搭建 PHP 8 教程
  • 网络安全法详细介绍——爬虫教程
  • #【YashanDB认证】#YCA的学习过程总结-之崖山数据库初体验
  • <项目代码>YOLOv8 夜间车辆识别<目标检测>
  • w~Transformer~合集8
  • 重构代码之重复的观察数据
  • C语言用GNU源码编译建构系统工具(GNU BUILD SYSTEM)编译创建动态库
  • 微服务系列二:跨微服务请求优化,注册中心+OpenFeign
  • 输电线路绝缘子缺陷分割系统:轻松训练模式
  • 【matlab版】如何估算波形信号的幅值、频率与相位
  • Docker BUG排查
  • Docker 部署 Java 项目实践
  • Windows下FFmpeg集成metaRTC实现webrtc推拉流的例子
  • 深度学习基础(2024-11-02更新到图像尺寸变换 与 裁剪)
  • js实现漂亮的注册页面(js动态注册页面)
  • 使用 Nginx 部署 Python 项目
  • 【系统设计】高效的分布式系统:使用 Spring Boot 和 Kafka 实现 Saga 模式
  • 【STM32】STM32G431RBT6单片机的几种烧录方式
  • golang函数类型Function Types
  • 废品回收小程序搭建,互联网回收行业的特点
  • 如何更改Android studio的项目存储路径
  • 强网杯-PWN-baby_heap
  • 清单文件 AndroidManifest.xml
  • 操作系统同步机制(锁、信号量等)
  • 基于大数据的热门旅游景点数据分析系统的设计与实现