CMSC 417-0101

PROJECT 4 -- PRELIMINARY

November 27, 1999

Due: December 12 Sunday 11:00pm (via submit)


Introduction

This project deals with achieving transport service over LRD network channels. The transport service consists of connection management and reliable two-way data transfer between connected incarnations, as explained in Note 4: Principles of Transport Protocols. You are provided a specification of the transport service. The specification of the LRD network layer service is, as before, given by NetworkSocket. You are to implement a transport protocol that provides the transport service using the NetworkSocket service.

Specifically, the project consists of two interacting programs, Client and Server. The Client consists of three components (each being one or more threads): ClientTester, ClientEntity, and NetworkSocket. The Server consists of three components (each being one or more threads): ServerTester, ServerEntity, and NetworkSocket. You are to implement ClientEntity and ServerEntity. You will be provided the others. ClientTester and ServerTester are the users of the transport entities. The pair of NetworkSockets provide the LRD channels and are as in Project 3.

Transport Service

You are to implement two classes, ClientEntity and ServerEntity, that provide connection management and reliable two-way byte stream transfer. These classes can interact only via the NetworkSocket objects

Class ClientEntity must have the following interface:

Class ServerEntity must have the following interface:

Consider the execution of a corresponding pair of Client and Server entities. At the client, the activity consists of a sequence of RequestConnection, SendData, ReceiveData, Acked, and RequestDisconnection calls (issued by ClientTester). At the server, the activity consists of a sequence of AcceptConnection, StopAcceptingConnection, SendData, ReceiveData, Acked, and AwaitDisconnection calls (issued by ServerTester).

Your protocol must satisfy the requirements stated in section 2 of Note 4.

For example, Each RequestConnection call starts a new incarnation of the Client. Each AcceptConnection call starts a new incarnation of the Server. An incarnation x may or may not become open. If it does, then it becomes open to a corresponding incarnation y at the other site, and that incarnation y must become open to this incarnation x.

Data sent by an incarnation in a connection should be delivered in sequence to the other incarnation.

Transport Protocol

Your transport protocol can be composed of three parts, a connection management protocol and two one-way data transfer protocols, as indicated in Note 4. For the one-way data transfer protocol, just use the protocol you have already developed for projects 2 and 3.