tracertコマンド - 経路上のルーターを表示

tracertコマンドとは

tracertは、コマンドを実行したパソコンから通信相手までの経路上にあるルーターを一覧表示するコマンドです。

経由するルーターが近い方から順番に表示されるため、相手にパケットが届くまでの経路が分かります。

通信相手にアクセスできない場合に、どのルーターに問題があるのかを調べる際に役立ちます。

ルーター情報

次のようなルーターの情報が表示されます。

  • TTL(有効期限) [1列目]
    TTLはTime To Liveの略で、パケットの有効期限を意味します。
    機器を1つ経由するごとに数字を1つ減らし、0になったらその時点で中継を止めます。
    パケットが永久に放浪する事態を回避するのが目的です。
  • 応答時間 [2~4列目]
    パソコンから各ルーターにICMPのエコー要求パケットを送ってからエコー応答パケットが返ってくるまでの応答時間です。
    応答時間の測定は、各ルーターごと3回ずつ実施されます。
    4秒以内に応答がない場合は、*が表示されます。
  • IPアドレスまたはドメイン名とIPアドレスのセット [5列目]
    4秒以内に応答がない場合は、「要求がタイムアウトしました」と表示されます。

tracert実行

試しにgoogleに対してtracertコマンドを実行してみます。

[コンソール]

1
tracert google.com

[実行結果]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
google.com [2404:6800:4004:813::200e] へのルートをトレースしています
経由するホップ数は最大 30 です:

1 2 ms 2 ms 2 ms 2400:4050:7c0:3a00:826a:efff:fe31:bd72
2 3 ms 3 ms 117 ms 2400:4050:7c0:3a00::fffe
3 * * * 要求がタイムアウトしました。
4 * * * 要求がタイムアウトしました。
5 6 ms 5 ms 5 ms 2001:380:a120:2e::1
6 8 ms 6 ms 6 ms 2001:4860:1:1::21f5
7 5 ms 7 ms 5 ms 2404:6800:8042::1
8 * * * 要求がタイムアウトしました。
9 6 ms 7 ms 7 ms 2001:4860:0:1::14b9
10 5 ms 5 ms 5 ms nrt20s17-in-x0e.1e100.net [2404:6800:4004:813::200e]

トレースを完了しました。

上記の例では問題なくパケットは目的のサーバに届いています。

経路の途中で「要求がタイムアウトしました。」と表示されており、応答のなかったルーターが3台あったことが分かります。

これはICMPを無効にしている機器の可能性がありますが、tracertコマンドではそのような機器が途中にあっても、処理を続けるため最終的には通信相手までの経路が分かります。

よく使うオプション

よく使うオプションは以下の通りです。

オプション内容
-dIPアドレスの名前解決を行わない。
-w ミリ秒タイムアウト時間をミリ秒で指定する。
-h ルータ数経由するルータの数を指定する。

tracertの動作

tracertコマンドが宛先までの経由を調べる仕組みは下記の通りです。

  1. tracertが実行されたらTTLを「1」に設定したエコー要求パケットを送信する。
    TTLを1つずつ増やしながら順にこれを規定回数繰り返すか、宛先からエコー応答パケットが届くまで届ける。
  2. ルーターは届いたパケットのTTLを1つ小さくする。
  3. ルーターはTTLが0のパケットを時間切れのパケットとして送信元に通知する。
  4. ルータによっては、応答しない設定になっていることもある。
  5. ルーターが応答を返さなくても、その後のルータが応答することもある。
  6. 宛先の機器にエコー要求パケットが届いたら、その機器はエコー応答パケットを返す。
  7. 時間超過パケットやエコー応答パケットが届くと、エコー要求パケットを送ってから届くまでにかかった時間とそのパケットの送信元を表示する。