Internet Control Message Protocol

From Computing and Software Wiki

(Difference between revisions)
Jump to: navigation, search
Line 4: Line 4:
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. <sup>[2]</sup>
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. <sup>[2]</sup>
===Format===
===Format===
 +
ICMP messages use the basic IP header. The first octet of the data portion of the datagram is the ICMP type field. The value of this type field determines the format of the remaining data.
 +
 +
===Partial List of Permitted Control Messages===
 +
{|border="1"
 +
! Type
 +
! Code
 +
! Description
 +
|-
 +
| 0 - [[ping|Echo Reply]]
 +
|                0    || Echo reply (used to [[ping]])
 +
|-
 +
| 1 and 2
 +
|                    N/A || ''Reserved''
 +
|-
 +
|rowspan=14| 3 - [[ICMP Destination Unreachable|Destination Unreachable]] 
 +
|                  0  || Destination network unreachable
 +
|-
 +
|                  1  || Destination host unreachable
 +
|-
 +
|                  2  || Destination protocol unreachable
 +
|-
 +
|                  3  || Destination port unreachable
 +
|-
 +
|                  4  || Fragmentation required, and DF flag set
 +
|-
 +
|                  5  || Source route failed
 +
|-
 +
|                  6  || Destination network unknown
 +
|-
 +
|                  7  || Destination host unknown
 +
|-
 +
|                  8  || Source host isolated
 +
|-
 +
|                  9  || Network administratively prohibited
 +
|-
 +
|                10  || Host administratively prohibited
 +
|-
 +
|                11  || Network unreachable for TOS
 +
|-
 +
|                12  || Host unreachable for TOS
 +
|-
 +
|                13  || Communication administratively prohibited
 +
|-
 +
| 4 - [[ICMP Source Quench|Source Quench]]
 +
|                  0  || Source quench (congestion control)
 +
|-
 +
|rowspan=4| 5 - [[ICMP Redirect Message|Redirect Message]]
 +
|                  0  || Redirect Datagram for the Network
 +
|-
 +
|                  1  || Redirect Datagram for the Host
 +
|-
 +
|                  2  || Redirect Datagram for the TOS & network
 +
|-
 +
|                  3  || Redirect Datagram for the TOS & host
 +
|-
 +
| 6            ||  N/A    || Alternate Host Address
 +
|-
 +
| 7            ||  N/A    || ''Reserved''
 +
|-
 +
| 8 - [[ping|Echo Request]]
 +
|                  0  || Echo request
 +
|-
 +
| 9 - Router Advertisement
 +
|                  0  || Router Advertisement
 +
|-
 +
| 10 - Router Solicitation
 +
|                  0  || Router discovery/selection/solicitation
 +
|-
 +
|rowspan=2| 11 - [[ICMP Time Exceeded|Time Exceeded]]
 +
|                  0  || TTL expired in transit
 +
|-
 +
|                  1  || Fragment reassembly time exceeded
 +
|-
 +
|rowspan=3| 12 - Parameter Problem: Bad IP header
 +
|                  0  || Pointer indicates the error
 +
|-
 +
|                  1  || Missing a required option
 +
|-
 +
|                  2  || Bad length
 +
|-
 +
| 13 - [[ICMP Timestamp|Timestamp]]
 +
|                  0  || Timestamp
 +
|-
 +
| 14 - [[ICMP Timestamp Reply|Timestamp Reply]]
 +
|                  0  || Timestamp reply
 +
|-
 +
| 15 - Information Request
 +
|                  0  || Information Request
 +
|-
 +
| 16 - Information Reply
 +
|                  0  || Information Reply
 +
|-
 +
| 17 - [[ICMP Address Mask Request|Address Mask Request]]
 +
|                  0  || Address Mask Request
 +
|-
 +
| 18 - [[ICMP Address Mask Reply|Address Mask Reply]]
 +
|                  0  || Address Mask Reply
 +
|-
 +
| 19          ||  N/A  || ''Reserved'' for security
 +
|-
 +
| 20 to 29||  N/A  || ''Reserved'' for robustness experiment
 +
|-
 +
| 30 - Traceroute
 +
|                  0  || Information Request
 +
|-
 +
| 31          ||  N/A    || Datagram Conversion Error
 +
|-
 +
| 32          ||  N/A    || Mobile Host Redirect
 +
|-
 +
| 33          ||  N/A    || Where-Are-You (originally meant for [[IPv6]])
 +
|-
 +
| 34          ||  N/A    || Where-Are-You|Here-I-Am (originally meant for IPv6)
 +
|-
 +
| 35          ||  N/A    || Mobile Registration Request
 +
|-
 +
| 36          ||  N/A    || Mobile Registration Reply
 +
|-
 +
| 37          ||  N/A    || Domain Name Request
 +
|-
 +
| 38          ||  N/A    || Domain Name Reply
 +
|-
 +
| 39          ||  N/A    || SKIP Algorithm, Simple Key-Management
 +
|-
 +
| 40          ||  N/A    || Photuris, Security failures
 +
|-
 +
| 41          ||  N/A    || ICMP for experimental mobility protocols
 +
|-
 +
| 42 through 255||  N/A  || ''Reserved''
 +
|}
 +
<sup>[3],[4]</sup>
 +
Line 10: Line 141:
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.
 +
#ICMP. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol
== See also ==
== See also ==

Revision as of 19:29, 12 April 2009

The Internet Control Message Protocol (ICMP) is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the Internet Protocol (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than ping and traceroute, ICMP is not usually used directly by user applications.[1]

Contents

Specification

ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. [2]

Format

ICMP messages use the basic IP header. The first octet of the data portion of the datagram is the ICMP type field. The value of this type field determines the format of the remaining data.

Partial List of Permitted Control Messages

Type Code Description
0 - Echo Reply 0 Echo reply (used to ping)
1 and 2 N/A Reserved
3 - Destination Unreachable 0 Destination network unreachable
1 Destination host unreachable
2 Destination protocol unreachable
3 Destination port unreachable
4 Fragmentation required, and DF flag set
5 Source route failed
6 Destination network unknown
7 Destination host unknown
8 Source host isolated
9 Network administratively prohibited
10 Host administratively prohibited
11 Network unreachable for TOS
12 Host unreachable for TOS
13 Communication administratively prohibited
4 - Source Quench 0 Source quench (congestion control)
5 - Redirect Message 0 Redirect Datagram for the Network
1 Redirect Datagram for the Host
2 Redirect Datagram for the TOS & network
3 Redirect Datagram for the TOS & host
6 N/A Alternate Host Address
7 N/A Reserved
8 - Echo Request 0 Echo request
9 - Router Advertisement 0 Router Advertisement
10 - Router Solicitation 0 Router discovery/selection/solicitation
11 - Time Exceeded 0 TTL expired in transit
1 Fragment reassembly time exceeded
12 - Parameter Problem: Bad IP header 0 Pointer indicates the error
1 Missing a required option
2 Bad length
13 - Timestamp 0 Timestamp
14 - Timestamp Reply 0 Timestamp reply
15 - Information Request 0 Information Request
16 - Information Reply 0 Information Reply
17 - Address Mask Request 0 Address Mask Request
18 - Address Mask Reply 0 Address Mask Reply
19 N/A Reserved for security
20 to 29 N/A Reserved for robustness experiment
30 - Traceroute 0 Information Request
31 N/A Datagram Conversion Error
32 N/A Mobile Host Redirect
33 N/A Where-Are-You (originally meant for IPv6)
34 N/A Here-I-Am (originally meant for IPv6)
35 N/A Mobile Registration Request
36 N/A Mobile Registration Reply
37 N/A Domain Name Request
38 N/A Domain Name Reply
39 N/A SKIP Algorithm, Simple Key-Management
40 N/A Photuris, Security failures
41 N/A ICMP for experimental mobility protocols
42 through 255 N/A Reserved

[3],[4]


References

  1. Douglas E. Comer (2000). "Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture". Internet Protocol: Error and Control Messages(ICMP) 129-145, Prentice Hall
  2. Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792
  3. ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.
  4. ICMP. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol

See also

External links

Internet Control Message Protocol - DARPA Internet Program Protocol Specification

--Collim 21:26, 4 April 2009 (EDT)

Personal tools