ping と Traceroute の仕組み

Ping は ICMP プロトコルに基づいて動作します。ICMP は Internet Control Message Protocol の略で、インターネット制御メッセージ プロトコルです。

ICMP メッセージは IP パケットにカプセル化されます。命令を送信する場合、送信元アドレスと宛先アドレスが必ず必要になるためです。それ自体はとてもシンプルです。

ICMP メッセージには多くの種類があり、種類が異なればコードも異なります。最も一般的に使用されるタイプは、一方的な要求の場合は 8、一方的な要求に対する応答の場合は 0 です。

ping のアクティブな要求の場合、ICMP ECHO REQUEST と呼ばれるネットワーク パケット キャプチャが実行されます。同様に、アクティブなリクエストに対する応答は ICMP ECHO REPLY と呼ばれます。

オプション データでは、ping は往復時間を計算し、移動の長さを示すためにリクエストが送信されたときの時間値も保存します。

エラー メッセージ タイプ: エンドポイント到達不能は 3、ソース抑制は 4、タイムアウトは 11、リダイレクトは 5。ネットワーク到達不能コードは 0、ホスト到達不能コードは 1、プロトコル到達不能コードは 2、ポート到達不能コードは 3、フラグメンテーションが必要ですが、非フラグメンテーション ビット コードは 4 に設定されます。

ping の送受信プロセスは次のとおりです。

Traceroute の最初の機能は、目的地までの途中で通過するルーターを追跡するために特別な TTL を意図的に設定することです。Traceroute はすべてのルーター IP を取得します。もちろん、一部のルータはこの ICMP にまったく応答しません。これは、Traceroute がパブリック ネットワーク アドレスであり、中間ルートを確認できない理由でもあります。

UDP が宛先ホストに到達したかどうかはどうやってわかりますか? Traceroute プログラムは UDP データグラムを宛先ホストに送信しますが、UDP ポート番号として不可能な値 (30000 より大きい) を選択します。データグラムが到着すると、宛先ホストの UDP モジュールは「ポート到達不能」エラー ICMP メッセージを生成します。データグラムが到着しない場合は、おそらくタイムアウトです。

Traceroute には、パスの MTU を決定するために、意図的にフラグメンテーションを行わないように設定する機能もあります。最初に行うことは、パケットを送信し、「フラグメント化しない」フラグを設定することです。送信される最初のパケットの長さは、出力 MTU とまったく同じです。途中で狭いゲートウェイに遭遇すると、ゲートウェイはスタックし、「フラグメンテーションが必要ですが、フラグメンテーション禁止ビットが設定されています」というタイプの ICMP ネットワーク エラー パケットが送信されます。実際、これは意図的なもので、ICMP の「フラグメント化できません」エラーを受信するたびに、ターゲット ホストに到達するまでパケットの長さが短縮されます。

この記事は9月の7日目の学習ノートです。内容はGeek Timeの「インターネットプロトコル」から引用しています。このコースはお勧めです。

おすすめ

転載: blog.csdn.net/key_3_feng/article/details/132747239
おすすめ