【Windowsコマンド】tracertでネットワーク経路を表示させる

【Windowsコマンド】tracertでネットワーク経路を表示させる

 Windowsには標準コマンドとして、ネットワーク経路を調査するコマンドが存在します。この記事では、あるホストから通信相手までの経路を調べるためのコマンド「tracert」について説明しています。

1. tracertの概要

 「tracert」は「trace route」を省略したコマンド名であり、「トレースルート」と読みます。このtracertコマンドは、文字通りルート(経路)をトレース(追跡する)ために使用するコマンドです。ここでいう経路とは、ネットワーク経路のことを示しており、あるホストから特定クライアントや特定サーバなどの指定ホストまでの経路をいいます。通信経路にはルータが存在するため、このtracertを使用することで、通信相手までのルータの一覧を表示することが可能となります。

※tracertはWindows標準のコマンドとして機能するものであり、MacやLinuxではコマンド名が「traceroute」となるため注意しましょう。

2. tracertの構文

 tracertの構文は以下のとおりです。

使用法: tracert [-d] [-h maximum_hops] [-j host-list]  [-w timeout]
                [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name

 構文やオプション部分が分からなくなったときは、コマンドプロンプトで「tracert /?」を実行すると構文が表示されます。専門のネットワークエンジニアでなければ、各オプションは覚える必要はないでしょう。

 SE(システムエンジニア)であれば、

>tracert target_name

例1.)
>tracert 172.16.xxx.xxx(IPアドレス)
例2.)
>tracert xxx.co.jp(ドメイン名)

 とだけ書ければ問題なしです。

 各パラメータの内容は表のとおりです。

tracertの構文
パラメータ 意味
-d アドレスをホスト名に解決しません。
-h maximum_hops ターゲットを検索するときの最大ホップ数です。
-j host-list host-list で指定された緩やかなソース ルートを使用します (IPv4 のみ)。
-w timeout timeout ミリ秒間、応答を待ちます。
-R 往復のパスをトレースします (IPv6 のみ)。
-S srcaddr 使用するソース アドレスです (IPv6 のみ)。
-4 IPv4 の使用を強制します。
-6 IPv6 の使用を強制します。
target_name IPアドレスもしくはドメイン名

 ちなみにデフォルト値だと、最大ホップ数は30、応答時間は4秒(4000ミリ秒)で設定されています。

3. tracertの使用例

 tracertを使用する方法は、コマンドプロンプトから実行するだけです。コマンドプロンプトは、「Windowsキー」+「R」で「ファイル名を指定して実行ファイル」のウィンドウを開き、「cmd」と入力すれば開くことができます。

 コマンドプロンプトが開けたら、tracertコマンドを入力します。

 ここでは、ヤフー(ドメイン名「yahoo.co.jp」)までのルートをトレースしてみます。(例では「-w」オプションで応答時間を設定しています。)

 実行結果は次のようになります。

 実行結果の①、②、③はそれぞれ以下を示しています。

①経由したホップ数。

②ルータからのICMPパケットの応答時間。
 ※3回実行した結果が表示されます。したがって、各時間にばらつきがあると回線が混雑しているなど、ネットワークが不安定であることを示しています。ルータからICMPパケットが受信できない場合は、「*」が表示されます。

③ルータのIPアドレスもしくはドメイン名。
 ※ルータの応答がない場合は、「要求がタイムアウトしました。」と表示されます。実行結果にも1つありますが、ルータの応答がない場合は、「-w timeout」オプションで指定した時間内に応答がないか、ルータにICMPの設定がされていない可能性があります。また、セキュリティの観点から「tracert」に対してICMPパケットへの応答をしない設定にする機器(ルータ、ファイアウォール)も存在しますが、その先にルータが存在する場合は、そのルータより応答が返ってくることがあります(実行結果のホップ12,13)。
  通信経路の途中で有効な経路がなくなった場合は、宛先へ到達できない旨のメッセージがルータより返されます。

 

4. tracertの仕組み

 tracertは、pingと同じICPMのエコー要求/応答の仕組みで動作しており、TTL(Time To Live)と呼ばれる、パケットに付加される有効期限を用いて動作しています。TTL値と言われることが多いのですが、このTTLは次の性質を持っています。

  1. TTLは数字である。
  2. 機器を経由するごとにTTL値が「-1」され、TTL値が「0」でない場合、次の機器(ルータ)へ転送される。
  3. TTL値が「0」になるとICPMのtype11(時間超過:Time Exceeded)を送信元に応答し、送信元のTTL値を「+1」する。

 例として、送信元である端末から3つのルータを経由して宛先のサーバまで到達するまでのTTLの図を表現すると以下になります。

 

 

①TTL=1をセットし、IPパケットを宛先(サーバ)へ送信する。

 ルータ1がパケットを受け取ると、TTL値を「-1」します。すると、TTL値が「0」になるので、ICMPのType11 (時間超過:Time Exceeded)を送信元に返します。

②TTL=2をセットし、IPパケットを宛先(サーバ)へ送信する。

 ルータ1がパケットを受け取ると、TTL値を「-1」し、TTL=1をルータ2に転送します。ルータ2が、TTL値を「-1」すると、TTL値が「0」になるので、ICMPのType11 (時間超過:Time Exceeded)を送信元に返します。

③TTL=3セットし、IPパケットを宛先(サーバ)へ送信する。

 ルータ1がパケットを受け取ると、TTL値を「-1」し、TTL=2をルータ2に転送します。次にルータ2がパケットを受け取ると、TTL値を「-1」し、TTL=1をルータ3へ転送します。ルータ3が、TTL値を「-1」すると、TTL値は「0」になるので、ICMPのType11 (時間超過:Time Exceeded)を送信元に返します。

④最後に、TTL=4セットし、IPパケットを宛先(サーバ)へ送信する。

 ルータ1がパケットを受け取ると、TTL値を「-1」し、TTL=3をルータ2に転送します。次にルータ2がパケットを受け取ると、TTL値を「-1」し、TTL=2をルータ3へ転送します。その次にルータ3がパケットを受け取ると、TTL値を「-1」し、TTL=1を宛先のサーバへ転送します。宛先に到達すると、宛先の端末は、受信するパケットに応じて、ICMPのType0(エコー応答:Echo Reply)もしくは、Type3(宛先到達不能:Port Unreachable)を送信元に返します。

 

参考情報

ICPMのTypeコード一覧
Type 内容 意味 種類
0 Echo Reply エコー応答 Query
3 Destination Unreachable 宛先到達不能 Error
4 Source Quench 始点抑制 Error
5 Redirect 最適経路への変更指示 Error
8 Echo Request エコー要求 Query
9 Router Advertisement ルータ通知 Query
10 Router Solicitation ルータ要求 Query
11 Time Exceeded TTL超過によるパケット破棄の報告 Error
12 Parameter Problem パケットパラメータにおけるエラー Error
13 Timestamp タイムスタンプ Query
14 Timestamp Reply タイムスタンプ応答 Query
15 Information Request インフォメーション要求 Query
16 Information Reply インフォメーション応答 Query
17 Address Mask Request アドレスマスク要求 Query
18 Address Mask Reply アドレスマスク応答 Query

まとめ

 本記事では、Windowsコマンドの1つである「tracert」について説明しました。tracertは指定ホストまでのネットワーク経路上に存在するルータを表示するコマンドです。pingと同じICMPエコー要求および応答を利用している仕組みは同じですが、宛先までに存在するルータを表示する点では異なる性質を持っています。

 ネットワーク経路を調査する際に活躍するコマンドの一つなので、クライアントからサーバまでの経路を調査したい場合などは「tracert」を活用してみましょう。

↓この記事を気に入っていただけた方は、ぜひ「いいね」をお願いします。