n the second project, you will implement a reliable transport layer, and eventually make the client and server applications run on top of it. Picture 2.1(a) shows the protocol stack. A better but much more complicated approach is to implement a separate network layer at the client and server side (as in picture 2.1(b)), and make the network layer forward packets with error conditions. But this is more involving! Unless you are looking for more work to do to keep yourself busy, you won?t choose it. Since we have developed a gateway program in the first project, we will use the gateway to emulate the Internet, as shown in picture 2.1(a).For reliable data transfer:Your transport layer will implement the following features of TCP:Receiver uses cumulative ACKsIn case of packet loss, sender will retransmitsender retransmits when timer expires; sender retransmits when 3 duplicate ACKs are received; sender only retransmits one segment.Implement sender and receiver buffers:sender buffers outstanding data and data ready to be sentreceiver buffers correctly received in-order data. For out-of-order segments, the receiver can either discard or buffer them. It is up to you.Implement flow control. Things that you do not need to do:You do not need to support simultaneous connection initiation--- the rare case I talked about in class when two sides send SYN to each other at the same time. In this project, the client is the active side, and the server is the passive side. You do not need to compute and check the checksum because the only error condition is packet loss in this project, and data won?t be corrupted.You do not need to implement congestion control.

Release Status
Curently in development: 1.0 Alpha

Version 1.0 Alpha Progress

0%
0%

There is a total of completed unit for this project. There is unit expected for this major version.

Features