traceroute
読み:トレースルート
外語:traceroute
IPネットワークで、目的のホストまでのゲートウェイを一覧するためのソフトウェア。
概要
パケットが目的のホストに到達しない場合、どこで問題が発生しているのかを確認するのに用いられる。
なお、Windowsでは名前がtracertとなっているので注意。
動作
技術
IPパケットのTTL(Time-To-Live)フィールドを巧妙に利用して作られている。
TTLを1から段階的に増やしたパケットを送信することにより、TTLが小さいために中継の止まったゲートウェイから中継未到達パケット(ICMP "Time Exceeded")が返されることで中継経路を判別する。
送信するパケットは、UNIX系のtracerouteは主としてUDP(ポート番号は30000以上のランダム)を、WindowsのtracertはICMPを用いている。
目的のホストに到達すると、UDPにしろICMPにしろ、相手からICMP "Port_Unreachable" パケットが返る。この返答が返るまで続けることで、最終的には相手先ホストまでのホップ数や経路情報、各部での遅延時間などを探索することができる。
手順
次のような手順で機能は実現されている。
- TTLが1のパケットを送信する。
- そのパケットは最初のゲートウェイに到達するが、TTLが小さいためこのパケットはそのゲートウェイより先に中継されない。そこで、このゲートウェイは「TTLが小さくて先へ中継できない」というパケット(ICMP "Time_Exceeded")を返信する。このパケットから、コマンドを実行したホストからみた最初のゲートウェイが分かる。
- TTLが2のパケットを送信する。
- そのパケット2番目のゲートウェイに到達し、2番目のゲートウェイは同様に ICMP "Time_Exceeded" を返す。このパケットから、2番目のゲートウェイが分かる。
- TTLが3のパケットを送信……(以下同様)
- このようにして、最終的にパケットが目標のホストに到達すると、そのホストは ICMP "Port_Unreachable" を返す。これにより、経路の探索処理は完了する。
再検索