TCP / IPプロトコルスイートのARPプロトコル

目次

1.ARPプロトコルの概要

2.ARPプロトコル構造

3.Wiresharkパケットキャプチャ分析

4.ARPプロトコル分類

5.ARPプロトコルアプリケーション

6.ARP攻撃


1.ARPプロトコルの概要

IPプロトコル」では、IPアドレスの内容を説明しましたが、IPプロトコルには宛先IPアドレスと送信元IPアドレスが含まれていますが、ホストが同じLAN上の別のホストにイーサネットデータフレームを送信すると、宛先インターフェイスは48ビットのイーサネットアドレスに基づいて決定されます。デバイスドライバは、IPデータグラムの宛先IPアドレスをチェックすることはありません。

データリンク層のイーサネットプロトコルでは、すべてのデータパケットにMACアドレスヘッダーがあることを覚えていますか?すべてのイーサネットカードにMACアドレスがあり、このアドレスは一意であることがわかっています。それでは、IPパケットはどのようにしてこのMACアドレスを認識しますか?これはARPプロトコルの仕事です。

OSIモデルでは、ARPプロトコルはリンク層に属します。TCP/ IPモデルでは、ARPプロトコルはネットワーク層に属します。ARPプロトコルデータのどの層、異なる資料が異なる意見を持っているか、ここでの議論に焦点を当てません。

ARP(アドレス解決)プロトコルは解決プロトコルです。元々、ホストはこのIPがどのホストのどのインターフェイスに対応するかを知りません。ホストがIPパケットを送信する場合、最初に自身のARPキャッシュ(つまり、 、IP-MACアドレス対応テーブルキャッシュ)、照会されたIP-MAC値が存在しない場合、ホストはARPプロトコルブロードキャストパケットをネットワークに送信します。このブロードキャストパケットには、照会されるIPアドレスが含まれ、これを直接受信します。ブロードキャストパケットのすべてのホストは、独自のIPアドレスを照会します。ブロードキャストパケットを受信したホストは、条件を満たしていることを検出すると、独自のMACアドレスを含むARPパケットを準備し、ARPブロードキャストを送信するホストに送信します。ホストはARPパケットを取得した後、自身のARPキャッシュ(IP-MAC対応テーブルが保存されている場所)を更新します。ブロードキャストを送信するホストは、新しいARPキャッシュデータを使用して、データパケット送信用のデータリンク層を準備します。

2.ARPプロトコル構造

前回の記事「イーサネットパケット構造」では、この図がARPプロトコルのデータ構造を表していることがわかります。

典型的なARPパケットの構造を見てみましょう。

最初の12バイトは「イーサネットパケット構造」の記事で説明されているMACアドレスであり、次はフレームタイプです。ここで、0806はARPプロトコルフレームを表します。次はARPパケット部分です。最初のハードウェアタイプフィールドは、送信者が知りたいハードウェアインターフェイスタイプのハードウェアを示します。イーサネットMACアドレスの場合、その値は1である必要があります。プロトコルタイプフィールドは、マッピングされるプロトコルアドレスのタイプを示します。値が0x0800の場合、IPアドレスにマッピングされていることを意味します。この値は、の値と同じ値のセットを使用していることがわかります。イーサネットデータフレームヘッダーのタイプフィールド。

次の2つのシングルバイト長フィールドは、ハードウェアアドレス長とプロトコルアドレス長と呼ばれ、それぞれハードウェアアドレスとプロトコルアドレスの長さを示し、長さの単位はバイトです。イーサネットでのARP要求または応答の場合、それらの値はそれぞれ6と4であり、MACアドレスの長さとIPアドレスの長さを表します。ARPプロトコルパケットのハードウェアアドレス長フィールドとプロトコルアドレス長フィールドを別にしておくと、イーサネットだけでなく、任意のネットワークでARPプロトコルを使用できるようになります。

操作フィールドopは、ARPパケットのタイプを示します。これらは、ARP要求(値1)、ARP応答(値2)、RARP要求(値3)、およびRARP応答(値4)です。ここでは、フロントのみを扱います。 2種類。RARPは、Reverse Address Resolutionプロトコルです。簡単な紹介です。RARPは、ホストの起動時に独自のIPアドレスを取得するために使用されます。このプロセスは非常に単純です。ホストが起動すると、ホストは独自のMACアドレスを含むRARP要求パケットをブロードキャストし、応答を待ちます。ネットワーク内の別のホストは、RARP要求のステータスを監視するように設定する必要があり、要求を受信した後、ホストにIPアドレスを割り当て、ホストにRARP応答を返します。応答を受信すると、ホストにはIPアドレスとで使用できます。

次の4つのフィールドは、送信者のイーサネットMACアドレス、送信者のIPアドレス、宛先のイーサネットMACアドレス、および宛先のIPアドレスです。

PADスタッフィングバイトについては、「イーサネットパケット構造」の説明を参照してください

注:イーサネットデータフレームのヘッダーとARPパケットには、送信者のイーサネットMACアドレスがあります。ARP要求パケットの場合、受信者のイーサネットアドレスを除くすべてのフィールドに対応する値を入力する必要があります。受信側ホストは、自身のARP要求メッセージを受信すると、自身のハードウェアアドレスを入力し、要求パケットの送信元ホスト情報と宛先ホスト情報の場所を交換し、操作フィールドopを2に設定します。最後に、新しく構築されたデータパケットが返送されます。これがARP応答です。

3.Wiresharkパケットキャプチャ分析

IP 192.168.0.103でMACアドレスを照会すると仮定して、次のコマンドを使用します

arp -a 192.168.0.103

 

パケットキャプチャ分析

ここでwiresharkのキャプチャファイルを共有します

クリックしてダウンロードします。コインをダウンロードしていない場合は、公式アカウントに従ってリクエストできます。

4.ARPプロトコル分類

ARPパケットには次の2つのタイプがあります。

1つはARP要求パケットで、イーサネットブロードキャストを介して送信され、特定のIPアドレスを持つホストに要求を送信して、ホストがMACアドレスを返すことを期待します。

2つ目はARP応答パケットです。ARP要求を受信したホストは、パケット内のIPアドレスを自身のIPアドレスと比較します。その場合、ホストはARP応答パケットを送信元ホストに返し、自身のIPアドレスを送信元ホスト。MACアドレス。ソースホストは、ARP応答パケットの関連フィールドを抽出することにより、ARPキャッシュテーブルを更新します。

一般的なarpキャッシュ情報は次のとおりです。任意のシステムで「arp-a」コマンドを使用してください。

この結果が得られます。このようなキャッシュには時間制限があり、通常は20分です(バークレーシステムの派生物)。

5.ARPプロトコルアプリケーション

基本的な知識:ルーターの下に2つのデバイスがあり、お互いのIPとMAC​​を知っていますが、直接通信することはできません。転送のためにルーティングする必要があります。2つのデバイスがネットワークケーブルで直接接続されている場合は、直接通信しています。

 栗をあげる

ルーティング中のデバイスは2つあります。最初のポイント:各デバイス(ルーティングを含む)には、独自のARPキャッシュテーブルがあります。デバイスAはLANの下でデバイスBと通信します(デバイスAはデバイスBのIPを知っています)

ケース1:AはBのMACアドレスを知っています。つまり、Aは自身のARPキャッシュテーブルにデバイスBを持っており、それを直接パケット化してルーターに渡します。

ケース2:AはBのMACアドレスを知らない、つまり、自身のARPキャッシュテーブルにデバイスBがないため、現時点では、遅延後にデータを送信する必要があるのは残念です。まず、デバイスAゲートウェイ(ルーティング)を送信します。ARP要求パケット(イーサネット)ネットの宛先アドレスはFF-FF-FF-FF-FF-FFです。このとき、ケースAとケースBに分けられます。

ケースA:ルータはデバイスBのMACを認識しています。つまり、ARPキャッシュテーブルにデバイスBがあり、デバイスBの既知のIPとMAC​​をデバイスAに返し、デバイスAは次のように自身のARPキャッシュテーブルを更新します。状況1の治療。

ケースB:ルータはデバイスBのMACを認識しておらず、ルータは自身のLANでARP要求パケットを送信し、デバイスBのMACを要求します。入手後、Aに送ってください。AがMACアドレスを取得したら、ケース1に従って続行します。

上記の状況は、ネットワーク機器が初めてスムーズに通信するためには、ローカルエリアネットワーク内の機器が自身のMACアドレスを知っている必要があることを示しています。ネットワーク機器の開発では、通常、独自のMACアドレスをネットワーク機器が初めてネットワークに接続された後のローカルエリアネットワーク<IP、MAC>アドレス情報は無償のARP要求と呼ばれます。このようなARPパケットは他のホストに自分自身について通知し、他のホストはARPを更新します。受信したARPパケットに基づくエントリ。上記のバークレーシステムの派生システムでは、ARPキャッシュテーブルは通常20分間保存されます。時間内に更新されない場合、ホストは「オフライン」デバイスのARPテーブルを削除します。ホストのARPキャッシュテーブルが原因です。メモリが限られているため、無制限のARPを保存することはできません。テーブル情報。このような状況に対応して、ネットワーク機器を開発する際には、自分たちが「生きている」ことを示すために、自分たちの<IP、MAC>アドレス情報を定期的にブロードキャストする必要があります。ただし、あまり頻繁に送信しないでください。頻繁に送信することは、一部の種類のルーターではウイルスと見なされます。

6.ARP攻撃

前回の記事「IPプロトコル」では、IP攻撃について説明した後、よく耳にするARP攻撃について説明しました。

ARPプロトコルには大きな抜け穴があります。ネットワーク上のすべてのユーザーがルールに従っている場合、上記のプロセスに従ってARPを使用しても問題はありません。ただし、悪意のあるデバイスがARP要求パケットを受信した場合(ARP要求パケットはブロードキャスト形式で送信され、LAN上のすべてのホストで受信できます)、パケット内のIPアドレスがであるかどうかに関係なくARP応答パケットを生成します。それ自体と同じです。要求しているユーザーに伝えます。私のホストのMACアドレスは、要求した宛先IPアドレスと一致するMACアドレスです。一方、ARP要求を送信する送信元ホストにはフォールトトレランスおよび認証機能がないため(ARPプロトコルはこれらの機能を実装するメカニズムを提供しません)、このARP応答を簡単に信じて独自に追加します。 ARPキャッシュテーブル。この結果は想像できます。送信元ホストは、将来、宛先Pアドレスを含むデータパケットを悪意のあるホストに送信します。このようにして、私たちがよく耳にするARP攻撃の基本原則であるデータ盗聴を簡単に実装できます。

PC1がARPプロトコルを送信してPC2のMACアドレスを要求すると、PC3はブロードキャストされたため、ARP要求パケットも受信しました。PC3は自分自身に属していないブロードキャストパケットを受信し、誤った応答パケットで応答してPC1に通知しました。私はPC2です。このように、PC1は2つの応答パケット(正しいIP2-MAC2と偽のIP2-MAC3)を受信しますが、PC1はどちらが正しいかわからないため、PC1が判断を下し、判断後に到着するパケットはtrue、次に、誤った応答パケットを後で到着させる方法は?PC3はそのような応答パケットを継続的に送信でき、常にどの正しい応答パケットを上書きします。

次に、PC1はIP2-MAC3などのARPキャッシュエントリを作成します。その後、PC1がPC2に情報を送信すると、PC1はOSIモデルに従って、ネットワーク層でIP2のパケットヘッダーを使用してデータを上から下にカプセル化し、クエリを実行します。リンク層でARPキャッシュテーブルは、宛先MACがMAC3であるデータフレームをカプセル化し、スイッチに送信します。CAMテーブルのクエリによると、MAC3に対応するインターフェイスはPort3であることが判明したため、情報は次のようになります。 PC3に配信され、ARP攻撃が完了します。

ARP攻撃が深刻な場合、悪意のあるネットワークデバイスは、ネットワークのドアに送信されたすべてのブロードキャストARP要求パケットを読み取って、ネットワーク内のすべての<IP、MAC>アドレス情報を傍受し、複数のネットワークデバイスを監視する可能性があります。

 

予防策:

静的ARPキャッシュテーブルを使用してARP攻撃を防ぐことができますが、欠点は、ARPプロトコルの動的アドレス解決の原則に違反することです。

 

この記事が掲載されているアルバム、STM32F207ネットワーク開発を表示するにはクリックしてください

 

公式アカウントに注意を払い、できるだけ早く記事の更新を受け取ります

おすすめ

転載: blog.csdn.net/Firefly_cjd/article/details/110519311