ICMP, sigla para o inglês Internet Control Message Protocol (em português, Protocolo de Mensagens de Controle da Internet), é um protocolo integrante do Protocolo IP, definido pelo RFC 792, é utilizado para comunicar informações da camada de rede, sendo o uso mais comum para fornecer relatórios de erros à fonte original. Qualquer computador que utilize IP precisa aceitar as mensagens ICMP e alterar o seu comportamento de acordo com o erro relatado. Os gateways devem estar programados para enviar mensagens ICMP quando receberem datagramas que provoquem algum erro.
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. Tempo de vida do pacote expirado)
O Gateway não consegue retransmitir os pacotes na frequência adequada (i.e. Gateway congestionado)
O Roteador ou Encaminhador indica uma rota melhor para a máquina a enviar pacotes.
Ferramentas comumente usadas em Windows baseadas nesse protocolo são: Ping e Traceroute.
Frames ICMP (1)
Echo Request / Reply Mensagens para funções de teste e controle da rede, caso a maquina esteja ligada ira responder com um reply e se estiver inalcançavel request; Usadas pelo comando PING
Destination Unreachable Enviado por um router que deixa fora um Datagrama;
Tipo de mensagem que é obtida quando não se consegue localizar o equipamento alvo; (nem todos os datagramas perdidos são detectados)
CODE - Indica a razão da perda do datagrama
Timestamp Request / Reply Mensagens para sincronização dos relógios das máquinas
Estrutura de um datagrama ICMP
Os pacotes ICMP são encapsulados dentro de datagramasIPv4 composto pelas secções cabeçalho (header) e dados.
Cabeçalho (Header)
Este começa no final do cabeçalho IPv4 e é constituído por 8 bytes.
O tamanho da secção dos dados de um pacote ICMP é variável. As mensagens de erro ICMP contêm uma cópia do cabeçalho IPv4 completo, bem como pelo menos 8 bytes dos dados provenientes do mesmo datagrama IPv4 que causou a mensagem de erro. O tamanho máximo de uma mensagem ICMP é de 576 bytes.
Mensagens de controle
As mensagens de controle são identificadas pelo valor no campo tipo, o campo código fornece informação contextual adicional para a mesma. Desde a implementação do protocolo ICMP, algumas mensagens de controle foram postas em desuso.