A cross-platform tftp server + client written in Rust, trying to be fast and low-footprint.
I haven't run any benchmark or similar things to really prove my Tftp app is fast and has an extremely low footprint. But I've put serious thoughts into this and try to achieve that goal by several measures. For example, the structs abstracting the Tftp packet types are mostly used zero-copy, i.e. the buffer that is used for reading from socket/file is then directly used by the packet types without any copying/allocation. In general, allocating is kept to a minimum.
Of course, this all is limited by my current knowledge of Rust. This project is intended to extend my Rust knowledge, improve my coding and become familiar with TFTP, a quite important protocol when working with embedded devices.
If you think there is room for improvement, please open an issue or a pull request.
- Server mode
- RRQ/GET
- WRQ/PUT
- Client mode
- RRQ/GET
- WRQ/PUT
- TFTP options
- Blocksize
- Timeout
- Transfer size
- Window size
It supports parallel operation with an arbitrary number of peers.
- RFC 1350 - TFTP protocol
- RFC 2347 - TFTP option extension
- RFC 2348 - TFTP blocksize option
- RFC 2349 - TFTP timeout and transfer size options
- RFC 7440 - TFTP windowsize option