O tipo de pacote enviado difere dependendo da implementação. Por padrão, o Windows tracert
usa ICMP e o Mac OS X e Linux traceroute
usam UDP. Não tenho máquinas BSD ou Solaris ou qualquer outro sistema operacional disponível para verificar, mas a página de manual da versão do Mac OS X menciona que sua origem é o BSD 4.3.
As versões para Mac e Linux oferecem a capacidade de escolher uma variedade de protocolos diferentes, incluindo pacotes ICMP, TCP, UDP e GRE. Outros protocolos podem ser especificados por seu nome ou número, mas o traceroute não sabe nada sobre como outros protocolos funcionam. Apenas os envia cegamente.
Eles também podem alterar a carga útil e as portas de origem e destino para evitar firewalls ou descobrir qual roteador ao longo do caminho está descartando pacotes de um determinado tamanho.
Todas as versões do traceroute se baseiam nas respostas do ICMP tipo 11 (tempo excedido) de cada salto ao longo da rota. Se as respostas do ICMP tipo 11 estiverem sendo bloqueadas pelo seu firewall, o traceroute não funcionará. Esses pacotes são de entrada, não de saída.
O ICMP tipo 30 é especificamente designado para traceroute e é rotulado como "Solicitação de informações". Não consegui encontrar nenhum lugar onde isso seja realmente usado. A página do manual para as versões do Mac OS X e Linux diz que -I
o ICMP tipo 8 será enviado (solicitação de eco). A Wikipedia diz que o Windows tracert
também usa solicitações de eco ICMP. O ICMP tipo 30 ou tipo 8 são pacotes de saída, não de entrada.
O ICMP tipo 0 (resposta de eco) pode voltar como o último pacote quando o TTL é exatamente igual ao número de saltos. O Traceroute saberá que terminou quando receber um deles. Este é um pacote de entrada.
Pacotes TCP SYN causarão um RST
pacote ou um SYN ACK
pacote em resposta quando chegarem ao seu destino. Se você receber um SYN ACK
pacote, é educado acompanhá- RST
lo para não deixar uma conexão semiaberta no servidor.
É possível obter as respostas do código 4 do tipo 3 do ICMP, em vez das respostas do tipo 11 do ICMP, se você enviar um pacote grande com o sinalizador "Não fragmentar" definido, no entanto, isso provavelmente só permitirá encontrar o salto com a menor MTU . Normalmente, você obterá esse tipo de resposta apenas de um salto ao longo da rota. Nem todos eles.