ICMP Protocol - Internet Control Message Protocol

The Internet Control Message Protocol communicates errors messages between systems that require attention. This error is not usually at the user level, the error is handled by the application layer. In the OSI Reference model, ICMPs are generally considered part of the IP layer.

To put to plain and simple, ICMP messages are sent "behind the scenes" to your applications to tell them if there is a problem with the connection or transfer of data. These messages tell your application to change what they are doing, change how they are sending and basically give them an error code on how they can successfully fix their problems.

ICMPs' are sent in a standard IP datagram, this datagram contains an IP header of twenty (20) bytes and then the ICMP message. There are fifteen values for the type field of the datagram which identifies the type of ICMP message. The "code" portion of the datagram specifies the condition of the "type" even further. This sounds a bit confusing at first, but you have two major categories, the primary "problem," and then a secondary more in depth look at that problem. This will all make more sense when you look at information below.

Type 0, code 0 - echo reply

Type 3 (destination unreachable)
Type 3, code 0 - network unreachable
Type 3, code 1 - host unreachable
Type 3, code 2 - protocol unreachable
Type 3, code 3 - port unreachable
Type 3, code 4 - fragmention needed
Type 3, code 5 - source route failed
Type 3, code 6 - destination network unknown
Type 3, code 7 - destination host unknown
Type 3, code 8 - source host isolated
Type 3, code 9 - destination network administratively prohibited
Type 3, code 10 - destination host administratively prohibited
Type 3, code 11 - network unreachable for TOS
Type 3, code 12 - host unreachable for TOS
Type 3, code 13 - communication administratively prohibited by filtering
Type 3, code 14 - host precedence violation
Type 3, code 15 - precedence cutoff in effect

Type 4, code 0 - source quench

Type 5 (redirects)
Type 5, code 0 - redirect for network
Type 5, code 1 - redirect for host
Type 5, code 2 - redirect for type of service and network
Type 5, code 3 - redirect for type of service and host

Type 8, code 0 - echo request

Type 9, code 0 - router advertisement

Type 10, code 0 - router solicitation

Type 11 (time exceeded)
Type 11, code 0 - time to live (TTL) equals 0 during transit
Type 11, code 1 - time to live (TTL) equals 0 during reassembly

Type 12 (parameter problem)
Type 12, code 0 - IP header bad
Type 12, code 1 - required option missing
Type 13, code 0 - timestamp request

Type 14, code 0 - timestamp reply

Type 15, code 0 - information request

Type 16, code 0 - information reply

Type 17, code 0 - address mask request

Type 18, code 0 - address mask reply

As you can see from the above information, the primary "type" groups are the main problem, with the "code" further specifying the problem. Much of this stuff doesn't make sense to the human end-user anyway, but it means a lot to the software developers who use these requests to fix problems in their coding.

ICMP's are a nice behind the scenes helper that are good to have their, but be thankful you don't really have to deal with them. For even more detailed information on the Internet Control Message Protocol (ICMP) the protocol is defined in RFC 792.

Ken Dennis

art-telecom-senegal.org ©