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" パケットが返る。この返答が返るまで続けることで、最終的には相手先ホストまでのホップ数や経路情報、各部での遅延時間などを探索することができる。

手順
 次のような手順で機能は実現されている。
  1. TTLが1のパケットを送信する。
  2. そのパケットは最初のゲートウェイに到達するが、TTLが小さいためこのパケットはそのゲートウェイより先に中継されない。そこで、このゲートウェイは「TTLが小さくて先へ中継できない」というパケット(ICMP "Time_Exceeded")を返信する。このパケットから、コマンドを実行したホストからみた最初のゲートウェイが分かる。
  3. TTLが2のパケットを送信する。
  4. そのパケット2番目のゲートウェイに到達し、2番目のゲートウェイは同様に ICMP "Time_Exceeded" を返す。このパケットから、2番目のゲートウェイが分かる。
  5. TTLが3のパケットを送信……(以下同様)
  6. このようにして、最終的にパケットが目標のホストに到達すると、そのホストは ICMP "Port_Unreachable" を返す。これにより、経路の探索処理は完了する。

再検索