Falando sobre Protocolos de rede (parte 2)

Postado por Joabe Kachorroski, 23/03/2018 09:25:14, Protocolos de rede , redes

Kachorroski, Joabe¹

 

RESUMO

 

Como havíamos falado no post anterior, iriamos falar sobre 2 protocolos de redes essencial que são IP e ICMP e que iriamos dividir esse artigo em duas partes, primeira parte do artigo falaremos sobre ICMP, funcionamento e uso do PING e na segunda parte iremos ver funcionamento e uso do TRACER OUTE e o formato do pacote ICMP.

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?

Essa é a última parte do nosso artigo e falaremos aqui sobre TRACEROUTE e ICMP como trabalhar com essa fantástica ferramenta e entender um pouco sobre ICMP, então vamos ao que interessa.

 

Recapitulando Protocolo ICMP

 

Como é do conhecimento de todos 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.

Falamos também que o ICMP é transportado no campo de dados do pacote IP, vimos também sobre as mensagens que o ICMP envia através desses pacotes. Falamos também sobre os GATEWAYS (roteadores) e etc.

Mas o que realmente abordaremos nessa segunda parte do artigo é a respeito do formato do pacote ICMP, entender um pouco dessa troca de informações e etc.

Formato do Pacote ICMP

 

O protocolo ICMP é similar ao protocolo UDP pois utiliza mensagens que cabem em um só datagrama, sendo, porém, ainda mais simples, pois não contém a indicação no seu cabeçalho dos portos de origem. As mensagens ICMP são interpretadas pelo software de rede pelo que não é necessário indicar os portos.

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


Foto: https://www.google.com

Uma mensagem ICMP é encapsulada no protocolo IP. Embora seja encapsulado dentro do pacote IP, o protocolo ICMP não é considerado um protocolo de nível mais alto. A mensagem ICMP é sempre destinada ao HOST origem da mensagem, não existindo nenhum mecanismo para informar erros aos ROUTERS no caminho ou ao HOST destino. As mensagens ICMP contêm um identificador principal do tipo (TYPE) e um identificador de subtipo (CODE), na seguinte figura conheça o formato do pacote ICMP:


Foto: https://www.google.com

Entendendo o Formato da Mensagem

 

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.

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

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.

  CODE (8 bits): utilizado em conjunto com o campo TYPE para identificar o tipo de mensagem ICMP que está sendo enviada.

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

  CHECKSUM (16 bits): verifica a integridade do pacote ICMP.

  MESSAGE CONTENTS (Tamanho Variável): contém o conteúdo da mensagem ICMP.

 

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.

 

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.

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.

 

Funcionamento e uso do Traceroute

 

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. é uma ferramenta que permite descobrir o caminho feito pelos pacotes desde a sua origem até o seu destino. Ele é usado para testes, medidas e gerenciamento da rede. O TRACEROUTE pode ser utilizado para detectar falhas como, por exemplo, Gateways intermediários que descartam pacotes ou rotas que excedem a capacidade de um Datagrama IP. Com esta ferramenta, o atraso da "viagem" do pacote entre a origem e Gateways intermediários são reportados, permitindo determinar a contribuição de cada gateway para o atraso total da "viagem" do pacote desde a origem até o seu destino. Versões melhoradas do TRACEROUTE permitem a especificação de "rotas livres da origem" para os datagramas. Isto permite investigar qual o caminho de retorno que as máquinas remotas fazem até o host local.

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.

 

O comando TRACEROUTE envia pacotes de pesquisa UDP (UDP probe packets) com um pequeno "time-to-live" máximo (variável Max_ttl), e então, espera por pacotes de resposta “ICMP TIME_EXCEEDED” dos gateways que estão no caminho. Os pacotes UDP começam com um valor Max_ttl de 1 hop, que é incrementado de 1 hop a cada vez, até que uma mensagem “ICMP PORT_UNREACHABLE” é retornada. Esta mensagem indica que o host destino foi localizado ou que o comando traceroute atingiu o valor máximo de hops permitido para o "trace". O TRCEROUTE envia três "probes" a cada Max_ttl indicando:

  O valor Max_ttl

  O endereço do gateway

  O tempo de ida e volta (round trip) de cada "probe" bem-sucedido.

 

Se as respostas ao "probe" vêm de gateways diferentes, o TRACEROUTE imprime o endereço IP de cada um deles. Se não houver resposta ao "probe" dentro de um intervalo de "time-out" de três segundos, um * (asterisco) é impresso. Um ponto de exclamação “!” é impresso depois do tempo de ida e volta (round trip time) do pacote se o valor Max_ttl é um hop ou menos. Um “time-to-live" máximo de um hop ou menos normalmente indica uma incompatibilidade na forma como as respostas ICMP são tratadas pelos diferentes softwares da rede. A incompatibilidade pode, normalmente, ser solucionada duplicando o valor do último Max_ttl usado e tentando novamente. Outras anotações possíveis depois da indicação do tempo (round trip) são:

  !H Host inacessível

  !N Rede inacessível

  !P Protocolo inacessível

  !S Falha na rota de origem

  !F Necessidade de fragmentação

Se a maioria das pesquisas (probes) resultam em um erro, o comando TRACEROUTE encerra a execução.

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.


Foto: https://www.google.com

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


Foto: Autor

Para alcançar o destino nosso pacote teve que percorrer 14 saltos, ou seja, passou por 14 roteadores entre a origem e o destino.

 

Dicas e Conclusão

 

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 com que 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.

 

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!

 

 


¹Graduado em Analise e desenvolvimento de Sistemas no Centro Universitário Estácio de Sá, joabejbk@gmail.com

 

 

TERMOS TÉCNICOS USADOS:

 

IP “Internet Protocol” – Recebe segmentos de dados da camada de transporte e os encapsula em datagramas, é um protocolo não confiável por não exigir confirmação.

 

ICMP “Internet Control Message Protocol” – É um padrão TCP/IP necessário, são documentos regidos IETF que estabelecem os padrões de cada protocolo com o ICMP os hosts e roteadores que usam comunicação IP podem relatar erros e trocar informações de status e controle limitado.

 

PING “Ping” ou “latência” como podemos chamar, é um utilitário que usa o protocolo ICMP para testar a conectividade entre equipamentos. É um comando disponível praticamente em todos os sistemas operacionais.

 

TRACE  “Traceroute” é uma ferramenta de diagnóstico que rastreia a rota de um pacote através de uma rede de computadores que utiliza os protocolos IP e o ICMP.

 

HOP Em telecomunicação, hops são os "saltos" dados por um sinal, entre um nodo (roteador, computador ou dispositivos) e outro de uma rede, antes de chegar ao seu destino.

 

 

 

 

 

REVISÃO:

--

Rodrigo Pollak, Diretor de TI na Wise Solutions, Graduado em Ciência da Computação e Pós-Graduado em Redes de computadores e Plataformas Distribuídas.

 

 

REFERÊNCIAS:

Cisco: https://www.cisco.com/c/pt_br/support/docs/ios-nx-os-software/ios-software-releases-121-mainline/12778-ping-traceroute.html

 

Wikipédia: https://pt.wikipedia.org/wiki/Camada_de_rede

 

Imaster: https://imasters.com.br/artigo/882/redes-e-servidores/o-modelo-osi-e-suas-7-camadas/?trace=1519021197&source=single

 

UFRGS: http://penta.ufrgs.br/uel/graziela/graznw13.htm

 

IANA: https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml


Comentários

Pesquisa




Últimas Notícias



Tags


Microsoft Segurança Atualização Cisco Linux PHP VMware Windows 10 C# Firewall Office 365 Dell Kaspersky Virtualização Backup Nuvem



CONTATO


Wise Solutions Consultoria em Informática
Rua: Rui Barbosa, 364 - Jardim Paulista
CEP: 79050-200, Campo Grande / MS

Contato
Telefone: +55 (067) 3029-1080
E-mail: contato@wsci.com.br