Trivial File Transfer Protocol

From Wikipedia, the free encyclopedia

Jump to: navigation, search

Trivial File Transport Protocol (TFTP) is a file transfer protocol, with the functionality of a very basic form of File Transfer Protocol (FTP); it was first defined in 1980.[1]

Due to its simple design, TFTP can be implemented in a very small amount of memory — an important consideration at that time. It was therefore useful for booting computers such as routers which did not have any data storage devices. It is still used to transfer small amounts of data between hosts on a network, such as IP phone firmware or operating system images when a remote X Window System terminal or any other thin client boots from a network host or server. The initial stages of some network based installation systems (such as Solaris Jumpstart, Red Hat Kickstart and Windows NT's Remote Installation Services) use TFTP to load a basic kernel that performs the actual installation.

TFTP is based in part on the earlier protocol EFTP, which was part of the PUP protocol suite. In the early days of work on the TCP/IP protocol suite, TFTP was often the first protocol implemented on a new host type, because it was so simple.

The original versions of TFTP, prior to RFC 1350, displayed a particularly bad protocol flaw, which was named Sorcerer's Apprentice Syndrome (after the "Sorcerer's Apprentice" segment of Fantasia) when it was discovered.

TFTP support appeared first as part of 4.3 BSD. It is included with Mac OS X from version 10.5.

Contents

[edit] Technical information

(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

[edit] Some details of TFTP

  • It uses UDP port 69 as its transport protocol (unlike FTP which uses TCP port 21).
  • It cannot list directory contents.
  • It has no authentication or encryption mechanisms.
  • It is used to read files from, or write files to, a remote server.
  • It supports three different transfer modes, "netascii", "octet" and "mail", with the first two corresponding to the "ASCII" and "image" (binary) modes of the FTP protocol; the third was made obsolete by RFC1350.
  • The original protocol has a file size limit of 32 MB, although this was extended when RFC 2347 introduced option negotiation, which was used in RFC 2348 to introduce block-size negotiation in 1998 (allowing a maximum of 4 GB and potentially higher). If the server and client support block number wraparound, file size is essentially unlimited.
  • Since TFTP utilizes UDP, it has to supply its own transport and session support. Each file transferred via TFTP constitutes an independent exchange. That transfer is performed in lock-step, with only one packet (either a block of data, or an 'acknowledgement') ever in flight on the network at any time. Due to this lack of windowing, TFTP provides low throughput over high latency links.
  • Due to the lack of security, it is dangerous over the open Internet. Thus, TFTP is generally only used on private, local networks.

[edit] Example of a TFTP session

  • The initiating host A sends an RRQ (read request) or WRQ (write request) packet to host S at the well-known port number 69, containing the filename and transfer mode.
  • S replies with an ACK (acknowledgement) packet to WRQ and directly with a DATA packet to RRQ. Packet is sent from a freshly allocated ephemeral port, and all future packets to host S should be to this port.
  • The source host sends numbered DATA packets to the destination host, all but the last containing a full-sized block of data (512 bytes). The destination host replies with numbered ACK packets for all DATA packets.
  • The final DATA packet must contain less than a full-sized block of data to signal that it is the last. If the size of the transferred file is an exact multiple of the block-size, the source sends a final DATA packet containing 0 bytes of data
  • Receiver responds to each DATA with associated numbered ACK. Sender responds to the first received ACK of a block with DATA of the next block.
  • If an ACK is not eventually received, a retransmit timer resends DATA packet.

[edit] Example command in TFTP in Windows

Transfers files to and from a remote computer running the TFTP service.

TFTP [-i] host [GET | PUT] source [destination]
 -i              Specifies binary image transfer mode (also called
                 octet). In binary image mode the file is moved
                 literally, byte by byte. Use this mode when
                 transferring binary files.
 host            Specifies the local or remote host.
 GET             Transfers the file destination on the remote host to
                 the file source on the local host.
 PUT             Transfers the file source on the local host to
                 the file destination on the remote host.
 source          Specifies the file to transfer.
 destination     Specifies where to transfer the file.

[edit] Example command in TFTP in Linux

Commands may be abbreviated. Commands are:

connect 	 connect to remote tftp
mode    	 set file transfer mode
put     	 send file
get     	 receive file
quit    	 exit tftp
verbose 	 toggle verbose mode
trace   	 toggle packet tracing
status  	 show current status
binary  	 set mode to octet
ascii   	 set mode to netascii
rexmt   	 set per-packet retransmission timeout
timeout 	 set total retransmission timeout
?       	 print help information

[edit] TFTP Usage example

user@host:~$ tftp 192.168.1.1

tftp> get file.txt


[edit] References

  1. ^ The TFTP Protocol
  • Karen R. Sollins, The TFTP Protocol (IEN 133, January, 1980)
  • Karen R. Sollins, TFTP Protocol (revision 1) (RFC 783, June, 1981)
  • Karen R. Sollins, TFTP Protocol (revision 2) (RFC 1350, July, 1992)
  • R. Finlayson, Bootstrap loading using TFTP (RFC 906, June, 1984)
  • Gary Malkin, A. Harkin, TFTP Option Negotiation Analysis (RFC 1785, March 1995)
  • Gary Malkin, A. Harkin, TFTP Option Extension (RFC 2347, May 1998)
  • Gary Malkin, A. Harkin, TFTP Blocksize Option (RFC 2348, May 1998)
  • Gary Malkin, A. Harkin, TFTP Timeout Interval and Transfer Size Options (RFC 2349, May 1998)
  • E. Lear, Uniform Resource Identifier (URI) Scheme and Applicability Statement for the Trivial File Transfer Protocol (TFTP) (RFC 3617, October 2003)

[edit] See also

[edit] External links

Personal tools