Description
Your task for this team-based (max. 2) assignment is to implement a TFTP server according to RFC 1350.
Your server should be able to support multiple connections at the same time by calling the fork() system
call which you should be familiar with from Operating Systems. You MUST support the “octet” mode. You
should not implement the “mail” mode or the “netascii” mode.
Upon not receiving data for 1 second, your sender should retransmit its last packet. Similarly, if you have
not heard from the other party for 10 seconds, you should abort the connection.
Take care to not allow the Sorcerer’s Apprentice Syndrome (SAS) which will be covered in Lecture on 2/5.
Don’t worry, the implementation in the RFC has already corrected SAS. Additionally, we will only be testing
files smaller than 32 MB.
Be sure when testing using the tftp Linux client (for example) to set the mode to binary.
SIGALRM is discussed in our textbook (Chapter 14) which may be useful when implementing timeouts.
As we will not be able to use root privileges on Submitty, you should NOT be requesting port 69 (which is
a reserved port) but rather let the operating system assign you a random port which you will then output
to stdout.
Please include a README.txt file which should include your name, the name of your partner, and any
helpful remarks for the grader.
Please make sure to get started early!
1

