tracerouteコマンドはどうやって経路を決めるの?

(イラスト・アニメーション:岸本 ムサシ)

  今回の回答者:
近藤 邦昭
まほろば工房
代表取締役

 tracerouteコマンドは、特定のあて先までの経路を調べる時に使うコマンドです。Windowsでは「tracert」と記します。コマンドプロンプトで「tracert 192.0.2.1」などと、あて先IPアドレスまたはホスト名を指定すれば、あて先に到達するまでに経由するルーターのIPアドレスを順番に表示します。

 インターネットは多数のルーターが網目のようにつながっているので、あて先までの経路は複数あるのが普通です。では、tracerouteで表示される経路は、どのように決まるのでしょう。

 ルーターはそれぞれ経路情報と呼ばれるデータを持ち、この情報に従ってパケットの送信先を決めます。ルーター同士が経路情報を交換するプロトコルをルーティングプロトコルと呼びます。ルーティングプロトコルで経路情報をやりとりした結果、tracerouteでたどる経路はあらかじめ決まっているのです。ルーティングプロトコルとしては、例えばAS(Autonomous System)番号を持つ大規模ネットワーク間で使うBGP(Border Gateway Protocol)があります。

 tracerouteを実行すると、あて先に向かって経路情報で決められた経路を通るICMP(Internet Control Message Protocol)のエコー要求メッセージが送られます。この時、経由するルーターのIPアドレスを知るために、TTL(Time To Live)フィールドの値を「1」に設定したパケットを送り出します。TTLはパケットが経由できるルーターの数を示す値で、ルーターを経由するごとに減っていきます。TTLが「0」になった時点でパケットが廃棄され、エコー要求メッセージの送信元に時間超過メッセージが返ります。この時間超過メッセージの送信元IPアドレスが、経路上のルーターのIPアドレスです。tracerouteコマンドでは、TTLの値を1ずつ増やしたパケットを何度も送信することで、あて先までの経路上のすべてのルーターのIPアドレスを調べて表示するのです。