This preview shows page 1. Sign up to view the full content.
Unformatted text preview: are
decrementing the TTL on the returned ICMP message correctly.
We must be careful when looking at the incoming TTL, since sometimes a value other
than what we expect can be caused by the return ICMP message taking a different path
from the outbound UDP datagram. In this example, however, it confirms what we suspectthere are missing routers that traceroute is not finding when the loose source routing
option is used. file:///D|/Documents%20and%20Settings/bigini/Docu...homenet2run/tcpip/tcp-ip-illustrated/append_d.htm (5 of 20) [12/09/2001 14.48.03] Appendix D: Solutions to Selected Exercises 8.7 The ping client sets the identifier field in the ICMP echo request message (Figure
7.1) to its process ID. The ICMP echo reply contains this identifier field. Each client
looks at this returned identifier field and handles only those that it sent.
The traceroute client sets its UDP source port number to the logical-OR of its
process ID and 32768. Since the returned ICMP message always contains the first 8 bytes
of the IP datagram that generated the error (Figure 6.9), which includes the entire UDP
header, this source port number is returned in the ICMP error.
8.8 The ping client sets the optional data portion of the ICMP echo request message to
the time at which the packet is sent. This optional data must be returned in the ICMP
echo reply. This allows ping to calculate the accurate round-trip time, even if packets
are returned out of order.
The traceroute client can't operate this way because all that's returned in the ICMP
error is the UDP header (Figure 6.9), none of the UDP data. Therefore traceroute
must remember when it sends a request, wait for the reply, and calculate the time
This illustrates another difference between Ping and Traceroute: Ping sends one packet a
second, regardless of whether it receives any replies, while Traceroute sends a request
and then waits for either a reply or a timeout before sending the next request.
8.9 Since Solaris 2.2 starts ephemer...
View Full Document
- Spring '12