💡
原文中文,约8400字,阅读约需20分钟。
📝
内容提要
UDPack 2.0是一种基于UDP的安全可靠数据包传输协议,相比1.0协议,2.0协议进行了简化,目标是提供比QUIC协议更简单、更轻量的传输协议。2.0协议的帧格式进行了变化,废除了Stream和Fragment概念,需要配合上层SocketIO协议来实现发送任意长度的数据包。协议实现使用Rust语言。
🎯
关键要点
- UDPack 2.0 是一种基于 UDP 的安全可靠数据包传输协议。
- 相比于 1.0 协议,2.0 协议进行了极大的简化,目标是提供比 QUIC 协议更简单、更轻量的传输协议。
- 2.0 协议的帧格式变化,废除了 Stream 和 Fragment 概念,使用上层 SocketIO 协议发送任意长度的数据包。
- 2.0 协议使用 Rust 语言实现,提供了内存安全和良好的性能。
- 帧格式中,Session Id 改为 8 字节的 uuid,删除了 timestamp、OPCODE、Payload len、Stream Id 和 Fragment Id 字段。
- 数据接收端通过 Sync 帧与发送端同步接收进度,防止 Ack 帧丢失造成的超时重发。
- 发送端通过滑动窗口控制发送速率,接收端通过 Slow 帧通知发送端降低发送速度。
- 接收端在数据包丢失时发送 Lost 帧,通知发送端重新发送数据包。
- 2.0 协议不能发送任意长度数据包,需借助 SocketIO 协议进行数据包组装。
- SocketIO 协议在数据包前加 length 字段,增加数据自动加解密处理。
- UDPack 2.0 项目是基于业余兴趣建立的,代码实现可能不够严谨,欢迎交流探讨。
🏷️
标签
➡️