TFTP packet parser in Rust
Based on rfc 1350.
This is a simple library that parses tftp byte packets. See the docs for more information.
The tftp packet
WRQ/RRQ
| Opcode | Filename | 0 | Mode | 0 |
|---|
| 2 bytes | string | 1 byte | string | 1 byte |
01 or 02 as u16 | "file" as [u8] | 0 as u8 | "octet" as [u8] | 0 as u8 |
DATA
| Opcode | Block # | Data |
|---|
| 2 bytes | 2 bytes | 0 - 512 bytes |
03 as u16 | 1 - x as u16 | Data Chunk as [u8] |
- Block #: Increments with each block sent
- Data: Transmission terminates automatically if Packet length < 512
ACK
| Opcode | Block # |
|---|
| 2 bytes | 2 bytes |
04 as u16 | 1 - x as u16 |
ERROR
| Opcode | Error Code | Error Message | 0 |
|---|
| 2 bytes | 2 bytes | string | 1 byte |
05 as u16 | x as u16 | "msg" as [u8] | 0as u8 |
Protocol
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