In this exercise we investigate two applications of the
Internet Control Message Protocol (ICMP):
1.
Textbook pages: Section 2.5.4 (pages 86–88) and Section
8.2.9 (pages 589–592).
RFC:
ICMP (RFC 792, http://www.freesoft.org/CIE/RFC/792/1.htm ).
The student knows how to capture packets using Ethereal. See Ethereal Lab Exercises for more information.
Traceroute
To answer the following questions, start Ethereal and open the packet capture file created above.
· Examine the protocol column in the top pane of the Ethereal window. You will find a series of ICMP packets. It is likely that these ICMP packets are preceded by a DNS query/response message pair.
· Identify the IP address returned in the DNS response message.
· Examine the IP packet that carries the first ICMP Echo Request. What is the destination IP address in the IP packet? What is the protocol type? What is the Time-to-Live?
· Next examine the ICMP message. What is the ICMP message type? What is the message identifier and sequence number?
· Highlight the data bytes carried in the request message. Note the corresponding character sequence in the third pane of the Ethereal window.
· What are the source and destination addresses in the IP packet that carries the first ICMP Echo Reply? What are the protocol type and the Time-to-Live?
· Now examine the ICMP reply message. What is the ICMP message type? Compare the message identifier and sequence number in the reply message with the corresponding numbers in the request message?
· Highlight the data bytes in the reply message and compare the data sequence with that in the request message.
· How do the identifier and sequence numbers change with time?
· Does the data sequence in the request and reply messages change?
·
Calculate the time that elapses between the
sending of each Echo request and the receipt of the corresponding Echo
reply. Compare the maximum,
average, and minimum of the delays with those provided by the
· Examine the protocol column in the top pane of the Ethereal window. You will find a series of ICMP packets. Once again, it is likely that these ICMP packets are preceded by a DNS query/response message pair.
· Identify the IP address returned in the DNS response message.
· Determine the destination address in the IP packet that carries the first ICMP Echo Request. Compare to the address returned by the DNS response message. What are the protocol type and the Time-to-Live in the IP packet?
· Record the header of the IP packet for future reference.
· Examine the ICMP message. What is the ICMP message type? What are the message identifier and sequence number?
· How many data bytes are carried in the request message? Note the character sequence corresponding to the data bytes in the third pane of the Ethereal window.
· What are the source and destination addresses in the IP packet that carries the ICMP Time Exceeded message?
· Now examine the ICMP message. What is the ICMP message type?
· The ICMP Type, Code, and Checksum are followed by 32 zeros and then by the IP header of the ICMP Echo Request Message. Compare the returned IP header to the IP header noted in step 6.
· Does the ICMP message carry any additional data?
· Next compare the message identifier and sequence number in the Time Exceeded message with the corresponding numbers in the request message?
· Track the evolution of the TTL in the Echo request packets. Are there any repeated values of TTL? Is there a pattern to the repetitions?
· List the sequence of the source IP addresses in the packets that carry the ICMP Time Exceeded messages. Compare to the list provided by Traceroute.
· What is the received ICMP message when the ICMP Echo reply finally reaches the desired host?
· Calculate the time that elapses between the sending of each Echo request and the receipt of the corresponding Time-Exceeded message. Compare the delay values obtained with the results provided by the Traceroute command.