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 / ReplyMensagens 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 UnreachableEnviado 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 / ReplyMensagens para sincronização dos relógios das máquinas

Estrutura de um datagrama ICMP Os pacotes ICMP são encapsulados dentro de datagramas IPv4 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.

Tipo (Type) O tipo de mensagem ICMP, ver Mensagens de controle.

Código (Code) O código (subtipo) da mensagem ICMP, ver Mensagens de controle.

Checksum (Soma de verificação) Especificado em RFC 1071, é uma soma de verificação da integridade dos dados, calculado a partir do cabeçalho e dos dados do pacote ICMP.

Resto do cabeçalho (Rest of Header) Um campo de 4 bytes, de conteúdo variado dependendo do tipo e código ICMP. +Formato de um cabeçalho ICMPOffsetsByte 0 1 2 3ByteBit 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0TipoCódigoChecksum 4 32Resto do Cabeçalho (Rest of Header)

Dados 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. +Principais mensagens de controleComputer Networking – A Top-Down Approach by Kurose and RossTipoCódigoEstadoDescrição0 – Echo Reply0Resposta Echo (usado para fazer ping)1 and 2não atribuídosReservado3 – Destination Unreachable0Rede de destino inacessível1Máquina de destino inacessível2Protocolo de destino inacessível3Porta de destino inacessível4Fragmentação necessária mas impossível devido à bandeira (flag) DF5Falha na rota de origem6Rede de destino desconhecida7Máquina de destino desconhecida8Source host isolated9Network administratively prohibited10Host administratively prohibited11Rede inacessível para ToS12Máquina inacessível para ToS13Communication administratively prohibited14Host Precedence Violation15Precedence cutoff in effect4 – Source Quench0deprecadaSource quench (congestion control)5 – Redirect Message0Redirecionamento do datagrama para a rede.1Redirecionamento do datagrama para a máquina2Redirecionamento do datagrama para o ToS & rede3Redirecionamento do datagrama para o ToS & máquina6deprecadaAlternate Host Address7não atribuídoReservado8 – Echo Request0Echo request (used to ping)9 – Router Advertisement0Router Advertisement10 – Router Solicitation0Router discovery/selection/solicitation11 – Time Exceeded0TTL expired in transit1Fragment reassembly time exceeded12 – Parameter Problem: Bad IP header0Pointer indicates the error1Opção obrigatória em falta2Bad length13 – Timestamp0Timestamp14 – Timestamp Reply0Timestamp reply15 – Information Request0deprecadaInformation Request16 – Information Reply0deprecadaInformation Reply17 – Address Mask Request0deprecadaPedido da mascara do endereço18 – Address Mask Reply0deprecadaResposta da mascara do endereço19reservedReservada para segurança20 through 29reservadasReserved for robustness experiment30 – Traceroute0deprecadaInformation Request31deprecadaDatagram Conversion Error32deprecadaMobile Host Redirect33deprecadaWhere-Are-You (originalmente destinado para IPv6)34deprecadaHere-I-Am (originalmente destinado para IPv6)35deprecadaMobile Registration Request36deprecadaMobile Registration Reply37deprecadaDomain Name Request38deprecadaDomain Name Reply39deprecadaSKIP Algorithm Discovery Protocol, Simple Key-Management for Internet Protocol40Photuris, Security failures41experimentalICMP for experimental mobility protocols such as Seamoby [RFC4065]42 – Extended Echo Request0Sem erros43 – Extended Echo Reply0Sem erros1Pedido mal formado2Interface desconhecida3No Such Table Entry4Múltiplas interfaces satisfazem o pedido44 through 252não atribuídosReservado253experimentalRFC3692-style Experiment 1 (RFC 4727)254experimentalRFC3692-style Experiment 2 (RFC 4727)255reservadoReservado

Ligações externas RFC 792, Internet Control Message Protocol. RFC 1071, Computing the Internet Checksum.

Referências ICMP ICMP Categoria:Protocolos de camada de rede