Internet Control Message Protocol
From Computing and Software Wiki
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 | + | ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and contains four octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. |
===Partial List of Permitted Control Messages=== | ===Partial List of Permitted Control Messages=== | ||
Line 59: | Line 59: | ||
| 3 || Redirect Datagram for the TOS & host | | 3 || Redirect Datagram for the TOS & host | ||
|- | |- | ||
- | | 6 || | + | | 6 || ? || Alternate Host Address |
|- | |- | ||
| 7 || N/A || ''Reserved'' | | 7 || N/A || ''Reserved'' | ||
Line 109: | Line 109: | ||
| 0 || Information Request | | 0 || Information Request | ||
|- | |- | ||
- | | 31 || | + | | 31 || ? || Datagram Conversion Error |
|- | |- | ||
- | | 32 || | + | | 32 || ? || Mobile Host Redirect |
|- | |- | ||
- | | 33 || | + | | 33 || ? || Where-Are-You (originally meant for [[IPv6]]) |
|- | |- | ||
- | | 34 || | + | | 34 || ? || Where-Are-You|Here-I-Am (originally meant for IPv6) |
|- | |- | ||
- | | 35 || | + | | 35 || ? || Mobile Registration Request |
|- | |- | ||
- | | 36 || | + | | 36 || ? || Mobile Registration Reply |
|- | |- | ||
- | | 37 || | + | | 37 || ? || Domain Name Request |
|- | |- | ||
- | | 38 || | + | | 38 || ? || Domain Name Reply |
|- | |- | ||
- | | 39 || | + | | 39 || ? || SKIP Algorithm, Simple Key-Management |
|- | |- | ||
- | | 40 || | + | | 40 || ? || Photuris, Security failures |
|- | |- | ||
- | | 41 || | + | | 41 || ? || ICMP for experimental mobility protocols |
|- | |- | ||
| 42 to 255|| N/A || ''Reserved'' | | 42 to 255|| N/A || ''Reserved'' |
Revision as of 19:46, 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 and also an ICMP header. The ICMP header starts after bit 160 in the IP header and contains four octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message.
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 | ? | 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 | ? | Datagram Conversion Error |
32 | ? | Mobile Host Redirect |
33 | ? | Where-Are-You (originally meant for IPv6) |
34 | ? | Here-I-Am (originally meant for IPv6) |
35 | ? | Mobile Registration Request |
36 | ? | Mobile Registration Reply |
37 | ? | Domain Name Request |
38 | ? | Domain Name Reply |
39 | ? | SKIP Algorithm, Simple Key-Management |
40 | ? | Photuris, Security failures |
41 | ? | ICMP for experimental mobility protocols |
42 to 255 | N/A | Reserved |
[3],[4]
References
- 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
- 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. 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)