RUDP 在 UDP 上提供可靠、有序的消息传输。C++20 ARQ 核心负责分片、确认、 重传与接收排序,公开客户端、服务端与 Session 延续 arknet 的 CRTP 和组件组合架构。
开始使用
| 能力 | 行为 |
|---|---|
| 端点 | rudp_client、rudp_server、rudp_session 及 CRTP 变体 |
| 地址与依赖库 | IPv4/IPv6;Standalone Asio 或 Boost.Asio |
| 消息 | 空消息、二进制消息、分片与有序重组 |
| 可靠性 | ACK、超时重传、快速重传与有限重试 |
| 可选恢复 | Reed–Solomon 固定或自适应 FEC;未恢复数据由 ARQ 重传 |
| 流量控制 | 发送与接收窗口;默认启用拥塞控制 |
| 运行机制 | 握手超时、重连、定时器、内置或外部 IO context |
| 限额 | ARQ、FEC、socket 队列与服务端会话数量均有上限 |
选择传输方式
应用自行处理丢失与顺序时,使用原生 UDP。需要通过 UDP 可靠传递完整消息时,使用 RUDP。重传会增加延迟,有序交付需要等待缺失分片。 可靠字节流通常使用 TCP。
RUDP 使用兼容 KCP 消息模式的 segment,另有 SYN/ACK/FIN 连接报文。 它不能直接与只收发裸 KCP segment 的端点互换,也不提供认证、加密、NAT 穿透、 流模式或自动路径 MTU 探测。详见兼容范围。
发送完成表示进入可靠队列,不表示对端已经 ACK 或业务已经接收。断线后,未确认 消息不会自动重放到新会话。业务需要收据或重放时,应在应用协议中定义相应行为。