Trivial File Transfer Protocol
The Trivial File Transfer Protocol (TFTP) is an extremely low-overhead protocol of the Internet Protocol Suite (IPS). It is intended to have the absolute minimum of functionality necessary for one computer, typically connected to another via a local area network, to download the executable code of its operating system. TFTP was designed for what variously are called "diskless workstations" or "thin clients", which have no local disk or other mass storage, and must "bootstrap" into execution with only the code that can fit into a read-only memory (ROM) containing the loader (i.e., TFTP and possibly other minimal functions). Its first implementation was designed by Noel Chiappa and it has undergone a series of refinements based on operational experience.
TFTP, as its name would suggest, does not have many of the features of a more general file transfer protocol, such as the IETF File Transfer Protocol (FTP). By today's standards, even basic FTP is obsolescent. The overriding objective was keeping TFTP and all associated code as small as possible; when it was developed, a good-sized ROM had only 32 kilobytes of storage.
In particular, TFTP has no security features alone, and expects to be talking to a trusted file server over a trusted network. It uses a fixed record size for transfer. It runs over User Datagram Protocol (UDP) because the code for Transmission Control Protocol would be too large for the ROM, so TFTP is responsible for its own error correction. Its error correction mechanism is small, simple, and works, but is not especially efficient; these are the general assumptions for every design choice in TFTP.
Prerequisites for TFTP operation
The requesting computer needs to have acquired an Internet Protocol address, so the server knows where to send the data. This address could have been acquired in several ways, including manual configuration of the client. The client also might request a dynamic address assignment, which originally used the very simple BOOTP protocol, a subset of modern Dynamic Host Configuration Protocol (DHCP). It is possible that the client and server might use a temporary link-local address, and the computer may subsequently get an address that has greater scope.
- Sollins, K. (July 1992), The TFTP Protocol (Revision 2), Internet Engineering Task Force, RFC1350