DC-UFRPE/Licenciatura Plena em Computação/Redes de Computadores/Protocolo ICMP

Fonte: Wikiversidade

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.

O ICMP também é usado na descoberta de rotas para gateways .Periodicamente, anúncios (advertisements) de routers são transmitidos pela rede, contendo os endereços iPs de suas interfaces ativas. Os dispositivos de rede analisam esses pacotes e atualizam as informações sobre rotas.

O processo de solicitação realizado por um router é uma requisição de anúncios imediatos. Esses anúncios podem ser enviados por dispositivos conectados na rede assim ele inicializam. Entre os eventos e mensagens mais comuns relacionados ao protocolo ICMP, podemos destacar os seguintes:

  • Destination unreachable (Destino inalcançável);
  • Buffer full (buffer cheio);
  • Hops (contagem de saltos);
  • Ping;
  • Traceroute;

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[editar | editar código-fonte]

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.

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

Funcionamento e uso do Traceroute[editar | editar código-fonte]

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.

Formato do Pacote ICMP[editar | editar código-fonte]

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[editar | editar código-fonte]

Chegamos ao final do artigo e espero ter deixado claro algumas coisas para você:

  1. 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.
  2. 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.
  3. 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.