domingo, 11 de setembro de 2011

:: TRACEROUTE ::
   Como funciona

Primeiro uma breve descrição do inicio.

  O protocolo internet ou internet protocol (IP), foi definido pelo DoD (Departamento de Defesa Americano), foi criado para sistemas de computação interconectados através da comutação de pacotes de dados [RFC791]. Criado originalmente para uso militar e estendido posteriormente para o Mundo Acadêmico, como Universidades e Fundações, essa estrutura de protocolo deveria facilitar a comunicação entre computadores em uma rede, e deveria tambêm ser uma estrutura que oferecesse segurança, já que previa uma descentralização de informações, que era o principio de segurança para os Militares. A confiabilidade das informações deveria ser provida pelas aplicações ou por protocolos de camadas superiores como o TCP
Foram então criados trés definições para o protocolo internet:

* Regras de funcionamento
* Método de roteamento
* Formato dos dados em um datagrama

:: Formato do datagrama

_ Version:
  Identifica a versão do protocolo IP usada no datagrama.
  Datagramas recebidos com versões não conhecidas devem ser simplesmente ignorados.    
_ Header Length: 
  comprimento do cabeçalho IP em múltiplos de 4 bytes.
  permite o uso de campos adicionais mas provoca atraso por demora de processamento, portanto
seu uso deve ser evitado
_ Type of Service:
   Definição da qualidade do serviço (QOS)


_ Total Length:
  Tamanho total, em bytes, do datagrama (ou de um fragmento), incluindo o cabeçalho.
  Todos os hosts devem aceitar datagramas de, pelo menos, 576 bytes. O valor máximo a ser usado numa sub-rede pode ser negociado entre os hosts.


_ Identification:
  Usado na fragmentação de datagramas.


_ Flags:
  Usado na fragmentação de datagramas.
  Fragment Offset


_ Time to Live:
  Por cada nó (roteador) por onde passa o datagrama, esse campo deve ser decrementado de uma unidade.
  Quando o valor TTL chega a zero, o datagrama e descartado, uma mensagem então enviado ao emissor da mensagem, atraves do protocolo ICMP. A função dessa operação e evitar que pacotes circulem eternamente pela rede num loop sem fim. Assim quando um pacote alcança seu destino ele e processado/descartado.




_ Identificador do protocolo usado na camada   imediatamente acima.
Mais usados na internet:
   TCP: Stream confiável
   UDP: Datagrama com endereço de porta para usuário
   ICMP: Controle


_ Outros muito comuns:
     EGP: Roteamento
     TP4: Transporte classe 4 da ISO
     RDP: Reliable Datagram Protocol


_ Header Checksum:
   Garante a integridade do cabeçalho IP. Caso haja erro o datagrama deve ser ignorado.
   Não garante a integridade dos dados.
  
_ Source Address:
   Endereço de origem do datagrama.




_ Destination Address:
   Endereço destino do datagrama.


Ӿ Options:
   Este campo pode ser usado para serviços extras. Apesar do nome, todas as implementações de IP devem suportar todas as opções.
Alguns exemplos de opções válidas:
 ჻ Source Routing:
   Especifica no datagrama qual a rota a ser seguida, retirando esta liberdade do  roteador. Em geral é usado para testes de rede.
჻ Record Route:
   Anota a rota por onde o datagrama passou, roteador por roteador.
჻ Time Stamps:
   Além de anotar a rota, anota também o horário em cada ponto.
Formato:
   32 bits, milissegundos após meia-noite, em relação a GMT.
   Usado apenas como referência, uma vez que a sincronização de tempo entre os roteadores é muito difícil de ser realizada.
჻ Padding:
   Complemento sem uso, para garantir que o cabeçalho tenha um tamanho múltiplo de 4 bytes.



  Este funcionamento é o que nos importa no momento.Sabendo disso passamos então para o traceroute.




       :: TRACEROUTE ::


  Sabendo que um dos campos do cabeçalho IP é chamado TTL - Time to Live. E que esse campo determina por quantos roteadores um pacote pode sobreviver, e para evitar que pacotes rodem eternamente pela rede; a cada passagem do pacote por um roteador esse valor e decrementado em um, até que si alcance o numero limite de passagem,ou seja valor 0, onde então e respondido com um pacote ICMP do tipo time exceeded. Essa mensagem de termino de envio pode ser interpretada como  "eu sou seu ultimo destino, seu ultimo alvo". Si aproveitando dessa função, entra o TRACEROUTE. O que ele faz.... simplesmente envia um pacote ICMP do tipo echo request só que com um valor TTL predeterminado. Ou seja, si eu determinei um numero máximo de trafego, e claro que o ultimo roteador irá mi responder, porque foram retrasmitidos pelos roteadores anteriores e decrementado o valor TTl em 1 a cada rost . Mas si eu determino o tempo de vida do pacote ICMP, a história si modifica. Explicando: O TRACEROUTE traça o alvo, mas no primeiro envio ele simplesmente coloca o valor para o TTL de 1,  logo quando esse pacote atingir o primeiro roteador ele decrementa o valor que agora sendo 0 deve ser descartado, e será enviado um pacote ICMP do tipo time exeeded de retorno para a origem de envio, trazendo junto o endereço do rost que originou o pacote ou seja; o primeiro host.
Sabendo dessas informações é exibido para o usuário a origem do primeiro host. Assim adicionando ao valor na escala de +1 a cada envio, sucessivamente ate alcançar o host alvo. 
       Comando em Linux

traceroute ( host )


Você pode tambêm instalar o pacote tcptraceroute
através do apt-get, aptitude, yum entre outros
que útiliza pacotes como o mesmo nome diz TCP
que tem permição entre " " para passar por roteadores/firewalls onde exista bloqueio
dos pacotes ICMP/UDP. Desta forma entrando em redes internas e conseguir
determinar a origem do envio, topologia de rede etc, já que os pacotes de origem tcp são necessários para acesso da internet e diversos serviços. Assim sendo tem garantia de trafego através de roteadores/firewalls. 
Uma maneira de evitar responder ao host de origem do pacote, é desabilitar o ping no firewall.
Regra válida para requisição ICMP/UDP.
Vale a pena lembrar que o ping é um utilitário bastante útil quando si quer ou precisa-se saber si uma determinada maquina  esta ou não em funcionamento.