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 (the transport layer, if TCP, or the application, if UDP) 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).
The Internet Control Message Protocol (ICMP) has many messages
that are identified by a "type" field, these are defined
by RFCs. Many of the types of ICMP message are now obsolete and
are no longer seen in the Internet. Some important ones which
are widely used include:
Echo Reply (0), Echo Request (8), Redirect (5), Destination Unreachable (3), Traceroute (30), Time Exceeded (11).
A list is shown below (the full list may be retrieved form the link at the base of this page):
Type Name Reference ---- ------------------------- --------- 0 Echo Reply [RFC792] 1 Unassigned [JBP] 2 Unassigned [JBP] 3 Destination Unreachable [RFC792] 4 Source Quench [RFC792] 5 Redirect [RFC792] 6 Alternate Host Address [JBP] 7 Unassigned [JBP] 8 Echo [RFC792] 9 Router Advertisement [RFC1256] 10 Router Selection [RFC1256] 11 Time Exceeded [RFC792] 12 Parameter Problem [RFC792] 13 Timestamp [RFC792] 14 Timestamp Reply [RFC792] 15 Information Request [RFC792] 16 Information Reply [RFC792] 17 Address Mask Request [RFC950] 18 Address Mask Reply [RFC950] 19 Reserved (for Security) [Solo] 20-29 Reserved (for Robustness Experiment) [ZSu] 30 Traceroute [RFC1393] 31 Datagram Conversion Error [RFC1475] 32 Mobile Host Redirect [David Johnson] 33 IPv6 Where-Are-You [Bill Simpson] 34 IPv6 I-Am-Here [Bill Simpson] 35 Mobile Registration Request [Bill Simpson] 36 Mobile Registration Reply [Bill Simpson] 37 Domain Name Request [RFC1788]
38 Domain Name Reply [RFC1788]
39 SKIP [Markson]
40 Photuris [RFC2521]
41-255 Reserved for future use
Many of these ICMP types have a "code" field. Here we list the types again with their assigned code fields.
Type Name
---- -------------------------
0 Echo Reply (used by "ping")
Codes
0 No Code
1 Unassigned
2 Unassigned
3 Destination Unreachable
Codes
0 Net Unreachable
1 Host Unreachable
2 Protocol Unreachable
3 Port Unreachable
4 Fragmentation Needed and Don't Fragment was Set
5 Source Route Failed
6 Destination Network Unknown
7 Destination Host Unknown
8 Source Host Isolated
9 Communication with Destination Network is
Administratively Prohibited
10 Communication with Destination Host is
Administratively Prohibited
11 Destination Network Unreachable for Type of Service
12 Destination Host Unreachable for Type of Service
13 Communication Administratively Prohibited
14 Host Precedence Violation
15 Precedence cutoff in effect
4 Source Quench
Codes
0 No Code
5 Redirect
Codes
0 Redirect Datagram for the Network (or subnet)
1 Redirect Datagram for the Host
2 Redirect Datagram for the Type of Service and Network
3 Redirect Datagram for the Type of Service and Host
6 Alternate Host Address
Codes
0 Alternate Address for Host
7 Unassigned
8 Echo (used by "ping")
Codes
0 No Code
9 Router Advertisement
Codes
0 Normal router advertisement
16 Does not route common traffic
10 Router Selection
Codes
0 No Code
11 Time Exceeded
Codes
0 Time to Live exceeded in Transit
1 Fragment Reassembly Time Exceeded
12 Parameter Problem
Codes
0 Pointer indicates the error
1 Missing a Required Option
2 Bad Length
13 Timestamp
Codes
0 No Code
14 Timestamp Reply
Codes
0 No Code
15 Information Request
Codes
0 No Code
16 Information Reply
Codes
0 No Code
17 Address Mask Request
Codes
0 No Code
18 Address Mask Reply
Codes
0 No Code
19 Reserved (for Security)
20-29 Reserved (for Robustness Experiment)
30 Traceroute
31 Datagram Conversion Error
32 Mobile Host Redirect
33 IPv6 Where-Are-You
34 IPv6 I-Am-Here
35 Mobile Registration Request
36 Mobile Registration Reply
37 Domain Name Request
38 Domain Name Reply
39 SKIP
40 Photuris
Codes
0 = Bad SPI
1 = Authentication Failed
2 = Decompression Failed
3 = Decryption Failed
4 = Need Authentication
5 = Need Authorization
Standards Documents: