MCS-377 Lab 3: Network Layer (Fall 2016)

Due: Monday, November 21, 2016, at the start of the lecture

Objective

In this lab, you will gain a better understanding of Internet Control Message Protocol (ICMP). You will learn to implement a Ping application using ICMP request and reply messages.

Ping is a computer network application used to test whether a particular host is reachable across an IP network. It is also used to self-test the network interface card of the computer or as a latency test. It works by sending ICMP “echo reply” packets to the target host and listening for ICMP “echo reply” replies. The "echo reply" is sometimes called a pong. Ping measures the round-trip time, records packet loss, and prints a statistical summary of the echo reply packets received (the minimum, maximum, and the mean of the round-trip times and in some versions the standard deviation of the mean).

Your task is to develop your own Ping application in Python. Your application will use ICMP but, in order to keep it simple, will not exactly follow the official specification in RFC 1739. Note that you will only need to write the client side of the program, as the functionality needed on the server side is built into almost all operating systems.

For an optional part of the project, you can write a "distributed" set of procedures that implement a distributed asynchronous distance vector routing for a network example. Your program must be written in Java.

For project detail, please see: http://media.pearsoncmg.com/aw/aw_kurose_network_3/labs/lab6/lab6.html

Your implementations for ICMP Pinger and for distributed asynchronous distance vector routing algorithm will be graded separately. Your score for the ICMP Pinger will count towards the grade for your project 3; your score for the asynchronous distance vector routing algorithm (the optional part of the project) can replace the lowest score of your previous project.

Thus, you goal should be finishing the ICMP Pinger (and making sure that your implementation is perfect), before moving onto the asynchronous distance vector routing algorithm (that is, if you have the time).

Reports

Please refer to the full descriptions of the two tasks mentioned above on Moodle. For submission, please place all your code and screen shots for ICMP Pinger inside one file folder, and all your code for the asynchronous distance vector routing algorithm inside another. Zip both folders and submit them via Moodle. Of course, you will only submit one folder (one that contains your code and screen shots for ICMP Pinger) if you decided to not do the optional part of the project.