The Internet Control Message Protocol (ICMP) is a network-layer Internet protocol that provides message packets to report errors and other information regarding IP packet processing back to the source. ICMP is documented in RFC 792.
Announces network errors such
as a host or entire portion of the network being unreachable, due to some
failure. A TCP or UDP packet directed at a port number with no receiver
attached is also reported via ICMP.
Announces network congestion
when a router begins buffering too many packets, due to an inability to
transmit them as fast as they are being received, it generates ICMP Source
Quench messages. Directed at the sender, these messages cause the rate
of packet transmission to be slow. Of course, generating too many Source
Quench messages would cause even more network congestion, so they are
used sparingly.
Assists in troubleshooting and network
discovery. ICMP supports an Echo function, which just sends a packet
on a round-trip between two hosts. Ping, is based on this feature. Ping
transmits a series of packets, measuring average round-trip times and
computes loss percentages.
Announces Timeouts If an IP packet's TTL field drops to zero, the router discarding the packet often generates an ICMP packet. TraceRoute is a tool which maps network routes by sending packets with small TTL values and watches the ICMP timeout announcements.