プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
traceroute(tracert)コマンドで使うパケットにはUDPとICMPがあるらしい
結論から書くと

LinuxのtracerouteコマンドではUDPパケットを使って調査する
(オプションでICMPやTCPも選択可能)
WindowsのtracertコマンドはICMPパケットを使って調査する


らしいです。
へー、知らんかった。

traceroute(tracert)は、TTL(そいつの寿命として設定される値)を
1ずつ増やしたパケットを繰り返し投げることで
目的地までの経路を判定しています。

まずTTLが1のパケットを投げてやります。
そうすると、最初の機器に到達した時点でTTLが0になり、パケットが破棄されます。
その旨の通知を受けることで、最初の機器の所在を把握します。

次にTTLが2のパケットを投げてやります。
そうすると、2つ目の機器に到達した時点でTTLが0になり、パケットが破棄されます。
その旨の通知を受けることで、2つ目の機器の所在を把握します。

次にTTLが3のパケットを投げてやります。
そうすると、3つ目の機器に到達した時点でTTLが0になり、パケットが破棄されます。
その旨の通知を受けることで、3つ目の機器の所在を把握します。

それを目的地に到着するまで繰り返すことで、途中にどんな機器があるかを把握します。
つまり、経路を把握できるのです。

このときに使うパケットがUDP(Linux)かICMP(Windows)かの違いです。

これが何を意味するかと言うと、
ファイアーウォールの設定でUDPパケットを通さないようにしていた場合、
Linuxのtracerouteコマンドが上手く動作しないということです。
また、ファイアーウォールの設定でICMPパケットを通さないようにしていた場合、
Windowsのtracertコマンドは途中で先に進めなくなってしまいます。

Linuxのtracerouteコマンドを使うと途中でタイムアウトするけど、
Windowsのtracertコマンドを使うと経路判定できる(あるいは、その逆)なんてことも起こり得ます。

ふーん、traceroute(tracert)コマンドで使うパケットの種類なんて気にしていなかったけど、
一応、覚えておいた方が良さ気ですね(--ゞ

取りあえず、そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● ネットワーク関連  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

| HOME | next