Lab L5 - Logging Web Proxy
Lab 5 was handed out Thursday, Nov. 28. It is due
11:59 pm, Monday, December 11.
The writeup is available in Postscript.
The files for the assignment (such as they are) can be retrieved from
- Demos will be 20-minute slots on Tue 12 and Wed 13. The sign-up sheets
are available outside of WeH 4218.
- Some brief ideas on testing:
- The best test is actually using your proxy to load web pages.
www.yahoo.com are fairly
simple pages involving only a few GETs, some more complex pages are
www.cs.cmu.edu. Also try
loading something like
to make sure your proxy correctly parses the path.
- It can also help to use reverse_telnet to actually look at
the requests your proxy is sending, just as a sanity check.
- For concurrency, make sure you test all the non-blocking requirements
(listed below). Use telnet to simulate a browser and
reverse_telnet to simulate a server. Connect to the proxy
and go through the stages of receiving a page. At each step where the
proxy is not supposed to block, use a browser to load a simple page
like www.google.com, and make sure the request can go
If you choose to implement your concurrent proxy server using
select(2), here are the requirements you must satisfy in order
for your proxy to be deemed sufficiently concurrent.
The proxy must not block on:
- an accept of an incoming connection
- the first byte of a request after it has accepted a connection
- any byte of a reponse from a server
This implies that the proxy must use select on:
- the listening socket, to tell when an incoming connection is ready
- any connection that has just been accepted
- any server socket
The proxy may block on the reading of a request from a browser
after the first byte, so as soon as a browser connection is ready for
read, the entire request can be read in.
registration is now available.
- The handin page is also up.
- We will be grading by demo -- you will need to sign up for a
15-minute slot on Tue 12 or Wed 13 Dec.
- We do not plan to provide testing scripts for this assignment, since
the best way to test is probably by just setting up a browser to use
your proxy and surfing the Web. However, we will provide a set of
guidelines for what sorts of things you should test for.
Sockets Programming Resources
- For more info on sockets, see the RPI
- The 15-213 documents page has links to the sources
for the Tiny Web server, echo server, and Pthreads examples that we
discussed in lecture.
Last modified: Thu Dec 7 01:43:57 EST 2000