This assignment is a semester project to design and implement a three layer communication model which permits two or more application processes to communicate over a network. The assignment can also be attempted in other environments, but there is no guarantee as to how difficult the project becomes when you use another network context. You have already done some work with the first two items, which you will be building on for this assignment. The following description outlines the project but does not specify all the details. This approach is used to give you choices in the functionality of the model and to force you to make some of the design decisions.
Communication is in the form of request and response messages.
The client sends requests to the server and receives responses to those requests. The data link layer provides frame-level communication between client and server hosts. The data link layer operates over an unreliable channel subject to lost and garbled data. The physical layer provides a full-duplex, communication channel on which the data link layer can send an arbitrary byte stream. The client reads commands from standard input, converts them into server requests, sends them to the server, and prints the response returned by the server.