CSCI-4220 Network Programming

Spring 2000

Project 2 - HTTP Proxy Server
Due Date: Feb 8th (received by midnight on the 10th)
Tape Delay Due Date: Feb 16th

Submission Instructions


Proxy Web Server

Your assignment is to write a Proxy HTTP Server. Your server must be able to handle GET, HEAD and POST requests (it can ignore any request that specifies any other HTTP request method). Your proxy should work with any HTTP client (browser), we will be testing it with a custom HTTP client written just to torture your server.

What is and is not required:

Server Output

Your server should print (to stdout) out the port number it is running on as soon as it starts. Using a fixed port number may make it difficult for us to grade (and for you to debug), so we suggest you allow the operating system to assign you any available TCP port. The initial line printed by your program should include the port number and nothing else (not "Port = 3838\n", just "3838\n"). Your program will be run by an automated system that expects this output.

To keep track of all requests, your server should print one line (to standard output) for each request serviced. The line should include the host name or IP address of the client, and the original request-line sent by the client (not any of headers that accompanied the request). For example, the following lines would be printed if the proxy received a GET request from a client on monica.cs.rpi.edu asking for the web page http://www.cs.rpi.edu/:

monica.cs.rpi.edu:  GET http://www.cs.rpi.edu/

Deliverables

You should submit all files necessary to build your server. If you use a Makefile please include it, it not you need to include instructions on how to build your server. Your submission must also include a file named README that includes the following:

Computer Accounts

Please use your CS account (or your own personal computer) for this project. Do not use RCS for this project. We have been told that any student who knowingly or accidentally runs a program that consumes excessive resources (like a fork bomb) on a public workstation will lose their RCS account.

FAQ and questions

All questions should be sent to "netprog@cs.rpi.edu".
A Project 2 FAQ will be available at http://www.cs.rpi.edu/~hollingd/netprog/projects.html as we get questions.
A sample proxy server will also be provided (executable that can be run on monica.cs.rpi.edu).