ICMP está a nivel 3 igual que IP y no da generalmente soporte a aplicaciones excepto ping y traceroute y está definido en la RFC 792 que tiene nombre homónimo al protocolo.
ICMP se utiliza para diganóstico o control y cuando hay un error se envía un mensaje ICMP.
Traceroute está hecho enviando datagramas IP con distintos TTLs y ping está hecho con mensajes echo request y echo reply.
Hay ICMP para ipv4 y para ipv6, no es el mismo protocolo, pero su función es la equivalente
Los mensajes tienen:
* tipo
* código
* checksum
* resto de la cabecera: varía en función de tipo y código