The Inter Process Communication (IPC) interface uses a layer to access the TCP and UDP protocols where message destinations are specified as socket addresses. Each socket address is a communication identifier consisting of a port number and an Internet address. IPC uses socket programming allowing socket pairs, one belonging to a client process and the other to a server process to queue messages either on the sending socket until the underlying network protocol has transmitted the message or on the receiving socket until the receiving process makes the necessary calls to receive the message.
The IPC layer defines two types of communication referred to as "Datagram Communication" also known as UDP (User Datagram Protocol) and "Stream Communication" also known as TCP (Transfer Control Protocol). Datagram communication uses a connection-less model where the local socket descriptor and the receiving socket's address are sent along in the datagrams for each communication. In contrast, stream communication uses a connection-oriented model where a connection is first established between the pair of sockets and thereafter data are transmitted between the two processes.
Datagram and stream communications use the standard Application Program Interface (API) which is responsible for sending and receiving data from the computer's hardware by making sure that the required information, such as the destination and return address, are present in each packet. The IPC interface also provides a third type of data communication referred to as Raw Sockets where a computer program is provided the capability of directly accessing the communication aspects of the computer hardware.
Five projects related to network applications design and implementation are presented. The educational objective of these projects is to familiarise students with (1) network programming concepts including socket programming and multithread-based operations using UDP and TCP and (2) IP routing concepts deployed in intra- and inter-domain Traffic Engineering (TE). The design and programming objectives are specific to the following network concepts:
The following items must be submitted for each project: (1) project report (2) the source code (3) the executable file and (4) a Makefile for the code. The report, Makefile and source codes must be submitted as a single tar file whose name has the following form: GROUP_ProjectNUMBER.tar.gz where GROUP is the group name and NUMBER is the project number. The report must contain the following:
The projects are grouped in five main categories: (1) Client/server Programming (2) reliable data transport (3) Network Address Translation (4) Voice over IP and (5) Multimedia streaming. Each project includes the design of a system or protocol and the implementation (programming) of the system or protocol. All the projects will be implemented using either C, C++ or Java API on Linux. You are however urged to use Java for two reasons: All the practicals have been successfully implemented in Java and the marks that each section counts have been allocated with Java socket programming in mind. Also bear in mind that if you use another language, the assistants might not be able to help you as much.
|Tutorial||Summary||Hand out date
| ||Report and style guidelines.||Guide
|1|| Multi-Client/Server chat program.
|2||Implementing a reliable Blast user datagram protocol.||25 August
|| 8 September
|3||Network Address Translation.|| 8 September
|| 29 September
|4||Voice over IP. ||29 September ||20 October
|5 ||P2P file sharing program. ||20 October || 3 November ||Project
|Tests & Examinations||Class Schedule||CS354 On-line||Further Reading|
|Documentation & Notes||Course: Marks||CS354 Home Page||CS354 FAQ|