Curso de Redes – Protocolo ICMP – Internet Control Message Protocol

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:

Pacote ICMP - Curso de Redes

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

Mensagem ICMP

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:

  • Mensagens de Erro: Usadas para informar a um dispositivo transmissor que um erro ocorreu durante a transmissão do datagrama. Geralmente os erros são relacionados à estrutura do datagrama em si, ou problemas encontrados durante o tráfego dos pacotes através da rede.
  • Mensagens de Informação (Consultas / Query): São mensagens que permitem aos dispositivos trocarem informações entre si e realizarem determinados tipos de testes e diagnósticos.

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:

  • Como resposta a outra mensagem de erro. Isso evita o surgimento de loops infinitos de mensagens de erro. Porém, mensagens de erro podem ser geradas em resposta a mensagens de informação.
  • Resposta a datagramas de Broadcast ou Multicast.
  • Resposta a datagramas cujo endereço IP de origem não seja um endereço unicast.
  • Em resposta a fragmentos de datagramas IP, exceto o primeiro – os demais fragmentos de um datagrama não geram mensagens de erro.

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).

Sobre Fábio dos Reis (1325 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

3 Comentários em Curso de Redes – Protocolo ICMP – Internet Control Message Protocol

  1. Olá fabio. Gostaria que me ajudasse. Trabalhei com suporte windows na IBM em 2005 terceirizado e por uma oportunidade de trabalho na área da imóveis acabei abandonando tudo e hj me arrependo muito. Um amigo meu da IBM aqui de Hortolândia me disse que tem vagas para suporte unix e tal…agora estou com 30 anos e fora e desatualizado da área de ti. VC acha q estou muito velho para começar a estudar linux do zero e quem sabe tentar uma lpi 1 para tentar uma vaga como suporte linux’unix.? E se VC acha q tenho condições qual material poderia estudar. Agradeço desde ja

  2. Hi Fabio how’s it going, I hope you’re fine. Well, had a lot of time that I have followed you on youtube channel and I have liked of your video lesson.
    How you may know, I’m brazilian, how you can see it, because what I have wrote here in english. I’m english student and I look for write everything in english and listen to what I can in english.
    Of course, I don’t come here to write about me and what i study. I come here to thank you about everything. And I did a course around 1 year and now during my lunch I’m seeking study a little 30 minutes, practice, but sometimes I stay stoped because happen a wrong when I write a command.

    Another thing interesting that I want to tell you, I have this book the Third Edition all in english and I have too some ebook called “Foca Linux” and ebook from my last course of linux.

    Thanks for all and I want to take the opportunity to apologize by my mistake wrote in english.

    Best Regards,

    Roberson

Escreva um comentário

Seu e-mail não será divulgado


*