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,, etc. Post your results.

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

  telnet 80
  GET /

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

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

  telnet 25
  MAIL FROM: me@my.address
  RCPT TO: mmahoney
  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 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 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 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

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