There will be two kinds of
homework assignments: reading assignments and textbook-style questions. You
should have finished the assigned reading before coming to lecture. In
addition, there will be about four sets of written homework.
Over the course of the quarter, you will implement
a user-level TCP/IP stack and a small web server that runs on top of it. Your
code will not implement the full functionality of HTTP or TCP/IP, but it will
implement enough of it to be able to interoperate with other, complete
implementations. In keeping with the top-down approach of Kurose and Ross, you
will build this from the web server down instead of from the network card up. I
will initially provide you with the whole stack (as object code) and you will
implement the web server. Next, I will peal away the layers of the stack,
leaving you to implement your own versions. Each layer will have well-defined
interfaces that you will fill out. Here are the layers, as well as each
one’s percentage of the project grade. Note that the layers in italics
will be supplied to you and are included only for completeness.
The implementation language will be C++ and the platform will
be Red Hat Linux. You may also find that the C++ standard template library will
make your life easier. You’ll be using the PCs in the TLAB, which will be
specially configured for this class. You are welcome to use other machines, but
we must be able to compile and run your code on our machines. Note that the
Ethernet layer of the code requires that your kernel supports the
To evaluate your project, we will spot-check your source
code, compile it, and run randomized testcases on it. When appropriate, we will
supply you with examples. All the projects are to be done by teams of two
students. Each team should work cooperatively on the design, implementation,
and testing of their solutions. And the work should be shared in a fair manner.
The submissions need to include a simple specification of work undertaken by
each party.
· 01/03 Project 1, due 11:59pm 01/18
· 01/18 Project 2, due 11:59pm 02/22
· 02/23 Project 3, due 11:59pm 03/12
Handouts
· UNIX System Programming on a Nutshell
*All projects and related
materials are developed by, and in courtesy of Professor
Peter A. Dinda.