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).