ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于 QUIC 的一些个人理解

2022-03-21 12:37:22  阅读:255  来源: 互联网

标签:Version QUIC 个人 Connection 理解 版本 长度 ID


RFC_8999: QUIC 的版本无关属性

QUIC 长包头

格式:

 1 Long Header Packet {
 2   Header Form (1) = 1,
 3   Version-Specific Bits (7),
 4   Version (32),
 5   Destination Connection ID Length (8),
 6   Destination Connection ID (0..2040),
 7   Source Connection ID Length (8),
 8   Source Connection ID (0..2040),
 9   Version-Specific Data (..),
10 }

图示:

QUIC 长包头图示

解析:

Header Form(首部形式):

    • 长度:1 位
    • 值:1
    • 用于区分包的类型。

Version-Specific Bits(特定于版本的位):

    • 长度:7 位
    • 值特定于版本

Version(版本):

    • 长度:32 位(4 字节)
    • QUIC 端点可以使用此值来标识 QUIC 版本。
    • 值为 0x00000000 的 Version 字段保留用于版本协商,所有其他值都可能有效。
    • 当一个 QUIC 端点接收到一个带有长包头和一个它不理解或不支持的版本的数据包时,可能会发送一个版本协商数据包作为响应。

Destination Connection ID Length(目标连接 ID 长度):

    • 长度:8 位
    • 无符号整型
    • 定义了目标连接 ID 字段(Destination Connection ID)的字节长度。

Destination Connection ID(目标连接 ID):

    • 长度:0 ~ 2040 位(即 0 ~ 255 字节)
    • 不透明
    • 连接 ID 的主要功能是确保较低协议层(UDP、IP 及以下)的寻址更改不会导致 QUIC 连接的数据包被传送到错误的 QUIC 端点。
    • 端点和支持它们的中介使用连接 ID 来确保每个 QUIC 数据包都可以传递到端点的正确实例。
    • 每个端点使用特定于版本的方法选择连接 ID,同一 QUIC 连接的数据包可能使用不同的连接 ID。

Source Connection ID Length(源连接 ID 长度):

    • 长度:8 位
    • 无符号整型
    • 定义了源的连接 ID 字段(Source Connection ID)的字节长度。 

Source Connection ID(源连接 ID):

    • 长度:0 ~ 2040 位
    • 不透明

 Version-Specific Data(特定于版本的数据):

    • 长度:任意
    • 包含特定于版本的内容

QUIC 短包头

格式:

1 Short Header Packet {
2     Header Form (1) = 0,
3     Version-Specific Bits (7),
4     Destination Connection ID (..),
5     Version-Specific Data (..),
6 }

图示:

QUIC 短包头图示

解析:

Header Form(首部形式):

    • 长度:1 位
    • 值:1
    • 用于区分包的类型。

Version-Specific Bits(特定于版本的位):

    • 长度:7 位
    • 值特定于版本

Destination Connection ID(目标连接 ID):

    • 长度:0 ~ 2040 位(即 0 ~ 255 字节)
    • 不透明

 Version-Specific Data(特定于版本的数据):

    • 长度:任意
    • 包含特定于版本的内容

QUIC 版本协商包

格式:

 1 Version Negotiation Packet {
 2     Header Form (1) = 1,
 3     Unused (7),
 4     Version (32) = 0,
 5     Destination Connection ID Length (8),
 6     Destination Connection ID (0..2040),
 7     Source Connection ID Length (8),
 8     Source Connection ID (0..2040),
 9     Supported Version (32) ...,
10 }

图示:

QUIC 版本协商包示例

解析:

版本协商包可以看作长包头的实例。

Header Form(首部形式):

    • 长度:1 位
    • 值:1
    • 用于区分包的类型。

Unused(未使用):

    • 长度:7 位
    • 在发送时可置为任意值,在接受时必须忽略。

Version(版本):

    • 长度:32 位(4 字节)
    • 值:0x00000000(全部置 0)

Destination Connection ID Length(目标连接 ID 长度):

    • 长度:8 位
    • 无符号整型
    • 定义了目标连接 ID 字段(Destination Connection ID)的字节长度。

Destination Connection ID(目标连接 ID):

    • 长度:0 ~ 2040 位(即 0 ~ 255 字节)
    • 不透明

Source Connection ID Length(源连接 ID 长度):

    • 长度:8 位
    • 无符号整型
    • 定义了源的连接 ID 字段(Source Connection ID)的字节长度。 

Source Connection ID(源连接 ID):

    • 长度:0 ~ 2040 位
    • 不透明
    • 端点必须使用接收到的分组的源连接 ID 作为自己的目标连接 ID。
    • 端点必须使用接收到的分组的目标连接 ID 作为自己的源连接 ID,该字段最初由客户端随机选择。
    • 由于连接 ID 不透明,故通过回显源连接 ID 和目标连接 ID,客户端可以确保服务器收到了包,并且确保版本协商包不是由无法观察包的攻击者生成的。
    • 接收到版本协商包的端点可能会更改其决定用于后续分组的 QUIC 版本。端点更改其 QUIC 版本的条件将取决于它选择的 QUIC 版本。

Supported Version(支持的版本):

    • 长度:32 位,该字段可重复多次
    • 包含支持版本字段的列表,每个字段标识发送数据包的端点所支持的版本。
    • 版本协商包不包含其他字段。端点必须忽略不包含 Supported Version 字段或包含截断的 Supported Version 值的数据包。
    • 版本协商数据包不使用完整性或机密性保护。特定的 QUIC 版本可能包含协议元素,允许端点在支持的版本中集中检测修改或损坏。

安全和隐私

  中间盒可能会观察到特定版本的 QUIC 的特征,并假设当其他版本的 QUIC 表现出类似的特征时,表达的是相同的潜在语义。

  在 QUIC 版本1中,已经做出了一些努力来消除或掩盖一些可观察到的特征,但许多这些特征仍然存在。

  其他 QUIC 版本可能会做出不同的设计决定,因此显示出不同的特点。

  QUIC 版本号并不出现在所有 QUIC 包中,这意味着根据版本特定的特征从流中可靠地提取信息需要中间盒保留它们看到的每个连接ID的状态。本文档(RFC 8999)中描述的版本协商包不受完整性保护;它只对攻击者的插入提供适度的保护。

  如果端点因此尝试了不同的 QUIC 版本,则它必须验证版本协商数据包的语义内容。

 

【未完待续】

标签:Version,QUIC,个人,Connection,理解,版本,长度,ID
来源: https://www.cnblogs.com/EnddleRD/p/16034103.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有