tcptraceroute / traceroute
- TCP パケットを利用した経路探索を行う
- 動作原理
- TCP/UDP パケットを送信し、TTL を増加させていって、その応答をもって経路を判断
- 一番最初のパケットは、TTL に 1 をセットする
- 隣接するルータから ICMP TIME EXCEEDED が届く
- TTL を 2 にして UDP パケットを送信
- その次のルータから ICMP TIME EXCEEDED を受けとる。
- ICMP TIME EXCEEDED
- どのルータでパケットが破棄されたかという IP アドレスが記録されているので、1つずつ TTL を増やしたパケットを送信すれば、結果としてパケットが通過した経路がわかる
- UDP パケットはポート番号 33434~33499 あたりであるが、このポートは大抵の場合は誰も使っていないため、対象ホストから ICMP Port Unreachable というパケットが返される
- この ICMP が届けば対象ホストに到達したことがわかる
- 最後の 1 ホップの動作は下記のどちらかを利用
- ICMP Echo パケットの利用し、ICMP Echo Reply を返してくれる
- UDP 利用
- UDP 宛先ポート番号は、宛先でサービスが存在しないものを利用
- 宛先に UDP パケットが届いたときに、宛先ホストは ICMP を使って「そのポート番号は使われていませ」というメッセージを送り返す
- ICMP の Type が Destination Unreachable で、Code が port unreachable
ICMP TIME EXCEEDED
- パケットがインターネット上で存在し続けてしまっても良い限度を超えて転送され続けてしまったために破棄されたことを伝える ICMP メッセージ
異常メッセージ
項目 説明 ! 応答の TTL が 1以下
TTL が不正な ICMP TIME EXCEEDED が返されたということ!N ネットワーク到達不能 !H ホスト到達不達 !P プロトコル到達不能 !S ソースルーティング失敗 !F-[MTU値] フラグメンテーションが必要 !X 管理上、通信が禁止されている !V ホスト順序違反 !C 順序カットオフ発生 ![コード番号] ICMP type3 code[コード番号] により到達不能 TTL(Time To Live)
- パケットの生存を表す
- パケットがルータを 1 つ通過するたびに TTL の値は 1 だけ引かれます
- TTL が 0 になったら、パケットの破棄となる
- 破棄したタイミングで、ICMP TIME EXCEEDED というパケットをホストに返却
例
google.jp の80番ポートへの経路探索
# tcptraceroute -w1 google.jp 80 Selected device eth0, address 158.199.143.102, port 35238 for outgoing packets Tracing the path to google.jp (74.125.235.151) on TCP port 80 (http), 30 hops max 1 158.199.143.1 1.141 ms 1.069 ms 1.012 ms 2 10.0.11.137 0.768 ms 0.722 ms 0.632 ms 3 10.0.11.125 6.086 ms 0.322 ms 0.317 ms 4 10.0.10.41 0.301 ms 0.258 ms 0.268 ms 5 111.87.16.41 0.627 ms 0.639 ms 0.624 ms 6 otejbb206.int-gw.kddi.ne.jp (118.155.197.130) 0.822 ms 0.996 ms 0.836 ms 7 ix-ote212.int-gw.kddi.ne.jp (106.187.6.126) 9.376 ms 11.757 ms 0.830 ms 8 72.14.220.145 1.082 ms 1.288 ms 1.272 ms 9 72.14.236.80 1.260 ms 1.276 ms 1.021 ms 10 209.85.241.129 1.352 ms 1.317 ms 1.396 ms 11 nrt19s11-in-f23.1e100.net (74.125.235.151) [open] 1.133 ms 1.336 ms 1.128 ms
1 158.199.143.1 1.141 ms 1.069 ms 1.012 ms
- 158.199.143.1 への 3 パケット分の往復時間を記録
1 * * *
- タイムアウト、応答を返さない