ARPとは
ARPは、IPv4の同一LAN内で、IPアドレスに対応するMACアドレスを調べるプロトコルです。正式名称はAddress Resolution Protocol(アドレス・リゾリューション・プロトコル)で、アープと読みます。
端末がIPv4パケットをEthernetへ載せるには、同じリンク上の次ホップのMACアドレスが必要です。対応を知らなければARP 要求をリンクへブロードキャストし、対象IPv4アドレスを持つ機器がARP 応答で自分のMACアドレスを返します。
遠隔ネットワークのサーバーへ送るときにARPで調べるのは遠隔サーバーのMACではなく、同じLAN上にいるデフォルトゲートウェイのMACです。MACヘッダーはルーターを越えるたび、次のリンク用に作り直されます。

宛先が同一プレフィックスかを判断してから、解決する次ホップを決める
- Route次ホップIPを決定
宛先プレフィックスが直結なら宛先自身、そうでなければルート表のゲートウェイを選ぶ
- Lookupキャッシュを確認
対象次ホップIPに対応する利用可能なMACがあれば、直ちにフレームを作る
- 要求リンクへ質問を放送
送信者IP・MACと対象IPを入れたARP 要求をブロードキャストする
- 応答対象がMACを応答
対象IPを持つ端末が自分の対応をARP 応答で送信元へ返す
- Cache対応を期限付き保存
学習したIP・MAC対応と状態を隣接相手キャッシュへ保持し、再利用する
- FrameEthernetで送信
次ホップMACを宛先にしたフレームへIPv4パケットを収め、スイッチへ渡す
要求はブロードキャスト、応答は通常ユニキャストで返す
送信端末は対象MACを知らないため、ARP 要求のEthernet宛先をブロードキャストにします。同じブロードキャストドメインの全端末がフレームを受け取りますが、対象IPを持つ端末が内容を確認して応答します。
ARP 応答は要求に含まれた送信元MACへ通常ユニキャストで返せます。L2スイッチはフレーム送信元MACを学習して転送しますが、IPとMACの意味対応を決めるのは端末のARP処理です。スイッチのMACテーブルと端末のARPキャッシュを混同しません。
キャッシュは通信量を減らすが、永続的な正解ではない
解決した対応は期限付きで保存され、後続パケットごとにブロードキャストせず送れます。一定時間使わない、リンクが変わる、到達性が失われるなどで再確認・削除されます。固定ARPエントリーを設定できるOSもあります。
端末交換、仮想IPの引継ぎ、冗長ルーター切替では、同じIPのMACが変わります。古いキャッシュが残ると一時的に旧機器へ送られます。Announcementで更新を促せますが、すべての機器が即時更新する保証はなく、期限と切替手順を設計します。
ARP ProbeとAnnouncementで、IPv4アドレス競合を検出・通知する
新しいIPv4アドレスを使う前に、送信元IPをゼロにしたARP Probeで「この対象IPを誰か使っているか」を質問できます。応答や同じIPを名乗るARPを受けたら競合として扱い、別アドレスを選ぶか管理者へ通知します。
利用開始時のARP Announcementは、送信元・対象IPへ自分のIPを入れた要求で「このIPを使い始めた」と周囲へ知らせます。一般にgratuitous ARPと呼ばれる複数形式があります。競合検査とキャッシュ更新は目的が近くても、パケット項目と実行時点を分けて確認します。
ARPには認証がなく、偽の対応をキャッシュへ入れられる
ARPは信頼された同一リンクを前提にした古い仕組みで、応答の署名や送信者認証がありません。攻撃端末が「ゲートウェイIPは自分のMAC」と偽れば、被害端末の通信を攻撃端末へ向けるARPなりすまし・ARP poisoningが可能です。
管理スイッチのDynamic ARP Inspectionは、DHCP snoopingのIP・MAC・ポート対応や静的バインディングと照らして不正ARPを落とします。無線利用者分離、VLAN、ポートセキュリティ、HTTPS・SSHなど上位暗号化も組み合わせます。検査データが誤っていれば正当通信を遮断するため運用が必要です。
IPv6はARPではなく、ICMPv6のNeighbor Discoveryを使う
IPv6はARPを使わず、Neighbor Discovery ProtocolのNeighbor Solicitation・Advertisementでリンク層アドレスを解決します。ブロードキャストではなく対象に対応するsolicited-nodeマルチキャストを使います。
デュアルスタック端末の隣接相手表にIPv4とIPv6が並んでも、IPv4項目はARP、IPv6項目はNDPから得た別の状態です。ARPだけを調べてIPv6通信障害を結論付けません。
仕様の確認資料:RFC 826「An Ethernet Address Resolution Protocol」、RFC 5227「IPv4 Address Conflict Detection」