O uso de UDP para traceroute é considerado por algumas práticas precárias, porque o UDP deve ser um protocolo de aplicação de transporte de dados. ICMP ECHO_REQUEST
é o método preferido, embora não exista um padrão . O principal motivo para usar o ICMP é que o UDP pode transportar uma carga útil, portanto, permitir isso por meio de um firewall tem maiores implicações de segurança; para o usuário final, é mais provável que ele seja bloqueado. Também é possível que um aplicativo use as portas UDP, resultando em efeitos colaterais potencialmente indesejados. Apesar da preferência pelo ICMP, o clássico traceroute(1)
e todos os seus decedents use o UDP, incluindo as implementações fornecidas com o Mac OS X, a maioria das distros do Linux, os BSDs e o Cisco IOS.
Para estas implementações UDP, o número da porta é incrementado em 1 para cada teste, de modo que o número de porta mais alto para qualquer execução é igual a 33434 + (max-ttl * probes-por-hop-1) . A configuração padrão para max-ttl geralmente é 32 ou 64, dependendo da implementação. O padrão probes-per-hop é geralmente 1 ou 3. Usando os padrões mais liberais de 64 e 3, o intervalo seria 33434-33625 . Na prática, um max-ttl de 32 é geralmente mais do que suficiente, nesse caso, o intervalo seria 33434-33529 .
Observe também que a IANA alocou somente a porta 33434 para traceroute, mas deixou 33435-33655 não alocada.
Para informações sobre ICMP vs. UDP, consulte: Por que algumas implementações comuns do traceroute usam o teste UDP?