Network Programming Homework

Report your progress on your web page as you complete each part. You will be responsible for knowing this material by the second exam in on March 16.

Read the UNIX/Linux man pages for the following commands, and then try each one with their various options: telnet, ftp, rlogin, rsh, rcp, netstat, ifconfig, arp, dig, nslookup, w, finger, ypcat, ps, df, sendmail, traceroute, ripquery, etherfind. (Not all of these will be available). Determine which of these programs are available in Windows and UNIX/Linux. Post your results (OK, command not found, permission denied, etc.) for each system you try.

Use ping with appropriate options to trace how packets are routed between your computer and various well known web servers such as www.aol.com, www.yahoo.com, etc. Post your results.

Use telnet to view a web page by sending an HTTP command, for instance:

  telnet www.fit.edu 80
  GET /

Use dig or nslookup to find the mailbox exchange or MX record for some well known email servers, such as yahoo.com, hotmail.com, fit.edu, or cs.fit.edu. For example, when you mail to mmahoney@fit.edu, the MX record would tell you to actually connect to winnie.fit.edu. What is the IP address (A record) of winnie? What are the MX and A records for cs.fit.edu?

Use telnet to send yourself mail using SMTP. For instance:

  telnet winnie.fit.edu 25
  MAIL FROM: me@my.address
  RCPT TO: mmahoney
  DATA
  Subject: test

  This is a test.
  .
Turn on logging or use tee to record your session and post it.

Find and skim the RFCs on http://www.ietf.org/ for the following protocols: HTTP, SMTP, POP, telnet, FTP, TCP, IP, DNS. (These are long - you should know what's in them but don't have to read the whole thing). Which RFC number applies to each one?

Suggested Exercises

These will not be collected or graded, but will help you learn Java programming for the exam.

1. Install the clock applet on your web page. Give the user the ability to set the time. Choose one or more of the following techniques:

2. The telnet program, it is possible for the receiver and the keyboard event handler threads (with local echo on) each to put a character to the terminal at the same time. Identify a sequence of context switches between threads that would cause one character to be overwritten by the other and apparently be lost. Modify the program to prevent this from happening. (Hint: This can be done by adding one word to the program).

Add a checkbox to allow the user to turn local echo on and off.

If your term project is to develop a telnet client, then by Apr. 20, implement the terminal negotiation options described in RFC 854. In particular, the server should be able to turn local echo on and off (for instance, when entering a password). Your terminal should also implement enough VT100 emulation so that editors like vi work correctly (i.e. cursor movement, clearing the screen or to the end of a line, determining the size of the screen, etc.)

3. Install and test Webserver.java by running it locally. Create an HTML file in the same directory and try to view it using a browser. Try entrering the URL http://localhost/index.html or http://127.0.0.1. If you are using UNIX (or NT), you may need to change the port number (80) to a number higher than 1024 so you can run it without being root. For instance, if you use port 8000, enter http://127.0.0.1:8000/index.html.

If your term project is to implement a web server, then by Apr. 20, extend Webserver.java to implement more of the HTTP protocol. In particular, your server should support: