Yet more (Trivial) FTPing
What was that, four weeks of FTP? Let's make it five! This week, we'll look at a stripped-down version of FTP: Trivial File Transfer Protocol (TFTP), which is usually used to transfer configuration data to and from routers, firewalls and so on. TFTP is a simplified version of FTP, but the architecture is different enough that regular FTP clients won't be able to talk to a TFTP server - they'll need a TFTP client.
The main difference between TFTP and FTP is that the former uses the User Datagram Protocol (UDP) to communicate with the TFTP server rather than FTP's Transmission Control Protocol (TCP). This is the primary reason for needing a special client.
Now class, what else does using UDP mean? Yes, you at the back, Jenkins . . . that's correct! UDP is unreliable! So using UDP means there's no guarantee that a file will be transferred without explicitly acknowledging each packet transferred. Exactly!
TFTP is really very simplified - all the client can do is read or write a file. There's no directory browsing, no file renaming, no logging in (honest), no statistics, nothing but the basic getting and putting of files. The standard packet size for TFTP transfers is 512 bytes of data, and on receipt of a smaller packet, the client or server assumes end-of-file has been reached.
In the case of an error condition, the device that detects the error sends an error packet. There are three error conditions recognized by TFTP that cause the current transfer to be aborted: request cannot be handled, such as file not found or access violation (implementation may add any number of conditions); receiving a malformed packet; and loss of required resource such as a full disk or access violation during transfer (again, implementation has a lot of say in this instance).
For all the grizzly details, refer to RFC 1350, "The TFTP Protocol (Revision 2)," dated July 1992. Other relevant requests for comment are RFC 2349 ("TFTP Timeout Interval and Transfer Size Options"); RFC 2348 ("TFTP Blocksize Option"); RFC 2347 ("TFTP Option Extension"); RFC 2090 ("TFTP Multicast Option"); RFC 1986 ("Experiments with a Simple File Transfer Protocol for Radio Links Using Enhanced Trivial File Transfer Protocol"); RFC 1785 ("TFTP Option Negotiation Analysis"); and RFC 0906 ("Bootstrap Loading Using TFTP").
If you want to try a TFTP implementation, go to Stellar X Software, a Web site owned by Antonino Iannella, a software engineer in Australia sporting the company name Stellar Pty Ltd. Iannella created the free Stellar TFTP suite that consists of a client and server designed for Windows 95 and NT. We ran both successfully on Windows 98 and NT 4.0 SP6.
The server lets you permit or deny uploads and downloads; restrict uploads and downloads to specific, separate folders; prevent file overwriting; select the timeout value; and restrict the IP address ranges clients come from. There's also activity logging and the option to launch a program after every upload.
On the other end, the Stellar TFTP client allows you to name the TFTP server (or give its IP address), gives you upload and download options and a mode choice (ASCII or binary), supports logging, and lets you select a timeout value.
This product seems to work just fine but if you want a more sophisticated server implementation check out Philippe Jounin's Tftpd32 server (there's no client).
This server supports transfer block sizes up to 8,192 bytes and as small as 8 bytes (the client must be capable of handling what are called "option negotiations" as defined in RFC 1782) and can be configured to not bother sending acknowledgment packets to improve performance.
Another free server worth investigating is TFTP Server from SolarWinds.Net, which can perform multiple simultaneous send and/or receive transfers.
If you know of any TFTP implementations that you consider interesting, send them to gearhead@gibbs.com.
RELATED LINKS
Comments and suggestions to gh@gibbs.com.
Gibbs Forum
The place to discuss Gibbs's columns.
Check out this week's edition of
Backspin for more musings from Gibbs.
Part 1: Intro to
FTP
Network World, 7/23/01.
Part 2: The connection to the
server is made
Network World, 7/30/01.
Part 3: Connection
modes
Network World, 8/6/01.
Part 4: Let the transfers begin
Network World, 8/13/01.
Part 5: FTP server security
Network World, 8/20/01.
Part 6: SITE and SYST
Network World, 8/27/01.
Part 7: More secure servers than IIS
Network World, 9/3/01.

