Internet Control Message Protocol

Het Internet Control Message Protocol (ICMP) is een onderdeel van het internetprotocol (IP). Het wordt vooral gebruikt door besturingssystemen voor het sturen van foutmeldingen, bijvoorbeeld om te melden dat een bepaalde netwerkvoorziening niet beschikbaar is, of dat een bepaalde host of router niet bereikbaar is. Soms komt een computergebruiker ook direct met het protocol ICMP in aanraking, voornamelijk bij gebruik van de netwerkdiagnoseprogramma's ping en traceroute.

Hoewel het protocol beschreven wordt in een apart RFC-document dat losstaat van het document dat het IP zelf beschrijft, is ICMP een integraal onderdeel van IP en wordt de implementatie ervan voor iedere IP-module voorgeschreven. ICMP wordt gedefinieerd in RFC 792.[1] Voor Internet Protocol versie 6 (IPv6) wordt ICMP gedefinieerd in RFC 1885.[2] ICMP is een verbindingsloos protocol met IP-protocolnummer 1 voor IPv4 en 58 voor IPv6.[3]

Men zou ICMP kunnen beschrijven als het protocol dat de administratie van een netwerk verzorgt; het laat gebruikers toe problemen uit te pluizen en stelt TCP/IP-implementaties in staat om foutberichten te sturen naar communicatiepartners.

Structuur

ICMP is een heel eenvoudig protocol, met slechts drie headervelden:

  • Type (1 byte). Het ICMP Type bepaalt het soort bericht. Voorbeelden zijn: destination unreachable, echo request, redirect.
  • Code (1 byte). De ICMP Code wordt niet bij alle ICMP Types gebruikt, maar is een manier om een type verder op te delen, indien nodig. Zo wordt destination unreachable verder opgedeeld in port unreachable, host unreachable e.a., terwijl er aan de andere kant geen verdere opdeling is van echo request.
  • Checksum (2 bytes). De checksum wordt berekend over het hele te verzenden ICMP-pakket (met het veld checksum geïnitialiseerd tot 0).

Wat na de header komt, is afhankelijk van het ICMP-type. In de meeste gevallen worden er vier bytes overgeslagen en volgen dan de 64 eerste bits uit het originele IP-pakket dat het versturen van dit ICMP-pakket tot gevolg had, zodat de communicatiepartner kan begrijpen waarom die dat ICMP-pakket aankrijgt. De vier bytes tussenin worden gebruikt voor eventuele extra parameters.

Wanneer het ICMP-pakket echter geen reactie is op het verzenden van een eerder pakket (zoals bij echo en echo reply, ook wel gekend als ping en pong), is de verdere structuur van het pakket anders.