#tftp #packet-parser #packet #parser #protocols #networking

tftp-packet

用于创建和解析 TFTP 数据包的库

1 个不稳定版本

0.1.0 2022年7月11日

#2916解析器实现

MIT 许可证

19KB
422

Rust 编写的 TFTP 数据包解析器

基于 rfc 1350

这是一个简单的库,用于解析 TFTP 字节数据包。更多信息请参阅[文档]。

TFTP 数据包

WRQ/RRQ

操作码 文件名 0 模式 0
2 字节 字符串 1 字节 字符串 1 字节
0102 作为 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