Page tree

The Trivial File Transfer Protocol (TFTP) is a very simple file transfer protocol. It was developed in 1981 on the basis of EFTP. TFTP only supports reading or writing files. Not available are many features of the more powerful FTP such as chmod permissions, display of existing files or user authentication.

The Protocol

Unlike FTP, which requires a connection-oriented transport protocol, TFTP is normally operated using a connectionless protocol such as UDP. However, there is a similarity to FTP in that the data is not transferred in the same connection as the control commands. The client requests an action (read/write) on port 69, but the server does not send with port 69 as the source port, as known from DNS, for example (with port 53). Client and server rather choose so-called Transfer IDentifiers (TID). These TIDs correspond to the UDP port on the respective page and range from 1024 to 65535.

The motivation for developing TFTP was to load operating systems or configurations via the network. Since this is usually done from a firmware or a small bootloader, the connection-oriented TCP and the FTP based on it are much too complex for this purpose. TFTP, on the other hand, was deliberately kept simple with the functions:

  • packet-oriented protocol
  • Reading and writing files (or e-mails) on a server
  • no listing of directory contents
  • no authentication, compression or encryption
  • maximum file size 32 MBytes (16 MBytes for some implementations), extended to 4 GB by RFC 2347 in 1998, or unlimited by block number wraparound.
  • Packet size fixed at 512 bytes. The RFC 2348 introduced in 1998 allows the negotiation of the block size between client and server.