CSS 432: Network Design - Assignments


Language

Use C/C++ for all programming assignments.

Operating System

The operating system used for all assignments is Linux. You will use many Linux system calls to establish and control socket communication.

Linux Laboratory

All your programs must run in the UWB Linux Laboratory.

The remote machine host names are named csslab1.uwb.edu - csslab12.uwb.edu. You have access to these machines using your UWNet ID.

Information on access the Linux Labs can be found here: Linux Lab

Socket Ports

As your own socket port, use the last five digits of your student ID. Do not use the ports other than your own port. If your last five digits do not fit in the range between 5001 and 65535, use the formula below:
 
     Your port = ( the last 5 digits of your student ID) + 5001 % 65535 
Please avoid trivial port numbers such as 8080, 10000, 11111, 12345, 20000, etc..

Programming Environment

Programming can be done with a text editor such as vi, pico, emacs and with the g++ compiler. However, needless to say, you may use any IDE (integrated Develogment environment).

Assignments

  1. Program 1: exercises socket communication and evaluates its performance over 1Gbps network. You will use: socket, connect, write, writev, bind, listen, accept, signal, fcntl, read, close, and gettimeofday.
  2. Program 2: implements the sliding window algorithm and evaluates its performance improvement over 1Gbps network.
  3. Program 3: analyzes several TCP aspects such as state transition, Nagle's algorithm, additive increment, and slow start, using tcpdump, ttcp, netstat, and strace.
  4. Program 4: analyzes the hostent data structure that is related to DNS. You will use: getpeername, gethostbyaddr, ntohs, inet_addr, and inet_ntoa.
  5. Final project: builds an ftp client program based on RFC959.

Submissions