IP has a companion protocol that we haven't talked about yet.
This is the Internet Control Message Protocol (ICMP), used by
the kernel networking code to communicate error messages to
other hosts. For instance, assume that you are on erdos again
and want to telnet to port 12345 on quark, but there's no
process listening on that port. When the first TCP packet for
this port arrives on quark, the networking layer will recognize
this arrival and immediately return an ICMP message to erdos
stating “Port Unreachable.” The ICMP protocol provides several
different messages, many of which deal with error conditions.
However, there is one very interesting message called the
Redirect message. It is generated by the routing module when it
detects that another host is using it as a gateway, even though
a much shorter route exists. For example, after booting, the
routing table of sophus may be incomplete. It might contain the
routes to the Mathematics network, to the FDDI backbone, and the
default route pointing at the Gr