読者です 読者をやめる 読者になる 読者になる

ソフトウェアエンジニア現役続行

雑多なことを綴ります

pingを使ってホップ数を調べる

マシン間のホップ数を調べるには traceroute を使うのが一般的ですが、ルータやISPによっては traceroute がうまくいかない環境があります。

そのような環境でも、もしその機器と ping で通信ができるなら、-tオプション(Windowsの場合は-iオプション)を使ってホップ数を調べることができます。-t(Windowsの場合は-i)は TTL を設定するオプションです。TTLを少しずつ小さくしていって、pingが応答する最小のTTL値がホップ数です。

たとえば、自分のマシンからgoogle.comまでのホップ数を調べる場合↓


[Oswald@fedora ~]$ ping -t 9 google.com
PING google.com (66.249.89.99) 56(84) bytes of data.
64 bytes from nrt04s01-in-f99.1e100.net (66.249.89.99): icmp_req=1 ttl=54 time=23.5 ms
64 bytes from nrt04s01-in-f99.1e100.net (66.249.89.99): icmp_req=2 ttl=56 time=27.2 ms
64 bytes from nrt04s01-in-f99.1e100.net (66.249.89.99): icmp_req=3 ttl=54 time=25.0 ms

[Oswald@fedora ~]$ ping -t 8 google.com
PING google.com (66.249.89.104) 56(84) bytes of data.
From 72.14.236.126 icmp_seq=1 Time to live exceeded
From 72.14.236.126 icmp_seq=2 Time to live exceeded


このようにTTLが9だとpingが届くが、TTLを8だとpingが届かないため、ホップ数が9であることが分かります。