ARPの仕組み

 IPアドレスは、あるネットワークに参加しているコンピュータに、グループ分けがし易いように人間が便宜上、勝手に設定するアドレスです。

 他のコンピュータから見れば、どのIPアドレスが振られたのか分かりません。つまり、通信したい相手のIPアドレスが分かっても、どのコンピュータにそのIPアドレスが割り当てられているのか分からないのです。

 例えば、コンピュータAがコンピュータEと通信する場合、コンピュータEのIPアドレスが分かっても、コンピュータEがどのコンピュータなのかは、分かりません。

そこで、コンピュータAは、ネットワーク上の全てのコンピュータに対して、

コンピュータEですか?

という問合せを行います。

これを、ブロードキャストと言います。

コンピュータB、コンピュータC、コンピュータDは、自分宛の問合せでは、ないので無視します。

コンピュータEは、自分宛の問合せなので、コンピュータAに対して返事を返します。

こうして、コンピュータAは、コンピュータEを見つけることができます。

 コンピュータAが行った全てのコンピュータに対する問合せ(ブロードキャスト)のことをARP要求と言います。また、コンピュータEがコンピュータAへ返事をしたことをARP応答と言います。

ARPヘッダ

ARPが、動作する階層は、IPと同じネットワーク層で動作します。RFC826 にて定義されています。

 ここでは、イーサネットの場合のARPヘッダを示します。この構造は、ARPだけでなく、後ほど紹介するRARPプロトコルでも、この構造のパケットを使います。

●ハードウェアタイプ(0x0001)
16bit幅の数値で、ネットワークの媒体の種類を表す。イーサネットは、「0x0001」になっている。

●プロトコル(0x0800)
 ARPプロトコルで取り扱う上位のプロトコルの種類を表す。TCP/IPプロトコルは、「0x0800」になっている。

●HLEN(0x06)
 HLEN(hardware address length」は、MACアドレスの長さを表します。MACアドレスは、6バイトなので、この値は「6」になっています。

●PLEN(0x04)
 PLEN(protocol address length)」は、IPアドレスの長さを表します。IPv4アドレスは、4バイトなので、このフィールドの値は「4」になっています。

●オペレーションコード(ARP/RARP)
ARPの動作の種類を表すためのコードが入る。

コード動作
1ARP要求
2ARP応答
3RARP要求
4RARP応答

●送信元MACアドレス
送信元のMACアドレスが入る。このフィールドに自分自身のMACアドレスを格納する。

●送信元IPアドレス
送信元のIPアドレスが入る。このフィールドに自分自身のIPアドレスを格納する。
※RARPの要求送信時には不明なので、「0」のままとなっている。

●宛先(目標)MACアドレス
宛先のMACアドレスが格納される。
※ARPの要求送信時には、不明なので「0」のままとなる。
※RARPで解決したいMACアドレス(自分のMACアドレス)が入る。

●宛先(目標)IPアドレス
宛先のIPアドレスが格納される。
※RARPの要求送信時には不明なので、「0」のままとなっている。

次の「ARP要求・ARP応答(その1)」では、ARP要求とARP応答について、解説していきます。

関連コンテンツ