协议与数据面草案¶
本章为研究用草案提纲,非正式标准。具体消息名、字段与错误码应在实现仓库的 spec/ 或独立 RFC 式文档中维护,并与本站版本号交叉引用。
设计原则¶
- 显式状态机:每个会话状态有清晰进入/退出条件。
- 可扩展 TLV:预留扩展同时保持旧实现前向兼容。
- 错误可行动:错误码携带「建议重试 / 切换中继 / 检查时钟」等提示位(可选)。
- 安全默认:未协商成功的加密套件不得发送用户数据。
会话状态(抽象)¶
| 状态 | 描述 |
|---|---|
Idle |
无会话 |
Gathering |
收集中候选 |
Checking |
连通性检查进行中 |
Securing |
密钥协商(若与检查并行,可标注子状态) |
Data |
数据面可用 |
Degraded |
降级使用中继或低质量路径 |
Closing |
优雅关闭 |
Failed |
不可恢复失败 |
消息族(占位)¶
| 族 | 方向 | 备注 |
|---|---|---|
HELLO / CAPABILITY |
双向 | 特性位、版本 |
CANDIDATE |
双向 | 候选交换 |
CHECK / CHECK_ACK |
双向 | 连通性检查 |
KEY_MATERIAL |
双向 | 依身份模型而定 |
DATA |
双向 | 帧格式与分片 |
HEARTBEAT |
双向 | 保活与 RTT 样本 |
ERROR |
任意 | 机器可读 + 可选诊断文本 |
数据面帧(抽象)¶
建议字段:version · session_id · path_id · payload · MAC/AEAD。
具体长度与 endian 由实现规范定义。
兼容性与版本协商¶
- 主版本:不兼容变更。
- 次版本:向后兼容扩展。
- 拒绝不可识别的关键扩展时应返回明确错误并记录遥测(若允许)。