Trivial File Transfer Protocol

A primary use of TFTP is in the early stages of nodes booting on a local area network when the operating system or firmware images are stored on a file server.

It is also used to transfer firmware images and configuration files to network appliances like routers, firewalls, IP phones, etc.

TFTP was designed to be small and easy to implement, and therefore it lacks most of the advanced features offered by more robust file transfer protocols.

If the server grants the request, the file is sent in fixed-length blocks of 512 bytes by default or the number specified in the blocksize negotiated option defined by RFC 2348.

Dynamic Host Configuration Protocol standard RFC 2131 (DHCP) published in 1997 improved BOOTP capabilities.

Finally, the Preboot Execution Environment (PXE) version 2.0 was released in December 1998, and the update 2.1 was made public in September 1999 counting on TFTP as its file transfer protocol.

Classically, this transfer is performed in lock-step, with only one packet (either a block of data or an acknowledgment) alternatively in flight on the network at any time.

This substantially improves performance for things like PXE booting without the IP fragmentation side effect sometimes observed on Blocksize Option RFC 2348[11] TFTP includes no login or access control mechanisms.

Care must be taken when using TFTP for file transfers where authentication, access control, confidentiality, or integrity checking are needed.

TFTP file transfers are not recommended where the inherent protocol limitations could raise insurmountable liability concerns.

(W1) Host A requests to write
(W2) Server S acknowledges request
(W3) Host A sends numbered data packets
(R1) Host A requests to read
(R2) Server S sends data packet 1
(R3) Host A acknowledges data packet 1