The Internet Control Message Protocol ICMP

This protocol is actually part of an IP implementation. It is used to report errors in IP datagram routing. It is also a form of flow control, although ICMP messages are neither guarenteed to be received or transmitted. It is merely a way to provide feedback to the sender of IP datagrams.

From RFC792:


   The Internet Protocol [IP] is not designed to be absolutely reliable.  The
   purpose of these control messages [ICMP] is to provide feedback about
   problems in the communication environment, not to make IP reliable.
   There are still no guarantees that a datagram will be delivered or a
   control message will be returned.  Some datagrams may still be
   undelivered without any report of their loss.  The higher level
   protocols that use IP [TCP] must implement their own reliability procedures
   if reliable communication is required.

   The ICMP messages typically report errors in the processing of
   datagrams.  To avoid the infinite regress of messages about messages
   etc., no ICMP messages are sent about ICMP messages.  Also ICMP
   messages are only sent about errors in handling fragment zero of
   fragemented datagrams.  (Fragment zero has the fragment offeset equal
   zero).

Values of IP header fields for all ICMP messages:

ICMP messages use the basic IP header, with the following values for specific fields:

Protocol = 1

Specific ICMP Messages:

  Type
    0  Echo Reply
    3  Destination Unreachable
    4  Source Quench
    5  Redirect
    8  Echo
   11  Time Exceeded
   12  Parameter Problem
   13  Timestamp
   14  Timestamp Reply
   15  Information Request
   16  Information Reply
[Top] [Ralph's Home Page]