Assignment 4

Add the sliding window algorithm and flow control to your implementation of TCP. Your implementation should be able interoperate with the standard Linux implementation of TCP.

You will need to add support for the read and write socket calls to your TCP implementation.

We will evaluate your solution by running a test program that opens some number of connections, transfers bytes in both directions, and closes the connections. You should be able to support multiple simultaneous connections, and multiple incarnations of the same connection.

Your implementation should support:

Your implementation need not support:

Watch the newsgroup for updates to these two lists.

The specific interface that your code must support can be found in cs461_socket.h. This is the same interface as in Assignment 3. Your Makefile should compile your code into an object file called cs461_socket.o. This object file will then be linked against the test program. Note that your object file will not contain a main() function; you should initialize your protocol stack the first time a socket is created. Click here for a sample Makefile that shows how to build the required object file, along with an extremely basic test program.

Turn in a written report (postscript or PDF) that briefly describes your design, and reports the rate at which your implementation can send/receive data. Also turn in the source code for your implementation, any test programs you have developed, a Makefile, and a README that describes your program files.