(イラスト・アニメーション:岸本 ムサシ)
今回の回答者: 近藤 邦昭 まほろば工房 代表取締役 |
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アドレスを調べて表示するのです。