Em 99% dos casos, o penúltimo salto de um traceroute não será o gateway padrão do host de destino. Isso é por causa da maneira como o traceroute funciona.
Todos os pacotes IP possuem um nome incorreto - tempo de vida ( TTL ) campo. Este campo é decrementado por um por cada roteador que encaminha um pacote. Se um roteador decrementa o TTL para 0, ele descarta o pacote e gera um pacote de erro ICMP TTL excedido e o envia de volta para a pessoa que enviou o pacote original. O pacote de erro terá um IP de destino da origem do pacote original (neste caso, o host que iniciou o traceroute). O IP de origem do pacote de erro geralmente será o endereço IP da interface de saída , isto é, o endereço voltado para o restante da rede.
O traceroute aproveita esse fato; envia pacotes com TTLs sequencialmente crescentes; isso faz com que cada roteador no caminho entre a origem e o destino envie de volta mensagens inacessíveis do ICMP ao host que executa o traceroute. Cada erro terá um IP de origem do roteador final que o pacote de sondagem alcançou antes de ser descartado. Isso permite que o traceroute crie uma imagem do caminho entre a origem e o destino.
Considere o diagrama abaixo (ignorando a possibilidade de vários caminhos):
________ 1.1____1.2 2.1____2.2 ________
|Host A|-----|Router 1|--- Internet ---|Router 2|-----|Host B|
-------- ---------- ---------- --------
Se o host A estiver realizando um traceroute no host B, o penultimate hop será o roteador 2, que receberá um pacote de sondagem da seguinte forma:
SrcIP: A | DstIP: B | TTL: 1
O roteador 2 irá diminuir o TTL para 0; que fará com que ele gere um TTL ICMP expirado:
SrcIP: 2.1 | DstIP: A | TTL <default>
Por isso, quando o traceroute recebe essa mensagem de erro, o endereço IP que verá para o penúltimo salto será a interface voltada para a Internet do roteador 2, em vez da interface voltada para o host B.