Lab Exercise 9: FTP Client (part 2)

The FTP protocol is a widely used method of transferring files between two computers. It was first developed in 1985, and it's use today is testament to its versatility. While there are better (in terms of security) options available today, it's still a useful application. Our focus in this lab is to implement a basic FTP client.

Here are the main goals of this lab:
  • Learn how the FTP protocol works
  • Implement a "real world" program

    The design
    In this lab you will create an FTP client capable of trasnferring ASCII files. This must be done using TCP sockets and must follow the FTP protocol. The protocol is defined in great detail by the Request For Comments (RFC) document. Visit and examine RFC-959, the FTP protocol, before you start writing any of this program. Doing so will help you a lot when it comes time to debug, since you will clearly understand what your program should be doing.

    As stated above, your client must be able to connect to a standard ftp server. You'll be demonstrating your programs by connecting to bulldog.d.umn.edu so feel free to use that server during testing. You must be able to satisfy all the requirements of the previous lab and perform ASCII file transfers. In accordance with the FTP protocol, your client must also properly interpret the reply codes returned from the server.

    What you need to do
  • Create an FTP client based on RFC-959 that is capable of user authentication, the LIST, CWD, and QUIT commands, and arbitrary ASCII file transfers.
  • The output of the above commands must be displayed to the user as expected (most FTP clients display the server's reply codes to give feedback to the user)

    Extra Credit (30 points)
  • Implement BINARY file transfers. To demonstate this you should run a simple executable on the remote host, use your client to transfer it locally, then execute it locally.

    Notes
  • You will be demonstrating your program to me when it is due so be prepared. Take these demonstrations seriously, as they are a large factor in the final scoring.

    What you need to submit
  • The source code for your FTP client
  • A capture of the output for your program performing the required commands
  • This lab is worth 60 points and will be demonstrated on Nov 13th by 7pm. Your write-up is due when you demonstrate your programs, and there will not be any late demonstrations allowed.
  • The extra credit must be completed by the same date as well.