2012-04-25 9 views
13

tracerouteプログラムは、増分TTL(1,2,3など)を使用して宛先ホストにUDPパケットを送信して、中間のホップ情報をから取得します。ICMP TTL EXPIREDメッセージ。
(つまり:そう誰かが聞いている)のtracerouteは高い番号のランダムなポートを解決するための条件は、ICMPポート到達不可能メッセージである「先はに達した」
だから私の質問は:そこには、技術的です例えば、ICMPエコー要求メッセージ(TTLが増加)を使用して、エコー応答の応答を終了条件として使用するのではなく、UDPパケットを使用する理由(欠点、RFCなど)
私はICMPエコー応答が途中でファイアウォールや他のネットデバイスによって除外されるかもしれないことを理解し、私は、これはUDPパケットにも発生することができますね。それは実際にありますtracerouteがICMPパケットではなくUDPパケットを送信するのはなぜですか?

多くのおかげ
セルジオ

答えて

13

) traceroutesを行う "古い"方法。私は主な動機は、単純なUDPパケットを送信するには特別な権限は必要ないということでした.ICMPパケットを送信する(rawソケットまたは同等のもの)。その理由は次のとおりです。 pingは通常rootにsetuidされます。これはセキュリティ上の大きなリスクです。

最近ではtracerouteもICMPとTCPプローブパケットをサポートしているため、ファイアウォールを介して侵入する可能性が高くなります。これはまた、tracerouteがシステム上でsetuidルートとなる可能性があることを意味します。そのマニュアルページ、特に利用可能な方法についての部分を参照してください:http://linux.die.net/man/8/traceroute