O que você está fazendo não faz sentido e, quando funciona, funciona por sorte. Você não tem idéia do valor TTL inicial no pacote ping reply . Esse pacote é enviado por alguma máquina remota sobre a qual você não tem controle (aquele que você tem ping
ed). Você não pode determinar a contagem de saltos a partir do valor TTL recebido sem conhecer o valor TTL inicial.
Você conhece o TTL inicial de seus pacotes traceroute de saída , desde que os compôs. É por isso que isso funciona com o traceroute, que é projetado para essa finalidade. Se você tentou entender os valores TTL recebidos nas respostas ICMP aos seus pacotes traceroute, isso daria os mesmos resultados absurdos que só funcionam por sorte que você recebe do ping.
Tente se você não acredita em mim. Faça um traceroute e observe os valores de TTL recebidos nas respostas do ICMP. Você pode ver 51 de um salto e 238 do próximo. Isso acontece porque os vários dispositivos usam diferentes valores TTL iniciais nas respostas que eles compõem para você.