Traceroute
[Wikipedia|▼Menu]
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この記事には参考文献外部リンクの一覧が含まれていますが、脚注によって参照されておらず、情報源が不明瞭です。脚注を導入して、記事の信頼性向上にご協力ください。(2022年2月)

traceroute(トレース ルート)は、IPネットワークにおいてノードまでの経路情報を取得するツールである。

インターネット上で、2つのノード(パソコンサーバなど)が通信する場合、それらの間には0個以上のルータが存在する。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だけを見て実装された機器では期待通りに動かない可能性もある。
実行例

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

$ traceroute ja.wikipedia.org
traceroute to ja.wikipedia.org (208.80.152.2), 30 hops max, 60 byte packets
 1 ntt.setup (192.168.1.1) 0.121 ms 0.134 ms 0.159 ms
 2 118.23.8.17 (118.23.8.17) 6.037 ms 6.577 ms 7.064 ms
 3 118.23.5.137 (118.23.5.137) 4.971 ms 5.388 ms 5.368 ms
 4 122.1.164.213 (122.1.164.213) 7.556 ms 9.341 ms 11.167 ms
 5 60.37.55.165 (60.37.55.165) 6.195 ms 6.151 ms 6.154 ms
 6 60.37.27.89 (60.37.27.89) 6.470 ms 5.355 ms 5.761 ms
 7 ae-5.r21.tokyjp01.jp.bb.gin.ntt.net (129.250.11.53) 5.790 ms 7.090 ms 6.670 ms
 8 as-2.r21.snjsca04.us.bb.gin.ntt.net (129.250.4.44) 114.218 ms 113.157 ms 113.279 ms
 9 equinixexchange.ir1.sanjose-ca.us.xo.net (206.223.116.85) 122.223 ms 122.167 ms 122.115 ms
10 vb2001.rar3.la-ca.us.xo.net (207.88.13.110) 125.873 ms 132.449 ms 125.843 ms
11 vb15.rar3.dallas-tx.us.xo.net (207.88.12.45) 149.345 ms 149.826 ms 149.540 ms
12 207.88.14.42.ptr.us.xo.net (207.88.14.42) 182.000 ms 182.215 ms 181.906 ms
13 w006.z207088246.xo.cnc.net (207.88.246.6) 187.915 ms 187.107 ms 187.082 ms
14 rr.pmtpa.wikimedia.org (208.80.152.2) 186.903 ms 186.520 ms 186.758 ms
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』

関連項目

Internet Control Message Protocol

Ping

バン・ジェイコブソン

外部リンク

traceroute(1M)
man page(Solaris 10 Reference Manual)(英語)

traceroute コマンドによる経路制御情報の表示 Solaris のシステム管理 (IP サービス)

Tracerouteチェック










Unixコマンド
ファイルとファイルシステム管理

cat

chattr(英語版)

chmod

chown

chgrp

cksum

cmp

cp

dd

du

df(英語版)

file

fsck

fuser(英語版)

ln

ls

lsof

mkdir

mount

mv

pax

pwd

rm

rmdir

size

split

tee

touch

type(英語版)

umask(英語版)

プロセス管理

at

bg

chroot

cron

fg

kill

killall

nice

pgrep

pidof

pkill

ps

pstree(英語版)

reboot

shutdown

time

top

ユーザ管理/環境

clear

env

exit

finger

history(英語版)

id

logname(英語版)

mesg

passwd

su

sudo

uptime

talk

tput(英語版)

uname

w

wall

who

whoami

write

テキスト処理

awk

banner

basename


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:28 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef