Windowsでネットワークの経路を調査するときに使う「tracert」。
普段、何気なく tracert -d -w と入力しているものの、
-dは何を意味するの?-wは何のために使うの?-w 1と-w 100では何が変わる?*はタイムアウトを意味するの?
と疑問に思う方もいるのではないでしょうか。
この記事では、tracert -d と tracert -w の意味を、実際の実行結果やパケットキャプチャを交えながら解説します。
tracertとは?
tracert は、Windowsでネットワークの経路を確認するためのコマンドです。
例えば、Google Public DNSの 8.8.8.8 に対して実行すると、目的地までに経由するルーターなどを確認できます。
tracert 8.8.8.8
実行すると、次のような結果が表示されます。
C:\Users\XXX>tracert 8.8.8.8
dns.google [8.8.8.8] へのルートをトレースしています
経由するホップ数は最大 30 です:
1 1 ms 1 ms 1 ms
2 7 ms 7 ms 11 ms
3 13 ms 9 ms 7 ms
4 8 ms 8 ms 7 ms
5 20 ms 14 ms 12 ms
6 9 ms 8 ms 7 ms
7 17 ms 11 ms 12 ms
8 9 ms 8 ms 8 ms
9 9 ms 9 ms 8 ms dns.google [8.8.8.8]
トレースを完了しました。
ここで表示されている 1、2、3……は、目的地までに経由したホップ数です。
「ホップ」とは、簡単にいうと、ネットワーク上でパケットが通過する1つの区間です。
tracert は、このように目的地までのネットワーク経路を確認するときに利用します。
tracertのオプションを確認する
tracert には、いくつかのオプションがあります。
コマンドプロンプトで次のように入力すると確認できます。
tracert /?
表示される主なオプションは次のとおりです。
使用法: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout]
[-R] [-S srcaddr] [-4] [-6] target_name
オプション:
-d アドレスをホスト名に解決しません。
-h maximum_hops ターゲットを検索するときの最大ホップ数です。
-j host-list host-list で指定された緩やかなソース ルートを使用します
(IPv4 のみ)。
-w timeout timeout ミリ秒間、応答を待ちます。
-R 往復のパスをトレースします (IPv6 のみ)。
-S srcaddr 使用するソース アドレスです (IPv6 のみ)。
-4 IPv4 の使用を強制します。
-6 IPv6 の使用を強制します。
今回は、この中でも特に利用する機会の多い -d と -w に注目します。
tracert -dとは?
結論からいうと、-d はIPアドレスからホスト名への名前解決を行わないためのオプションです。
tracert -d 8.8.8.8
-d を付けない場合、先ほどの結果では次のように表示されました。
dns.google [8.8.8.8] へのルートをトレースしています
一方、-d を付けると、
8.8.8.8 へのルートをトレースしています。
となります。
つまり、-d を付けることで、IPアドレスをホスト名に変換する処理を行わなくなります。
名前解決とは?
ここでいう「名前解決」とは、IPアドレスとホスト名を対応付ける処理のことです。
例えば、
8.8.8.8
というIPアドレスに対して、
dns.google
というホスト名が表示されています。
これはDNSによる名前解決によって、IPアドレスからホスト名を調べているためです。
そのため、-d を指定すると、この名前解決を行わず、IPアドレスのまま表示します。
「-d」はドメインのd?
-d が何の略なのか気になるところです。
「domain(ドメイン)のdなのかな?」と思うかもしれません。
ただし、Microsoftの説明では、-d は「名前解決を行わない」という意味のオプションとして定義されています。
そのため、「ドメインを指定するためのオプション」と考えるのは適切ではありません。
覚え方としては、
-dを付けるとDNSによる名前解決を省略する
と覚えておくと分かりやすいでしょう。
tracert -dを実際に試してみる
実際に 8.8.8.8 に対して実行してみます。
オプションなし
tracert 8.8.8.8
実行結果は次のようになりました。
dns.google [8.8.8.8] へのルートをトレースしています
経由するホップ数は最大 30 です:
1 1 ms 1 ms 1 ms
2 7 ms 7 ms 11 ms
3 13 ms 9 ms 7 ms
4 8 ms 8 ms 7 ms
5 20 ms 14 ms 12 ms
6 9 ms 8 ms 7 ms
7 17 ms 11 ms 12 ms
8 9 ms 8 ms 8 ms
9 9 ms 9 ms 8 ms dns.google [8.8.8.8]
トレースを完了しました。
IPアドレスだけではなく、
dns.google [8.8.8.8]
のようにホスト名も表示されています。
-dを指定
次に -d を指定します。
tracert -d 8.8.8.8
すると、
8.8.8.8 へのルートをトレースしています。
経由するホップ数は最大 30 です
1 1 ms 1 ms 1 ms
2 7 ms 7 ms 7 ms
3 7 ms 7 ms 7 ms
4 29 ms 26 ms 8 ms
5 9 ms 25 ms 9 ms
6 9 ms 13 ms 10 ms
7 8 ms 8 ms 8 ms
8 9 ms 8 ms 8 ms
9 8 ms 8 ms 8 ms 8.8.8.8
トレースを完了しました。
ホスト名が表示されず、IPアドレスだけになっています。
-dを付けると処理が速くなる理由
今回の実行では、-d を付けたほうが完了するまでの時間が短くなりました。
これは、DNSによる名前解決を行わなくなるためです。
イメージとしては、次の違いです。
通常のtracert
↓
経路を調査
↓
IPアドレスを取得
↓
ホスト名を名前解決
↓
結果を表示
-d を付けると、
tracert -d
↓
経路を調査
↓
IPアドレスをそのまま表示
となります。
名前解決の処理が不要になるため、特に調査対象となるホップが多い場合などでは、完了までの時間を短縮できる可能性があります。
実際にパケットキャプチャを取得してみると、この違いがより分かりやすくなります。
パケットキャプチャで-dを確認する
tracert の通信をパケットキャプチャして確認してみます。
-d オプションを付けた場合、キャプチャ上ではDNSプロトコルの通信がありませんでした。

これは、-d によって名前解決を無効にしているためと考えられます。
つまり、
tracert
↓
DNSで名前解決
↓
ホスト名を表示
という処理を行う必要がなくなります。
一方、-d を付けなければ、ホスト名を表示するために名前解決が行われます。
このように、実際のパケットキャプチャでも -d の動作を確認できます。
ネットワークの勉強をしているのであれば、コマンドの実行結果だけでなく、実際のパケットを見るのもおすすめです。
tracert -wとは?
次に -w オプションです。
結論からいうと、-w は応答を待つ時間をミリ秒単位で指定するオプションです。
例えば、
tracert -w 100 8.8.8.8
と指定すると、応答を待つ時間を100ミリ秒に設定できます。
tracert /? では次のように説明されています。
-w timeout
timeout ミリ秒間、応答を待ちます。
つまり、
-w 1
なら1ミリ秒、
-w 100
なら100ミリ秒、
-w 1000
なら1000ミリ秒、
というように指定します。
ちなみに、
1000ミリ秒 = 1秒
です。
「-w」は何の略?
-w が何の略なのかも気になるところです。
-w は、wait(待つ)をイメージすると覚えやすいでしょう。
つまり、
-w= 応答を待つ時間を指定する
と覚えておけば、実際の使い方を理解しやすくなります。
ただし、Microsoftのヘルプでは -w の正式な意味を「waitの略」と説明しているわけではありません。
そのため、あくまで覚え方として「wait」と考えるとよいでしょう。
tracert -w 1を実行してみる
それでは、実際に -w 1 を指定してみます。
tracert -w 1 8.8.8.8
実行結果は次のようになりました。
dns.google [8.8.8.8] へのルートをトレースしています
経由するホップ数は最大 30 です:
1 3 ms 1 ms 1 ms
2 12 ms 11 ms *
3 12 ms 9 ms 9 ms
4 18 ms 19 ms 20 ms
5 17 ms 14 ms 12 ms
6 9 ms 8 ms 8 ms
7 9 ms 8 ms 10 ms
8 8 ms 8 ms 8 ms
9 28 ms 10 ms 13 ms dns.google [8.8.8.8]
トレースを完了しました。
ここで、
*
が表示されています。
これは、設定した待ち時間内に応答を受け取れなかったことを示しています。
今回の場合、-w 1 なので、非常に短い時間しか応答を待ちません。
そのため、実際には応答が返ってくる場合でも、1ミリ秒という短い時間内に受け取れなければ * になる可能性があります。
「*」は必ずネットワーク障害なの?
ここは初心者が特に注意したいポイントです。
tracert で、
*
が表示されたからといって、必ずネットワーク障害が発生しているとは限りません。
応答が返ってこない理由には、いくつか考えられます。
例えば、
- 応答に時間がかかった
- ルーターが応答しない設定になっている
- ファイアウォールなどで応答が制限されている
- パケットが失われた
などです。
特に -w 1 のように待ち時間を極端に短くすると、正常な通信でも * が表示されることがあります。
そのため、
*がある = 障害
と単純に判断しないことが重要です。
tracert -w 100を実行してみる
次に、待ち時間を100ミリ秒に変更してみます。
tracert -w 100 8.8.8.8
実行結果は次のようになりました。
dns.google [8.8.8.8] へのルートをトレースしています
経由するホップ数は最大 30 です:
1 1 ms 1 ms 1 ms
2 22 ms 23 ms 20 ms
3 11 ms 8 ms 8 ms
4 8 ms 10 ms 9 ms
5 9 ms 8 ms 8 ms
6 9 ms 10 ms 9 ms
7 12 ms 12 ms 11 ms
8 13 ms 11 ms 9 ms
9 36 ms 37 ms 40 ms dns.google [8.8.8.8]
トレースを完了しました。
-w 1 のときにあった * は表示されませんでした。
一方で、
-w 1
と
-w 100
で、実行結果の数字が大きく変わっているわけではありません。
これは、-w が「通信そのものの速度」を変更するオプションではないためです。
-w 1と-w 100の違い
-w は、応答を待つ最大時間を指定するものです。
例えば、
tracert -w 1 8.8.8.8
なら、応答を非常に短い時間しか待ちません。
一方、
tracert -w 100 8.8.8.8
なら、より長く応答を待ちます。
イメージとしては、宅配便の再配達を待つ時間のようなものです。
-w 1
「1ミリ秒だけ待って、来なければ次へ進もう」
-w 100
「100ミリ秒まで待ってみよう」
このため、応答に時間がかかる環境では、-w の値が小さいと * が表示されやすくなります。
逆に、-w の値を大きくすると、遅れて返ってくる応答を受け取れる可能性があります。
ただし、待ち時間を大きくすれば通信速度が速くなるわけではありません。
-dと-wを組み合わせる
-d と -w は組み合わせて使うこともできます。
例えば、
tracert -d -w 100 8.8.8.8
とします。
この場合、
-d:名前解決を行わない-w 100:応答を最大100ミリ秒待つ
という2つの設定が同時に適用されます。
ネットワーク障害などを調査するときは、名前解決による余計な時間を避けるために -d を付けることがあります。
また、環境に合わせて -w の値を調整することで、応答を待つ時間を変更できます。
tracert -dとtracert -wの違いまとめ
ここまでの内容をまとめると、次のようになります。
| オプション | 意味 | ポイント |
|---|---|---|
-d | 名前解決を行わない | DNSによる名前解決を省略できる |
-w | 応答を待つ時間を指定 | 単位はミリ秒 |
-w 1 | 1ミリ秒待つ | 短いため*が出やすくなる可能性がある |
-w 100 | 100ミリ秒待つ | -w 1より長く応答を待つ |
特に覚えておきたいのは、次の2点です。
tracert -d
DNSによる名前解決を行わず、IPアドレスをそのまま表示する。
tracert -w
各応答を待つ時間をミリ秒単位で指定する。
まとめ
今回は tracert -d と tracert -w について確認しました。
-d は、名前解決を無効にするオプションです。
名前解決を行わないため、DNS通信が発生せず、結果を早く取得できる場合があります。
実際にパケットキャプチャを取得すると、-d を付けた場合にDNS通信が発生していないことも確認できます。
一方、-w は応答を待つ時間を指定するオプションです。
例えば、
tracert -w 1 8.8.8.8
なら1ミリ秒、
tracert -w 100 8.8.8.8
なら100ミリ秒待ちます。
-w の値が小さすぎると、応答が返ってくる前にタイムアウトして * が表示される場合があります。
ただし、* が表示されたからといって、必ずネットワーク障害があるとは限りません。
tracert の結果を見るときは、* の有無だけで判断せず、待ち時間やルーター側の設定なども含めて確認することが大切です。
ネットワーク調査で tracert を使う際は、
tracert -d -w 100 8.8.8.8
のようにオプションを組み合わせることで、名前解決を省略しつつ、応答を待つ時間も指定できます。
-d は「名前解決をしない」、-w は「応答を待つ時間」。
まずはこの2つを押さえておけば、tracert のオプションで迷うことも少なくなるでしょう。

