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

[QUIC] QUIC Frames

PADDING


PADDING Frame {
   
	Type (i) = 0x00,
}

这个帧用于增加 QUIC 包的大小。

对于 Initial 包, 可以用它来增加包大小以达到要求的最小包的大小限制。

填充 QUIC 包以对抗流量分析。

这个帧的大小为1字节,表明自己是一个 PADDING 帧。


PING


PING Frame {
	Type (i) = 0x01,
}

通信双方可以使用 PING 帧来验证对方是否依然在线或者对方节点是否可达。

这个帧的大小为1字节,表明自己是一个 PING 帧, 不携带任何数据。

对于 PING 帧的接收方,需要为携带此 PING 帧的 QUIC 包发送 ACK.

当没有长时间没有上层应用程序数据需要传输时, 为了防止链接因为空间超时而被关闭,可以通过发送 PING 帧来保持当前连接不被断掉。


ACK


接收方通过发送 ACK 帧来通知发送方它成功接收并处理了相关的 QUIC 包。

ACK 帧中可以包含一到多个 ACK 范围(ACK Ranges). ACK 范围表明确认接收的包。

ACK Frame {
   
	Type (i) = 0x02..0x03,
	Largest Acknowledged (i),
	ACK Delay (i),
	ACK Range Count (i),
	First ACK Range (i),
	ACK Range (..) ...,
	[ECN Counts (..)],
}

Largest Acknowledged: 整数, 表示当前接收方接收并发送确认的最大包编号.

ACK Delay: 整数, 表明发送当前 ACK 的延迟(Delay). 单位是 milliseconds.

计算公式:delay = ACK Delay * (2 ^ ack_delay_component(transport parameter))

不直接在这里编码原始 delay 值的原因是:想用最少的字节数来编码更大的范围,以牺牲精确度为代价。

ACK Range Count: 表示当前帧中 ACK Ranges 的 ACK 范围的数量。

First ACK Range: 整数, 表示在当前 Largest Acknowledged包之前的连续的包的数量。

也就是, 当前 ACK范围的最小 Packet Number 是 Largest Acknowledged - First ACK Range

ACK Ranges: 包含一组 ACK 范围,通知发送方我们已经成功接收并处理。 它有着特殊的编码规则,后边描述。

ECN Counts: 略


ACK 范围


http://www.kler.cn/a/387707.html

相关文章:

  • Oracle OCP认证考试考点详解082系列16
  • Linux——基础指令2 + 权限
  • Android Profiler 内存分析
  • 考研季来啦!考研过程中有哪些事情需要避坑?
  • 100+SCI科研绘图系列教程(R和python)
  • 【Java学习】电脑基础操作和编程环境配置
  • (C++回溯算法)微信小程序“开局托儿所”游戏
  • 图为科技与广东省北斗移动物联网产业研究院达成战略合作
  • mp3格式音频怎么做成二维码?扫码获取音频文件的制作方法
  • MySQL:客户端工具创建数据库
  • 25浙江省考-28天学行测-Day1
  • Python爬虫基础-正则表达式!
  • Redis4:Redis的Java客户端
  • 计算机网络socket编程(1)_UDP网络编程实现echo server
  • Golang--反射
  • 在Laravel中,最优的自定义验证规则方法
  • k8s和docker的区别及各自的应用场景
  • 快速解锁Rust Slice特性
  • PMP–一、二、三模、冲刺–分类–7.成本管理–技巧–挣值分析
  • 【LuatOS】修改LuatOS源码为PC模拟器添加高精度时间戳库timeplus
  • 十五、Linux线程(二)
  • 使用批处理脚本批量删除Maven无效依赖
  • docker搭建es集群
  • MATLAB-数学建模-无约束规划求解方法(非线性规划)
  • 使用 HuggingFace 提供的 Elasticsearch 托管交叉编码器进行重新排名
  • koa、vue安装与使用