CSCI-4220 Network Programming
Spring 2000
Project 3 - TFTP Server
Due Date: Feb 25th (received by midnight on the 25th)
Tape Delay Due Date: March 3rd
TFTP Server
This project involves the creation of a TFTP server. Your server
should be based on UDP and should support the TFTP protocol as
specified in RFC 1350
Your server must be able to handle multiple concurrent clients.
Server Output
Your server should print (to stdout) out the port number it is
running on as soon as it starts. Your server does not need to provide
any additional output, although we encourage you to leave any
debugging print statements in place (it may help us figure out what
your server is doing).
Servers are forever!
Your server must never die! For this project your code must be
capable of running forever. This means you must take care of all
possible errors, and that you must make sure your server does not
gobble up any system resources for each new client without ever
releasing these resources (you should clean up after children,
etc).
Deliverables
You should submit all the source code necessary to build your
server and a makefile. Submission instructions are here. You must also include a brief writeup
in a file named README that includes the following:
- A list of files and a 1-line description of the contents of each file.
- References to any borrowed code (the source code must also include this information).
- A description of any known problems. If you think you know how to solve the problem(s) and simply didn't have time to do so - let us know how!
- Anything else you think might be useful to us, such as what you learned, what you had trouble with, if the project was too hard or too easy, etc.
Computer Accounts
You must not use RCS! Make sure your code builds and runs on the CS machines.
Tips, Hints, Suggestions
- Read RFC 1350
- Use the program "tftp" as a client for testing. There is no reason to write your own client. Use "man tftp" for more information about how to use the tftp client program.
- I've asked to have a tftp server installed on monica, but this has
not yet happened. If and when this happend I'll provide information
about how to play with the server (this might be useful so you can
get the hang if using the tftp client).
- The RFC does not specify the timeout values (how long to wait
before retransmitting, how long to wait before giving up). We suggest
something like 1 second timeout before retransmission and a total of 5
seconds before giving up.
- To test how your server handles lost packets, you can
suspend the client (with ^Z) during a long transfer. As long as the
client is resumed soon - your server should be able to finish the
transaction.
All questions should be sent to "netprog@cs.rpi.edu".