traceroute é uma ferramenta de diagnóstico[1] que rastreia a rota de um pacote através de uma rede de computadores que utiliza os protocolos IP e o ICMP, implementada pela primeira vez por Van Jacobson[2] em 1988. Atualmente está disponível em diversos sistemas operacionais como Linux[3], FreeBSD[4], NetBSD[5], MacOS X[6] e Windows[7].
Seu funcionamento está baseado no uso do campo Time to Live (TTL) do pacote IPv4[8] destinado a limitar o tempo de vida dele. Este valor é decrementado a cada vez que o pacote é encaminhado por um roteador. Ao atingir o valor zero o pacote é descartado e o originador é alertado por uma mensagem ICMP TIME_EXCEEDED
. Através da manipulação do campo TTL de uma série de datagramas UDP é possível receber esta mensagem de cada um dos roteadores no caminho do pacote[2][3]. Para o caso do IPv6 é utilizado o campo hop limit, o limite de saltos dos datagramas desta versão do protocolo[9]. A implementação disponível no Microsoft Windows utiliza apenas pacotes ICMP[2].
As páginas de manual atribuem a autoria da ferramenta a Van Jacobson que fez a implementação segundo a sugestão de Steve Deering. Também destacam as colaborações de C. Philip Wood, Tim Seaver e Ken Adelman[4][5]. Segundo Mike Muuss, autor da ferramenta ping, o traceroute foi implementado utilizando o suporte que ele mesmo codificou no kernel ao escrever o ping[10].