CS354: Practical Assignments

The Internet uses distributed applications which require the interaction of processes that run on two or more computers: a server process and one or more client processes competing for concurrent communication with a single server.

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:

When applicable, IETF draft/rfc compliant design and programming is encouraged. Students will work in groups of two.

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:

Click here for the test/project examination rules

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
Due date
Description

Report and style guidelines.

Guide
1 Multi-Client/Server chat program.
11 August
25 August
Project 1
2 Implementing a reliable Blast user datagram protocol. 25 August
8 September
Project 2
3 Network Address Translation. 8 September
29 September
Project 3
4 Voice over IP.
29 September
20 October
Project 4
5
P2P file sharing program.
20 October
3 November
Project 5

Tests & Examinations Class Schedule CS354 On-line Further Reading
Documentation & Notes Course: Marks CS354 Home Page CS354 FAQ


Custodian: AEK
Last updated: 27 July 2021