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: