ARP(Address Resolution Protocol)は、パソコンやネットワーク機器などがイーサネットフレームを送信する際、宛先IPアドレスを基に、その宛先のMACアドレスを調べるためのプロトコルだ。

 IPアドレスが「192.168.1.1」のサーバーXから、同じサブネットにつながるIPアドレス「192.168.1.2」のサーバーYに通信を試みる場合を考えてみよう()。

図●ARPの概要
図●ARPの概要
ARPを使って、宛先IPアドレス(サーバーYのIPアドレス)から、宛先MACアドレス(サーバーYのMACアドレス)を調べる。
[画像のクリックで拡大表示]

 IPパケットはイーサネットフレームに乗って運ばれるので、サーバーXは宛先のサーバーYのMACアドレスを調べる必要がある。サーバーXは、サーバーYのIPアドレス「192.168.1.2」を自分のルーティングテーブルで参照して探そうとする。すると、「最初にどこにIPパケットを届ければよいか」がわかる。この場合、送信元と宛先が同じサブネット内にいるため、サーバーXは直接サーバーYと通信できる。

ブロードキャストで相手を探す

 次にサーバーXはサーバーYのIPアドレスに対応するMACアドレスを見つけるため、自身のARPテーブルを検索する。ARPテーブルは、IPアドレスとMACアドレスを関連付けて保存しておく一覧表だ。目当てのMACアドレスがARPテーブルにない場合、ARPの出番となる。LAN内にARP要求パケットをブロードキャストして問い合わせるのだ。

 ARP要求を受け取ったサーバーYは、ARP応答パケットでMACアドレスの情報をサーバーXに返す。ARP応答はユニキャストの通信だ。サーバーXはARP応答の送信元MACアドレスを読み取って、そのアドレス宛てにイーサネットフレームを送る。

 以上のやり取りは宛先と送信元が同じサブネット内にいる場合だ。別のサブネットに接続している場合は、やり取りが異なってくる。例えば送信元と宛先の間にレイヤー3(L3)スイッチがあり、通信を仲介するようなケースだ。

 この場合、送信元(サーバーX)が自身のルーティングテーブルで最終的な宛先(サーバーZ)のIPアドレスを照合すると、最初の宛先はL3スイッチだとわかる。次にARPテーブルでL3スイッチのMACアドレスを検索し、見つからない場合はARP要求でMACアドレスを調べる。その後、L3スイッチのMACアドレスにイーサネットフレームを送る。イーサネットフレームを受け取ったL3スイッチは、送信元のサーバーXと同様にARPを使い、「次に送る先」のMACアドレスを調べる。これをサーバーZに到達するまで繰り返す。