Previous Page | Next Page

  1. Introduction
  2. Network Topology
  3. Hardware Connections
  4. TCP/IP Ports and Addresses
  5. Network Protocol Levels
  6. Data Link Layer and IEEE
  7. Network Protocol Categories
  8. Repeaters, Bridges, Routers
  9. ARP and RARP Address Translation
  10. Basic Addressing
  11. IP (Network)
  12. TCP (Transport)
  13. UDP (Transport)
  14. ICMP
  15. Hardware Cabling
  16. Wireless media
  17. Outside Connections
  18. Ethernet
  19. Token Ring
  20. ARCnet
  21. AppleTalk
  22. FDDI
  23. IPX/SPX
  24. NetBEUI
  25. AppleTalk
  26. SNA
  27. Others
  28. Simple Routing
  29. More Complex Routing
  30. IP Masquerading
  31. Firewalls
  32. Domain Name Service (DNS)
  33. Virtual Private Networking
  34. DHCP
  35. BOOTP
  36. RPC and NFS
  37. Broadcasting and Multicasting
  38. IGMP
  39. Dynamic Routing Protocols
  40. Simple Mail Transfer Protocol (SMTP)
  41. Simple Network Management Protocol
  42. Network Services
  43. Installing Drivers
  44. Network Operating Systems
  45. Applications
  46. Wide Area Networks
  47. Backing up the network
  48. Fault Tolerance
  49. Troubleshooting
  50. Commonly used Network Ports
  51. Networking Terms and Definitions
  52. Networking RFCs and Protocols
  53. Further Reading
  54. Credits

Internet Control Message Protocol

Internet Control Message Protocol (ICMP) defined by RFC 792 and RFC 1122 is used for network error reporting and generating messages that require attention. The errors reported by ICMP are generally related to datagram processing. ICMP only reports errors involving fragment 0 of any fragmented datagrams. The IP, UDP or TCP layer will usually take action based on ICMP messages. ICMP generally belongs to the IP layer of TCP/IP but relies on IP for support at the network layer. ICMP messages are encapsulated inside IP datagrams.

ICMP will report the following network information:

  • Timeouts
  • Network congestion
  • Network errors such as an unreachable host or network.

The ping command is also supported by ICMP, and this can be used to debug network problems.

ICMP Messages:

The ICMP message consists of an 8 bit type, an 8 bit code, an 8 bit checksum, and contents which vary depending on code and type. The below table is a list of ICMP messages showing the type and code of the messages and their meanings.

00Echo replyQuery
30Network UnreachableError
31Host UnreachableError
32Protocol UnreachableError
33Protocol UnreachableError
34Fragmentation needed with don't fragment bit setError
35Source route failedError
36Destination network unknownError
37Destination host unknownError
38Source host isolatedError
39Destination network administratively prohibitedError
310Destination host administratively prohibitedError
311Network Unreachable for TOSError
312Host Unreachable for TOSError
313Communication administratively prohibited by filteringError
314Host precedence violationError
315Precedence cutoff in effectError
40Source quenchError
50Redirect for networkError
51Redirect for hostError
52Redirect for type of service and networkError
53Redirect for type of service and hostError
80Echo requestQuery
90Normal router advertisementQuery
916Router does not route common trafficQuery
100Router SolicitationQuery
110Time to live is zero during transitError
111Time to live is zero during reassemblyError
120IP header badError
121Required option missingError
122Bad lengthError
130Timestamp requestQuery
140Timestamp replyQuery
150Information requestQuery
160Information replyQuery
170Address mask requestQuery
180Address mask requestQuery

ICMP is used for many different functions, the most important of which is error reporting. Some of these are "port unreachable", "host unreachable", "network unreachable", "destination network unknown", and "destination host unknown". Some not related to errors are:

  • Timestamp request and reply allows one system to ask another one for the current time.
  • Address mask and reply is used by a diskless workstation to get its subnet mask at boot time.
  • Echo request and echo reply is used by the ping program to test to see if another unit will respond.