Das Internet Control Message Protocol (ICMP) ist ein Protokoll zur Übertragung von Statusinformationen und Fehlermeldungen in IP-Protokollen, TCP-Protokollen und UDP-Protokollen zwischen IP- Netzknoten. Besonders Gateways und Hosts benutzen ICMP, um Berichte über Probleme mit Datagrammen zur Originalquelle zurückzuschicken. Die Meldungen des ICMP-Protokolls sind in zwei Klassen definiert: In Fehlermeldungen und Informationsmeldungen.
Fehlermeldungen können über den Status der Verbindung informieren, wie " DEE nicht erreichbar", Wegumleitung, "Ressourcen nicht mehr nutzbar", " Zeit abgelaufen" oder Parameterprobleme. Und bei den Informationsmeldungen kann es sich Angaben für die Zeitmessung, Adressmaske, Router-Findung oder Echo handeln, mit denen festgestellt werden kann, ob ein Bestimmungsort erreichbar ist und antwortet.
Das ICMP-Protokoll wird von dem IP-Protokoll wie ein Protokoll höherer Schichten behandelt und ist integraler Bestandteil des IP-Protokolls. Daher setzt sich der ICMP-Header auch aus einem IP-Header mit nachfolgenden ICMP- Daten zusammen.
Das Datenformat von ICMP kennt den ICMP-Typ (8 Bit), den ICMP- Code (8 Bit) und die ICMP- Prüfsumme (16 Bit), gefolgt von der ICMP-Meldung (224 Bit). Je nach Meldung werden weitere Datenfelder hinzugefügt. So beispielsweise bei der Meldung Parameter-Probleme das 1 Byte lange Pointer-Feld oder im Falle des Echo-Request das Identification-Feld (8 Bit) und das Datenfeld für die Sequenznummer (8 Bit). Im Falle des Timestamp-Request addieren sich weitere drei vier Byte Datenfelder für den Timestamp hinzu: Originate Timestamp (4 Byte), Receive Timestamp (4 Byte) und Transmit Timestamp (4 Byte). Ähnliches gilt für die Bestimmung von Routern.
Das ICMP-Protokoll ist in RFC 792 veröffentlicht.