Se você já teve que resolver um problema de rede com certeza já utilizou os comandos do ICMP ping e trace, mas você sabe realmente em quais situações eles funcionam melhor?
Nesse artigo eu vou falar um pouco do protocolo utilizado para ambos os comandos traceroute e ping, assim como para reportar problemas na rede IP chamado de ICMP ou Internet Control Message Protocol.
O ICMP é importante tanto para sua vida prática como para provas de certificação, tais como CCENT 100-101 e CCNAX 200-120, assim como para concursos públicos na área de infraestrutura de TI.
Por isso leia com atenção, anote os principais pontos e se precisar utilize nossa área de comentários caso tenha alguma dúvida, combinado?
Nesse artigo você vai estudar os seguintes tópicos:
- Protocolo ICMP
- Funcionamento e uso do Ping
- Funcionamento e uso do Traceroute
- Formato do Pacote ICMP
- Dicas e Conclusão
Então vamos começar…
Protocolo ICMP
O ICMP é um protocolo integrante do Protocolo IP, definido pela RFC 792, e utilizado para fornecer relatórios de erros ao host que deu origem aos pacotes enviados na rede.
Qualquer computador que utilize o protocolo IP precisa aceitar as mensagens ICMP e alterar o seu comportamento de acordo com o erro relatado.
Os gateways (roteadores) devem também estar programados para enviar mensagens ICMP quando receberem pacotes que provoquem algum tipo de erro ou detectarem algum problema listado no protocolo ICMP.
O ICMP é transportado no campo de dados do pacote IP e identificado como tipo de protocolo “1” pelo cabeçalho do IP.
As principais mensagens de erro ou informacionais do ICMP geralmente são enviadas automaticamente em uma das seguintes situações:
- Um pacote IP não consegue chegar ao seu destino, por exemplo, quando o tempo de vida (TTL) do pacote está expirado (o contador chegou à zero). Esta mensagem é o tempo de vida expirado ou “time exceeded”.
- O roteador não consegue retransmitir os pacotes na frequência adequada, ou seja, o roteador está congestionado (mensagem “source quench”).
- O roteador indica uma rota melhor para o host que está enviando pacotes (mensagem de redirecionamento de rota ou “redirect”).
- Quando um host de destino ou rota não está alcançável (mensagem “destination unreachable” ou destino inalcançável).
- Quando o host ou o roteador descobrem um erro de sintaxe no cabeçalho do IP (mensagem “parameter problem”).
Existem diversas outras mensagens que o ICMP pode fornecer e cada uma é representada por um tipo ou código, conforme será mostrado no quadro do ICMP no final desse artigo.
Agora vamos estudar um pouco mais sobre o funcionamento do ping, esse comando tão importante que acompanha a vida profissional de iniciantes até os “Jedis” da área de Redes de Computadores.
Funcionamento e Uso do Ping
O Ping é baseado em duas mensagens, o echo request e echo reply.
Quando você entra no prompt de comandos do Windows e, por exemplo, digita “ping www.dltec.com.br”, na realidade seu computador está enviando mensagens de “echo request” ao servidor onde a página da DlteC está hospedada.
Ao receber essa mensagem de “echo request” nosso servidor responde seu computador com um “echo reply”.
Caso o servidor não responda seu computador indicará um timeout (tempo de resposta expirado), indicando que não houve resposta.
Veja na figura abaixo um exemplo de ping enviado do host com endereço IP 192.168.1.2 para o host com o IP 192.168.1.3.
Veja um exemplo de teste de ping no Windows com taxa de resposta de 100% (ping bem sucedido) e depois com perda de 100% (ping com problema, sem comunicação entre os hosts).
O teste de ping é utilizado para verificar se há comunicação fim a fim, ou seja, entre origem e destino.
Esse teste é realizado na camada-3 do modelo OSI (ou Internet do TCP/IP) e não se importa com os dispositivos (roteadores e switches) que estão no meio do caminho.
Vale a pena lembrar que as mensagens de ping podem ser bloqueadas por firewalls e/ou IPS’s (Intrusion Prevention System), portanto nem sempre não obter uma resposta a um ping significa necessariamente um erro, pode ser que esse teste esteja bloqueado por motivos de segurança.
O comando ping básico é o mesmo em maioria dos sistemas operacionais.
Portanto, se você digitar “ping www.google.com” no Windows, Cisco IOS, MAC OS, Linux ou Unix ele vai funcionar.
Um detalhe interessante é que se você digitar apenas o ping e o endereço IP ou URL no Linux ele dispara echos request até que você interrompa o teste.
Já no Windows serão disparados apenas quatro requests, sendo que para o Windows disparar pings sem como no Linux você precisa utilizar a opção “-t”, por exemplo, “ping -t 192.168.1.10”.
Outra opção bastante utilizada com o ping é alterar o tamanho do pacote para o máximo que o segmento testado suporta, por exemplo, 1500 bytes em uma rede LAN.
Para isso no Windows você pode utilizar a opção “-l 1500” e no Linux “-s 1500”.
Veja exemplo na tela abaixo onde no linux serão disparados 5 requests (opção -c5) com tamanho de 1000 bytes (opção -s1000).
Funcionamento e uso do Traceroute
Já o trace ou traceroute tem a função de testar o caminho que o pacote está seguindo até seu destino, ou seja, ele é um teste ponto a ponto.
O traceroute está baseado no funcionamento do campo TTL do protocolo IP (Time to Live ou Tempo de Vida), sendo que o tempo de vida de um pacote é um contador que é decrementado a cada salto ou nó que o pacote IP passa.
Cada sistema operacional define um TTL para seus pacotes, em roteadores Cisco o TTL é definido com o valor de 255. Abaixo seguem os valores padrões de TTL para os sistemas operacionais mais comuns:
- UNIX: 255
- Linux: 64
- Linux: 255
- Windows: 128
- Cisco: 255
Por exemplo, quando um roteador Cisco origina um pacote ele coloca o tempo de vida como 255 e a cada roteador que esse pacote passar será decrementado em 1, ou seja, se o caminho entre o originador do pacote e o destino existirem 3 roteadores quando o pacote chegar ao destino ele terá o valor de TTL 252.
Analisando a figura acima se um pacote IP trafegar por um número de saltos muito grande ele tem seu tempo de vida expirado o roteador que recebeu o pacote com TTL igual a zero deve enviar uma mensagem à origem do pacote com uma mensagem ICMP indicando esse problema.
Nessa mensagem vem o IP do roteador e com isso o computador consegue saber por onde o problema ocorreu.
Portanto, podemos utilizar essa característica para determinar o caminho que o pacote está passando entre a origem e o destino, para isso o host onde foi originado o traceroute manda um pacote com TTL igual a 1, no primeiro salto o pacote expira e o roteador responde com seu IP.
Depois envia um pacote com TTL igual a 2, aí ele conhece o roteador que está no segundo salto, sendo que esse processo se repete até que o pacote atinja seu destino e o caminho é traçado.
Na tela da figura abaixo você vai ver um exemplo do “tracert” que é o comando do Windows para o “traceroute” (Cisco, Unix e Linux).
Note que no décimo oitavo salto o computador não obteve resposta, pois provavelmente existe um bloqueio por motivos de segurança nesse roteador.
Para alcançar o destino nosso pacote teve que percorrer 19 saltos, ou seja, passou por 19 roteadores entre a origem e o destino.
Formato do Pacote ICMP
Abaixo segue o formado do pacote ICMP e o significado de cada campo.
- TYPE (8 bits): identifica o tipo mensagem, por exemplo, se o valor for 8 é uma requisição (echo request). Se o conteúdo for 0 é uma reposta (echo reply).
- CODE (8 bits): utilizado em conjunto com o campo TYPE para identificar o tipo de mensagem ICMP que está sendo enviada.
- CHECKSUM (16 bits): verifica a integridade do pacote ICMP.
- MESSAGE CONTENTS (Tamanho Variável): contém o conteúdo da mensagem ICMP.
Dicas e Conclusão
Chegamos ao final do artigo e espero ter deixado claro algumas coisas para você:
- Tanto o traceroute como o ping fazem testes na camada-3 do modelo OSI ou Internet do TCP/IP, portanto não garante que a aplicação vai funcionar, para isso teste a navegação via HTTP ou um acesso remoto via Telnet para complementar os testes.
- O ping testa fim a fim, se o host de origem tem comunicação com o host de destino, sem se importar por onde esse pacote vai passar.
- O Traceroute já testa o caminho ponto a ponto, sendo útil para testar se o plano de rotas de uma rede está correto, por exemplo.
Espero que o artigo tenha sido útil e aguardo os comentários, dúvidas e sugestões no final dessa página na área de comentários!
É só descer um pouco que você encontra a área de comentários está lá embaixo…
Claro que você também pode usar os botões de compartilhamento se achar que o artigo vai ser útil para seus amigos.
Que a força esteja com você e até uma próxima!
Prof Marcelo Nascimento
Acesse o curso de “CCNA CCENT Online” em nossa área Premium.
Aprenda a teoria e a prática de redes em roteadores e switches Cisco que utilizam o sistema operacional Cisco IOS.
Clique aqui para ativar o curso e inciar seus estudos em nossa área de membros premium!
Não é membro premium? Clique aqui e saiba mais sobre a DlteC Premium.
14 Responses
Excelente artigo…
Valeu Odinei!
Muito esclarecedor!
No item 3 da sua conclusão você diz que o telnet testa o caminho ponto a ponto. Creio que quis dizer que o traceroute testa o caminho ponto a ponto.
Excelente artigo! Obrigado por compartilhar!
Isso mesmo Luiz, agradeço sua colaboração e por ter percebido! Já corrigi…
Prof Marcelo Nascimento
Recomendo vivamente o seu blog/site.
Achei-o de excelente qualidade.
Obrigado
Ana
Muito bom, Parabéns!!!
Só complementando o excelente post, o campo código com resposta da natureza de um problema ICMP pode ter os seguintes valores:
0 Rede Inacessível
1 Host Inacessível
2 Protocolo Inacessível
3 Porta Inacessível
4 Fragmentação Necessária
5 Rota de Origem Falha
6 Rede de destino desconhecida
7 Host de destino desconhecido
8 Host de origem isolado
9 Comunicação com rede destinatário administrativamente proibida
10 Comunicação com host destinatário administrativamente proibida
11 Rede Inacessível para tipo de serviço
12 Host Inacessível para tipo de serviço
Agradeço o elogio e sua colaboração Vinícius!!!! A colaboração de vocês é sem muito bem vinda!!!
Voces, fazem um excelente Trabalho. Muito capacitados. parabens!.
Obrigado!!!
só não entendi qu do vc da um tracert e ele te mostra essas 3 colunas, ele testa o pacote por 3x e dá o tempo médio, eh isso?
Salve, Marcelo. Estou no processo de aprendizado do Modelo OSI e os protolocos como ICMP e Este artigo elucida um pouco pra que serve e tal. Grato demais
Fico feliz em ajudar!