O ICMP permite que os roteadores relatem erros ou informações sobre circunstâncias inesperadas. Ele é usado por hospedeiros e roteadores para troca de informações da camada de rede entre si; a utilização mais comum é para comunicação de erros. O ICMP deve ser permitido em uma rede para que os hosts enviem mensagens de erro ou de controle para outros hosts da rede.
É freqüentemente considerado parte do IP, mas, em termos de arquitetura, está logo acima do IP. As mensagens ICMP são carregadas dentro de datagramas IP como carga útil IP, exatamente como segmentos TCP ou UDP, que também são carregados como carga útil.
No caso de erro num datagrama ICMP, nenhuma mensagem de erro é emitida para evitar um efeito “bola de neve” no caso de incidente sobre a rede.
O ICMP é um mecanismo para reportar erros, e embora, sugira a possibilidade de correção do erro, ele não especifica nenhuma ação de correção.
As mensagens ICMP possuem um identificador principal de tipo (TYPE) e um identificador de subtipo (CODE) e são encapsuladas em datagramas IP
As mensagens ICMP geralmente são enviadas automaticamente em uma das seguintes situações:
Um pacote IP não consegue chegar ao seu destino (i.e. TTL expirado)
O gateway não consegue retransmitir os pacotes na frequência adequada (i.e. Gatewaycongestionado)
O roteador ou encaminhador indica uma rota melhor para a máquina enviar pacotes.
As ferramentas comumente usadas e baseadas nesse protocolo são o ping e traceroute.