1 个不稳定版本
0.1.0 | 2022年7月11日 |
---|
#2916 在 解析器实现
19KB
422 行
Rust 编写的 TFTP 数据包解析器
基于 rfc 1350。
这是一个简单的库,用于解析 TFTP 字节数据包。更多信息请参阅[文档]。
TFTP 数据包
WRQ/RRQ
操作码 | 文件名 | 0 | 模式 | 0 |
---|---|---|---|---|
2 字节 | 字符串 | 1 字节 | 字符串 | 1 字节 |
01 或 02 作为 u16 |
"file" 作为 [u8] |
0 作为 u8 |
"octet" 作为 [u8] |
0 作为 u8 |
DATA
操作码 | 块号 | 数据 |
---|---|---|
2 字节 | 2 字节 | 0 - 512 字节 |
03 作为 u16 |
1 - x 作为 u16 |
数据块作为 [u8] |
- 块号:每次发送块时递增
- 数据:如果数据包长度小于 512,则自动终止传输
ACK
操作码 | 块号 |
---|---|
2 字节 | 2 字节 |
04 作为 u16 |
1 - x 作为 u16 |
ERROR
操作码 | 错误代码 | 错误信息 | 0 |
---|---|---|---|
2 字节 | 2 字节 | 字符串 | 1 字节 |
05 作为 u16 |
x 作为 u16 |
"msg" 作为 [u8] |
0 作为 u8 |
协议
WRQ
sequenceDiagram
participant Client
participant Server
Client->>Server: WRQ, TID=69
Note right of Server: Block #35;: 0
Server->>Client: ACK, TID=xyz
loop TID=xyz
Client-->>Server: DATA
Server-->>Client: ACK
end
依赖
~1MB
~20K SLoC