tracerouteはUDPまたはICMPまたはその両方を使用しますか?


24

ラップトップからwww.google.comドメインでトレースを行うとき、icmpまたはudpを使用していますか?
私はそれがicmpタイプ11であると思いましたが、何か他のものを探しているときに、icmpタイプ30が使用されているルールに出会い、udpが使用されているルールを見ました。
誰かがそれがどのように機能するかを私に説明できますか?
仮想専用サーバーのファイアウォール(iptables)で作業しています。

回答:


26

送信されるパケットのタイプは、実装によって異なります。デフォルトでは、Windows tracertはICMPを使用し、Mac OS XとLinux tracerouteはUDPを使用します。BSDやSolarisのマシン、その他のOSをチェックする必要はありませんが、Mac OS Xバージョンのマニュアルページには、その起源がBSD 4.3であると記載されています。

私が持っているMacおよびLinuxバージョンは、ICMP、TCP、UDP、およびGREパケットを含むさまざまな異なるプロトコルを選択する機能を提供しています。他のプロトコルは名前または番号で指定できますが、tracerouteは他のプロトコルの動作については何も知りません。盲目的に送信するだけです。

また、ファイアウォールを回避したり、パス上のどのルーターが特定のサイズのパケットをドロップしているかを発見したりするために、ペイロードと送信元ポートおよび宛先ポートの両方を変更できます。

tracerouteのすべてのバージョンは、ルートに沿った各ホップからのICMPタイプ11(時間超過)応答に依存しています。ICMPタイプ11の応答がファイアウォールによってブロックされている場合、tracerouteは機能しません。これらのパケットはインバウンドであり、アウトバウンドではありません。

ICMPタイプ30は、特にtracerouteに指定されており、「情報要求」としてラベル付けされています。これが実際に使用されている場所を見つけることができませんでした。Mac OS XおよびLinuxバージョンのmanページには、ICMPタイプ8(エコー要求)-Iが送信されると書かれています。ウィキペディアによると、Windows tracertはICMPエコー要求も使用します。ICMPタイプ30またはタイプ8はアウトバウンドパケットであり、インバウンドではありません。

TTLがホップ数と正確に等しい場合、ICMPタイプ0(エコー応答)が最後のパケットとして返される場合があります。Tracerouteは、これらのいずれかを受信すると終了したことを認識します。これは着信パケットです。

TCP SYNパケットは、宛先に到達すると、RSTパケットまたはSYN ACKパケットの応答を引き起こします。SYN ACKパケットを受信した場合RST、サーバー上でハーフオープン接続を残さないように、パケットをフォローアップすることは丁寧です。

得ることが可能であるICMPタイプ3コード4つの 11応答の代わりにICMPタイプのバック応答をあなたは「ドフラグメントではない」フラグが設定された大規模なパケットを送信する場合、しかし、これが唯一の最小のMTUを使用すると、ホップを見つけることができるようにする可能性があります。通常、この種の応答は、ルートに沿った1つのホップからのみ取得されます。すべてではありません。


8

従来のtracerouteは、ホップごとにポートを増やすときにUDPを使用します。

ICMP、TCP SYNなど、あらゆる種類のパケットを使用して実装できます。必要なのは、IPパケットが期限切れになり、黄金色になることだけです。

MacOSなどのさまざまな実装では、ファイアウォールの制限をバイパスするために、ポートなどを増加させないモードだけでなく、複数の種類のtracerouteをサポートしています。


7
Unixライクな実装のデフォルトUDPポートは33434から33534です。ICMP実装は「エコー要求」(タイプ8)を使用します。
Ouki
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.