ARP

読み:あーぷ / 英語表記:Address Resolution Protocol

IPv4の通信で、同じリンク上の次の配送先のIPアドレスに対応するMACアドレスを求めるプロトコルである。通常のアドレス解決では要求をブロードキャストし、応答をユニキャストで返す。別のネットワークへ送る場合は中継するルータのMACアドレスを調べる。

イマシルちゃんの解説

同じLANの機器へIPv4でデータを送りたいとするね。
イーサネットで届けるには、IPアドレスだけでなく、LAN内の届け先を示すMACアドレスも必要になるんだ。
この二つのアドレスの対応を調べるプロトコルがARPだよ。

対応が分からないときは、LANのみんなに「このIPアドレスの機器はいますか? MACアドレスを教えて!」と問い合わせるの。
そのIPアドレスを使う機器から返事が来れば、教わったMACアドレスを宛先にしてデータを送れるよ。
調べた対応は記録しておくので、毎回みんなに聞き直さなくても通信できるんだ。

より深い解説

定義

ARP(Address Resolution Protocol)は、RFC 826で定められた、IPv4アドレスに対応するMACアドレスを求める(アドレス解決する)プロトコルである。イーサネットのフレームを送るには宛先のMACアドレスが必要なため、IPv4でLAN上の機器と通信する前に使われる。

ARPのメッセージは、IPパケットに入れずに、イーサネットのフレームで直接運ばれる(タイプ値0x0806)。

動作

  1. 送信元は、宛先IPアドレスを入れたARP要求(ARPリクエスト)を、ブロードキャスト(宛先MACアドレス FF-FF-FF-FF-FF-FF)で送る
  2. 同じネットワークのすべての機器が受け取るが、自分のIPアドレスが書かれた機器だけが応答する
  3. 該当する機器は、自分のMACアドレスを入れたARP応答(ARPリプライ)を、要求の送信元にユニキャストで返す
  4. 送信元は、得られた対応をARPテーブル(ARPキャッシュ)に一定時間保存し、次からは問い合わせずに使う

メッセージの中の四つのアドレス

Ethernet上でIPv4のアドレスを解決する場合、ARPメッセージには次の四つの欄がある。「プロトコルアドレス」はIPv4アドレス、「ハードウェアアドレス」はMACアドレスを指す。

略記欄の意味通常の要求で入れる情報
SHA送信元ハードウェアアドレス問い合わせる端末自身のMACアドレス
SPA送信元プロトコルアドレス問い合わせる端末自身のIPv4アドレス
THA宛先ハードウェアアドレス調査中なので未確定。一般に0を設定する
TPA宛先プロトコルアドレスMACアドレスを調べたい相手のIPv4アドレス

例えば端末Aが192.0.2.20の機器Bを探す場合、TPAへ192.0.2.20を入れる。要求をLANへ配るための宛先FF-FF-FF-FF-FF-FFは、外側のEthernetヘッダーの値である。ARPメッセージ内のTHAと混同しない。

Bが返すARP応答では、SPAがBのIPv4アドレス、SHAがBのMACアドレスになる。Aはこの二つの対応を学習する。要求でも送信元の二つの欄は使われており、受信機器はその対応を既存のキャッシュへ反映したり、自分宛ての要求なら追加したりする。対応の学習は応答だけに限られない。

別のネットワークの宛先の場合

宛先が別のネットワークにある場合、送信元は宛先そのもののMACアドレスではなく、デフォルトゲートウェイ(ルータ)のMACアドレスをARPで求める。ARPの問い合わせはルータを越えないため、MACアドレスを解決できるのは同じネットワークの中だけである。

ARPの応用

名前内容
GARP(Gratuitous ARP)自分のIPアドレスを宛先にしたARPを送る。IPアドレスの重複の検出や、周りの機器のARPテーブルの更新(冗長化構成の切り替え時など)に使う
プロキシARPルータが、別のネットワークにある機器の代わりに、自分のMACアドレスでARP応答を返す

セキュリティ上の問題

ARPには認証の仕組みがなく、要求していないARP応答も受け入れてしまう機器が多い。この性質を悪用し、偽のARP応答を送って他人のIPアドレスに自分のMACアドレスを結び付けさせ、通信を横取りする攻撃をARPスプーフィング(ARPポイズニング)という。中間者攻撃の手段として使われる。

偽装の中心は、SPAへなりすます相手のIPアドレスを、SHAへ攻撃者のMACアドレスを入れることである。要求にも送信元の対応が含まれるため、偽のARP要求によってキャッシュが更新される場合もある。端末側にゲートウェイの偽の対応を、ゲートウェイ側に端末の偽の対応を覚えさせると、往復の通信が攻撃者へ向かう。受け入れ条件は機器の実装や検査機能によって異なる。

対策として、スイッチでARPのやり取りを検査する機能(ダイナミックARPインスペクション)や、重要な機器のARPテーブルを静的に設定する方法がある。

関連するプロトコルとの比較

プロトコル求めるもの手がかり
ARPMACアドレスIPアドレス
RARPIPアドレスMACアドレス
DHCPIPアドレスなどの設定情報MACアドレス(クライアントの識別)
NDP(IPv6)MACアドレスIPv6アドレス

IPv6には、ARPというプロトコルはない。IPv6でのアドレス解決は、ICMPv6の近隣要請(NS)と近隣広告(NA)のメッセージを使う近隣探索プロトコル(NDP)が行う。また、IPv6にはブロードキャストがないため、近隣要請は要請ノードマルチキャストアドレスに送られ、関係のない機器の負荷を減らしている。

参考資料

実際の試験ではここに出る!全20問

ネットワークスペシャリスト

午後Ⅱ
午前Ⅱ
午後Ⅰ

テクニカルエンジニア(ネットワーク)

午前

この用語が出てくる記事

↑