はじめに
前回の記事では、MACフレームのフレーム形式を紹介しました。各イーサネットフレームには、48ビットの送信元物理アドレスと宛先物理アドレスが含まれています。送信元アドレスは理解しやすく、アドレスはハードウェアから直接読み取ることができます。ただし、ネットワークノードの場合は、フレームの宛先物理アドレスとは何ですか?この記事では、この質問に答えるARPプロトコルについて学びます。
ARPプロトコルは主に、ネットワーク層プロトコルアドレス(たとえば、IPアドレス)を物理アドレスに解決する作業を完了するために使用されます。
ネットワーク層プロトコルのアドレスを物理アドレスに変換する必要があるのはなぜですか?
物理層の場合、彼は48ビットの物理アドレスしか処理できず、ネットワーク層プロトコルは多くの場合、独自のプロトコルでプロトコルアドレスが定義されており、これらのプロトコルのアドレスは異なることがよくあります。たとえば、IPアドレスの長さは32ビットです。 CHAOSアドレスの長さは16ビットであり、Xerox PUPアドレスの長さは8ビットです。
逆に、ARPプロトコルの存在も必要です。物理層がこれらのプロトコルを同時にサポートしたい場合、彼はこれらのプロトコルの実装に依存せず、独自のアドレス形式を定義して、ネットワーク層プロトコルのアドレスを物理アドレスに変換するこの方法は、ARPプロトコルの機能です。
明確にするために、以下の説明ではネットワーク層プロトコルをIPとして説明する傾向があります。
ARPパケット形式
ARPプロトコルのパケット構造は比較的単純です。例を直接見てみましょう。この例を使用して、各フィールドの意味を解析します。
まず、ARPパケットのar $ opフィールドの可能な値が2つのREQUESTとREPLYであることに気付きました。つまり、ARPプロトコルのパケットは、大きく分けて2種類ありますので、1つずつ見ていきましょう。
リクエスト
このパッケージに対応するバイナリデータは、
00 01 08 00 06 04 00 01 dc a3 33 c4 1e 5a c0 a8
01 01 00 00 00 00 00 00 c0 a8 01 65です。
- まず、Wiresharkによってキャプチャされたこのパケットには実際に9つのフィールドがあることがわかります。これらのフィールドは、上の図で示したARPパケット構造と完全に一致し、1つずつ対応しています。
- ハードウェアタイプ:Enternet(1)このフィールドはar $ hdrに対応し、現在のハードウェアアドレスタイプがイーサネット物理アドレスタイプであることを示します。
- プロトコルタイプ:IPv4(0x0800)このフィールドはar $ proに対応し、ネットワーク層プロトコルがIPプロトコルであることを示します。つまり、ARP要求パケットはIPアドレスを物理アドレスに解決する作業を完了することを意味します。
- ハードウェアサイズ:6このフィールドは、物理アドレスの長さを示すar $ hlnに対応します。ここで、6の単位はビットであり、注意が必要なバイトです。
- プロトコルサイズ:4このフィールドは、ar $ plnに対応し、ネットワーク層プロトコルの長さを示します。ここで、4の単位はビットであり、注意が必要なバイトです。
- Opcode:request(1)このフィールドはar $ opに対応し、現在のARPパケットのタイプを示します。ここでは、このARPパケットは要求パケットです。
- Sender MAC Address:このフィールドはar $ shaに対応し、このARP要求パケットを送信したネットワークノードの物理アドレスを示します。
- 送信者IPアドレス:このフィールドはar $ spaに対応し、このARP要求パケットを送信したネットワークノードのネットワークレイヤーアドレスを示します。ここで、ネットワークレイヤープロトコルはIPプロトコルである必要があるため、ここにIPアドレスがあります。当然、異なるネットワークレイヤープロトコルARPプロトコルが実装されているため、このフィールドの長さと値は異なります。
- ターゲットMACアドレス:このフィールドはar $ thaに対応します。このARPパケットが要求パケットであり、現在のネットワークノードが宛先アドレスの物理アドレスを認識していないため、ここにすべての0
を入力して場所を占有します。10 。ターゲットIPアドレス:このフィールドはar $ tpaに対応し、IPアドレスを物理層アドレスに解決することを示します。
要約:
- このARP要求パケットは、IPアドレス「192.168.1.101」に対応する物理アドレスを解決したい
- arは plnの必要性について説明します。ARPプロトコルは、ネットワーク層プロトコルアドレスを物理層アドレスに解決する機能を完了するために使用されます。前述のように、異なるネットワーク層プロトコルのアドレス長は異なるため、住所の長さを示すには、これらの2つのフィールドが必要です。この方法でのみ、受信者がこのARP要求を受信すると、正しく解析できます。
- 多くの場合、ARP要求はブロードキャストの形式で送信されます。このARP要求を送信するとき、送信ノードは受信者の物理層アドレスを認識しないためです。
応答
このパッケージに対応するバイナリデータは、
00 01 08 00 06 04 00 02 98 fa 9b 17 a8 f8 c0 a8
01 65 dc a3 33 c4 1e 5a c0 a8 01 01
- ARP要求を受信した後、受信者はこのARP要求のネットワークレイヤーアドレスを独自のネットワークアドレスと比較します。それらが一貫している場合は、物理層アドレスを使用して、この要求に応答するARP応答パケットを作成します。
- ここでは、送信者の物理層アドレスが受信したARP要求パケットに含まれているため、この応答をブロードキャストの形式で送信する必要がなくなり、応答をネットワークノードに直接送信できます。
終わり!