The ICMP header is to be regarded as an extension of the IP header and an integral part of the IP protocol. It is transmitted within the data frame of the IP datagram and consists of the Type field, the Code field, each comprising one byte, the two-byte checksum field (ICMP Checksum) and the data field for the ICMP messages.
The packet types of the ICMP protocol
The Internet Control Message Protocol (ICMP) specifies several packet types, which are entered in the Type field depending on their function. The Type field and the Code field together specify the function of a message. However, the code field is only used for entries for certain packet types. For example, when a station or when the addressed network is not reachable (Type 3), when the datagram has to be redirected (Type 5), when the lifetime of the datagram has expired (Type 11) or when parameterization problems occur.
The different packet types support a wide variety of functions. For example, packet type 8 serves a ping request and packet type 0 serves a ping response. The requesting station enters the number 8 in the Type field, and the responding station enters the number 0. Ping can be used tochecknodes to see if they can receive IP datagrams. A Type 3 packet is returned by an IP router if it cannot reach the node or forward the datagram. Type 4 (source quench) packets are used for flow control. If a router cannot process the incoming datagrams, either because of a too high data rate or because the buffer overflows, then the router destroys the datagrams and sends in each case an ICMP message in which the number 4 is entered in the Type field to the sending station, so that this throttles the data stream.
Modification of routing tables
ICMP packets of types 5, 9 and 10 are used to check routing functions and to modify routing tables. These packet types are used both for connecting new devices and for configuration changes. An Information Request corresponds to type 15 and an Information Reply to type 16. type 17 is defined as Address Format Request and type 18 as Address Format Reply.
The checksum for the entire ICMP packet is calculated in the checksum field, a field 2 bytes long. At further control information there is a field for the ICMP identification. Here the identification value for the assignment of a fragment to a datagram is defined. The destination node uses the identification field to determine to which datagram a received datagram belongs.