web-dev-qa-db-ja.com

Traceroute、ICMP、UDPおよびTCP

TracerouteはいつTCPを使用しますか?または、UDPを使用しているだけでなく、TracerouteがMacXではUDPを、WindowsではICMPを使用しているのはなぜですか? ICMPには、パケットのエラーの原因を示すメッセージが含まれているだけで、TCPやUDPなどのセグメントは送信されません。

4
user171131

ICMPメッセージは引き続きIPパケットです。 TracerouteはECHO Request(ICMPタイプ8)デフォルトでは、増加するTTLを使用するUnixおよびWindowsで、各送信アドレスをログに記録しますTime Exceeded(タイプ11)メッセージは、ルートに沿ってホップから返されます。 (cf: http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol

これは「正しい」方法ですが、ルート上の一部のシステムがドロップしたり、ICMPトラフィックを別の方法で処理したりすると、問題が発生する可能性があります。

tracerouteの一部の実装(Linuxなど)では、-Tおよび-U代わりにTCP/UDPに切り替えるためのオプション(および以下の-p引数で宛先ポートを指定します)。これは実際のトラフィックをより厳密にシミュレーションするのに役立ち、場合によってはより正確な結果が得られる可能性があります。

そのため、OSXの実装はデフォルトでUDPになっていると思いますが、はっきりとは言えません。代わりにICMPを使用するスイッチが見つかるかもしれません。

4
SmallClanger

Windows Tracertは通常、特定のTTLでICMPを使用します。 TTLは、宛先に到達するまでホップごとに増加します。これは、最初のホップのTTL(max-hop-count))が1であることを意味しますパケットがターゲットに到達せず、最初のホップでドロップされ、TIME EXCEEDEDメッセージが返されます。このメッセージはルートのマッピングに使用され、次のICMPはTTL of 2。

OSXとLinuxはデフォルトでUDPを使用し、ポート番号が増加しますが、TCP、UDP、ICMP、またはGREパケットを使用するように両方を構成できます。

1
David Houde