TFTP protocol is a trivial network protocol for files transmission. The client part of the protocol realization does not require significant calculation resources. Because of this TFTP protocol is often used for transmission of files to IP-phones, LAN routers and switches, and also for loading of diskless workstations.
In contrast to the widely distributed FTP protocol, TFTP does not contain built-in authorization and does not let the client list the folders contents on the server.
TFTP uses UDP protocol as transport. File transmission from the TFTP server is realized like this:
- The client sends TFTP READ packet containing the name of the requested file to the UDP 69 server port.
- The server, using a random UDP port number, sends to the client a TFTP DATA packet, containing a part of data from the file requested. In case if the file, requested by the client is missing, the server sends TFTP ERROR packet, containing the error description, to the client.
- Having received the TFTP DATA packet, the client sends TFTP ACK confirmation to the server. The server and the client continue TFTP DATA and TFTP ACK packets exchanging till the file is completely transmitted. In case one of the sides does not receive the expected packet during the timeout, the other side resends the packet.
The TFTP client can request the server on the parameters of file transmission change by means of the TFTP options. The server can accept or reject one or another TFTP option, requested by the client. The client puts the list of the options requested to TFTP READ or TFTP WRITE request packets. In case the server supports TFTP options mechanism, it confirms the request by means of TFTP OACK packet and uses the confirmed settings on the file transmission.
For the moment, the following TFTP options are standardized:
- TFTP blksize. On default the TFTP protocol intends data transmission by 512 bytes blocks. Regarding the fact that present local networks MTU is usually equal to 1500 bytes or more, this block size is not effective. TFTP blksize option let change the block size, improving data transmission effectiveness.
- TFTP tsize. With help of the TFTP tsize option the client can request from the server the size of the file being transmitted.
- TFTP timeout. TFTP timeout option allows the client to set server timeout for the file being transmitted.
- TFTP multicast. This option enables multicast file transmission mode.
- RFC 1350 - The TFTP Protocol (Revision 2)
- RFC 2347 - TFTP Option Extension
- RFC 2348 - TFTP Blocksize Option
- RFC 2349 - TFTP Timeout Interval and Transfer Size Options
- RFC 2090 - TFTP Multicast Option