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 homeworks.
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 9.0.
We hope that you will use g++2.9.6 as your compiler, make as your build tool,
and CVS as your version control system. 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.