FANDOM


テンプレート:小文字 traceroute(トレース ルート)はIPネットワークにおいて、ノードまでの経路情報を取得するツールである。 インターネット上で、2つのノード(パソコンやサーバなど)が通信する場合、2つのノードの間には0個以上のルータが存在する。 tracerouteを利用することで、tracerouteを実行したノードから指定したノードに到達するまでに、経由するルータのリストが得られる。

Windowsのtracertも同様のツールである。

原理編集

tracerouteはTTLを1ずつ増やしながらパケットを送信することで、経路情報を取得する。 TTLとはパケットの生存期間を表し、ルータを1つ経由することに1ずつ減算される。 ルータTTLが2以上のパケットが届いた場合、TTLの値を1だけ小さくし次のルータへ転送する。 TTLが1のパケットが届いた場合、届いたパケットを破棄しICMP time exceededパケットを送信者に返す。

tracerouteはまず、TTLを1にセットしたパケットを送信する。最初のルータに届いた時点でTTLがゼロになり、ICMP time exceededメッセージが戻ってくる。このメッセージの送信元アドレスを見れば、最初のルータのIPアドレスがわかる。次にTTLを2にセットして送信すると、今度は2番目のルータからICMP time exceededが戻ってくる。以降、TTLを3、4・・・と増やしていく事で、順にルータのIPアドレスを得る事ができる。

実際には、以上の作業を3回繰り返して行い、応答までの時間を表示する。 経由しているルータが応答せずタイムアウトが発生した場合は、*マークを表示する。 tracerouteで得られる経路情報は往路のみである。反対側からの経路も同じとは限らない。

tracerouteが送信するパケットは原理上は何でも構わないが、一般的なtracerouteの実装ではランダムなポート番号のUDPデータグラムが使用される。Windowsのtracertではpingと同じICMP Echo requestパケットを使用している。また、オプションスイッチによって使用するパケットを切り替えられる実装もある。

UDPを使用するtracerouteは、ポート番号が定まらないためパケットフィルタリングを行っているネットワークでは利用が難しい面があり、特にファイアウォールがある場合は問題になりやすい。 また、最終的な宛先ノードにパケットが到達した際、ICMP Echo requestの場合は単にICMP Echo replyが返されるだけだが、UDPの場合は、たまたまそのポート番号が使われていた等で、期待した動作にならない事がある。

他方、ICMPを使用した実装は、ICMP Echo requestメッセージのTTL切れに対してICMP time exceededが発生する事を前提としている。RFC1812ではICMPがクエリとエラーに分けられ、クエリに対するエラーの送信は禁止されてはいないが、RFC792では単に「ICMPメッセージについてのICMPは送信しない」とされており、この記述には合致していない。現代ではほとんどの機器で動作するが、RFC792だけを見て実装された機器では期待通りに動かない可能性もある。

実行例編集

tracerouteUnix上で実行した結果を下記に示す。

% traceroute fr.wikipedia.org
traceroute to rr.knams.wikimedia.org (145.97.39.155), 30 hops max, 38 byte packets
1 80.67.162.30 (80.67.162.30) 0.341 ms 0.300 ms 0.299 ms
2 telehouse2-gw.netaktiv.com (80.67.170.1) 5.686 ms 1.656 ms 0.428 ms
3 giga.gitoyen.net (80.67.168.16) 1.169 ms 0.704 ms 0.563 ms
4 62.4.73.27 (62.4.73.27) 2.382 ms 1.623 ms 1.297 ms
5 ge5-2.mpr2.cdg2.fr.above.net (64.125.23.86) 1.196 ms ge9-4.mpr2.cdg2.fr.above.net (64.125.23.102) 1.290 ms ge5-1.mpr2.cdg2.fr.above.net (64.125.23.82) 30.297 ms
6 so-5-0-0.cr1.lhr3.uk.above.net (64.125.23.13) 41.900 ms 9.658 ms 9.118 ms
7 so-7-0-0.mpr1.ams5.nl.above.net (64.125.27.178) 23.403 ms 23.209 ms 23.703 ms
8 64.125.27.221.available.above.net (64.125.27.221) 19.149 ms so-0-0-0.mpr3.ams1.nl.above.net (64.125.27.181) 19.378 ms 64.125.27.221.available.above.net (64.125.27.221) 20.017 ms
9 PNI.Surfnet.ams1.above.net (82.98.247.2) 16.834 ms 16.384 ms 16.129 ms
10 af-500.xsr01.amsterdam1a.surf.net (145.145.80.9) 21.525 ms 20.645 ms 24.101 ms
11 kncsw001-router.customer.surf.net (145.145.18.158) 20.233 ms 16.868 ms 19.568 ms
12 gi0-24.csw2-knams.wikimedia.org (145.97.32.29) 23.614 ms 23.270 ms 23.574 ms
13 rr.knams.wikimedia.org (145.97.39.155) 23.992 ms 23.050 ms 23.657 ms

Mac OS Xでは「ターミナル」から上記と同様に実行出来る。 (Macintosh HD→アプリケーション→ユーティリティ→ターミナル)

尚、上記とは別にGUIから実行可能なtracerouteも有る。 (Macintosh HD→アプリケーション→ユーティリティ→ネットワークユーティリティ→traceroute)

IPのレコード・ルートとの違い 編集

tracerouteと似た目的のものに、pingプログラムのレコード・ルートオプションがある。これはtracerouteとは原理がまったく異なり、IPパケットのオプションであるレコード・ルート機能を活用したものである。パケットがルータを通過する際に、ルータ自身がパケットに自分のアドレスを書き込んでいく事で実現されている。

レコード・ルートにはいくつか欠点があり、それがtraceroute開発の動機となったといわれる。

  • 記録用のフィールドが小さく、往復で9個のルータしか記録できない。
  • そもそもIPの仕様においてオプションであり、ルータが対応していない事がある。
  • ルータだけでなく、Echo replyを返すホストも対応している必要がある。

tracerouteが広まった現代では、レコード・ルートオプションを持たないping実装も多い。

参考文献 編集

  • W・リチャード・スティーヴンス、『詳解TCP/IP Vol.1プロトコル』、ピアソン・エデュケーション、2000年、第7、8章
  • RFC792 『Internet Control Message Protocol』
  • RFC1812 『Requirements for IP Version 4 Routers』

関連項目編集

外部リンク編集

Smallwikipedialogo.png このページの内容は、ウィキペディアから取られています。オリジナルの記事は、Tracerouteにあります。この記事の著作権者のリストは、ページの履歴を御覧ください。Uikipediaと同じく、ウィキペディアのテキストは、CC3.0-BY-SAで提供されています。


テンプレート:Computer-stub テンプレート:Unixコマンドcs:Traceroute de:Traceroute en:Traceroute es:Traceroute eu:Traceroute fi:Traceroute fr:Traceroute he:Traceroute hu:Tracert id:Traceroute it:Traceroute ml:ട്രേസ്റൂട്ട് nl:Traceroute no:Traceroute pl:Traceroute pt:Traceroute ro:Traceroute ru:Traceroute sv:Traceroute tr:Traceroute zh:Traceroute