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:
A mensagem ICMP em si é mostrada na figura a seguir. Ela contém os campos Tipo, Código, Checksum e Conteúdo:
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).
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
De forma alguma Roger. Não há limite de idade para ingressar nessa área. Tenho alunos nas escola onde atuo muito mais velhos do que isso, todos procurando se especializar para entrar na área, alguns vindo de outras posições em TI e alguns vindo de outras áreas de atuação.
Eu recomendo que você comece instalando uma máquina virtual, assistindo aos vídeos da lista de LPI, e tentando usar todos os dias o Linux para ir se habituando. E então tirar alguma certificação, como a LPI 1, para ajudar a sua inserção no mercado de trabalho de TI. Também é importante estudar alguns livros, como esse aqui:
http://www.livrariacultura.com.br/p/certificacao-linux-lpi-rapido-e-pratico-29960743?id_link=8787&adtype=pla&gclid=CjwKEAjwpuSvBRDSkaes4OasuEESJACfwIc_QiCGHGg69Vr0Ql5q-hgsd3Njwp0f8yEfyFvHfYpUthoCSRTw_wcB
Qualquer dúvida, entre em contato!
Abraço, e bons estudos!
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