Bóson Treinamentos em Ciência e Tecnologia

Curso de Redes – Protocolo ICMP – Internet Control Message Protocol

Curso de Redes - Protocolo ICMP

Protocolo ICMP – Internet Control Message Protocol

O Protocolo ICMP, cuja sigla significa “Protocolo de Controle de Mensagens da Internet”, é um protocolo que comunica mensagens de erro e outras condições que requeiram atenção em uma rede. O protocolo IP, que fornece o mecanismo para entrega de datagramas entre dispositivos, carece dessa funcionalidade, e por isso o ICMP foi criado, sendo um protocolo extremamente importante por conta dessas capacidades. Geralmente as mensagens ICMP são tratadas na camada de Internet (IP) ou então na camada de Transporte (TCP ou UDP).

Neste artigo vou tratar do protocolo ICMP “original”, que chamamos hoje de ICMPv4. Com o advento do IPv6, uma nova versão do ICMP foi criada, sendo batizada como ICMPv6. Tratarei das características específicas do ICMPv6 em outro artigo. O protocolo ICMPv4 é tratado na RFC 792.

Mensagens ICMP

As mensagens ICMP são transmitidas em datagramas IP, conforme podemos ver a seguir:

A mensagem ICMP em si é mostrada na figura a seguir. Ela contém os campos Tipo, Código, Checksum e Conteúdo:

Formato da Mensagem ICMP

Podem ser usados até 256 valores diferentes (8 bits) para o campo Tipo, que identifica a mensagem ICMP em particular. No protocolo ICMPv6 as classes de mensagens são separadas, de modo que os tipos de 0 a 127 são mensagens de erro, e os tipos de 128 a 255 são mensagens informativas. Já no protocolo ICMPv4 não é possível discernir a classe de mensagens dessa forma.

Alguns tipos de mensagens possuem valores diferentes no campo Código para especificar com mais detalhes o tipo. É como uma espécie de “subtipo”, e cada tipo de mensagem pode ter até 256 subtipos associados.

Já o campo checksum (verificação de erros) trata da mensagem ICMP completa, incluindo o campo de conteúdo.

Classes de Mensagens ICMP

As mensagens ICMP podem ser divididas em duas grandes classes:

Existem algumas regras específicas que governam a forma como as mensagens de erro são geradas. Mensagens ICMP de erro NÃO são geradas nos seguintes casos:

Cada mensagem de erro ICMPv4 inclui o cabeçalho IP completo do datagrama e os primeiros 8 bytes do payload (dados). Isso significa que a mensagem de erro inclui o cabeçalho UDP completo, ou os primeiros 8 bytes do cabeçalho TCP – dependendo do protocolo usado. Em ambos os casos, os números de portas de origem e destino são incluídos na mensagem.

Vejamos os tipos e códigos de mensagens ICMP existentes. A tabela a seguir é baseada nos dados contidos na página “Parâmetros ICMP” da IANA:

Tipo Código Descrição
0 0 Echo Reply (Resposta de Eco, usado pelo comando ping)
3   Destino Inalcançável
0 Rede de destino inalcançável
1 Host de destino inalcançável
2 Protocolo de destino inalcançável
3 Porta de destino inalcançável
4 Fragmentação requerida, e bit DF configurado
5 Falha na rota de origem
6 Rede de destino desconhecida
7 Host de destino desconhecido
8 Host de origem isolado
9 Rede proibida administrativamente
10 Host proibida administrativamente
11 Rede inalcançável para TOS
12 Host inalcançável para TOS
13 Comunicação proibida administrativamente
14 Violação de precedência de Host
15 Corte de precedência em efeito
4 0 Fonte saciável (source quench) – Controle de fluxo elementar
5   Redirecionamento
0 Redirecionamento para rede
1 Redirecionamento para host
2 Redirecionamento para tipo de serviço e rede
3 Redirecionamento para tipo de serviço e host
7   Reservado (Não atribuído)
8 0 Echo Request (Requisição de Eco, usado pelo comando ping)
9 0 Anúncio de roteador
10 0 Solicitação de roteador
11   Tempo Excedido
0 TTL igual a 0 durante o trânsito
1 TTL igual a 0 durante reconstrução
12   Problema com parâmetros: Cabeçalho IP mal formado
0 Ponteiro indica o erro
1 Faltando opção requerida
2 Comprimento errado
13 0 Timestamp
14 0 Resposta do Timestamp
15 0 Pedido de informação
16 0 Resposta de informação
17 0 Requisição de máscara de endereço
18 0 Resposta de máscara de endereço
19   Reservado para segurança
20-29   Reservado para experimentos de robustez
30   Traceroute (deprecado)
31   Erro de Conversão de Datagrama (deprecado)
32   Redirecionamento de Host Móvel (deprecado)
33   IPv6 Where-are-you (deprecado)
34   IPv6 I-am-here (deprecado)
35   Requisição de Registro Móvel (deprecado)
36   Resposta de Registro Móvel (deprecado)
37   Requisição de Nome de Domínio (deprecado)
38   Resposta de Nome de Domínio (deprecado)
39   SKIP (deprecado)
40   Photuris (deprecado) (RFC 2521)
41   Mensagens ICMP para protocolos de mobilidade experimentais (RFC 4065)
42-252   Não atribuídos
253   Experimento 1 RFC 3692
254   Experimento 2 RFC 3692
255   Reservado

As mensagens mostradas na tabela anterior podem ser categorizadas em dois grandes grupos: Perguntas e Erros. Os tipos de mensagens que são perguntas são as de números de tipo 0, 8, 9, 10, 13, 14, 15, 16, 17 e 18. As demais mensagens são mensagens de erro.

Como existem literalmente dezenas de mensagens diferentes que podem ser geradas, iremos estudar apenas algumas delas mais a fundo. No artigo a seguir mostro o funcionamento de mensagens ICMPv4 do tipo Destino Inalcançável (tipo 3).

Sair da versão mobile