ARP
ARPとは
ARP(Address Resolution Protocol)は、IPアドレスから相手のMACアドレスを調べるプロトコルです。[[IPアドレスとサブネット]] が「どの機器に届けたいか」を表す論理的な住所なのに対し、[[イーサネット]] のフレームを実際に届けるにはハードウェア固有のMACアドレスが必要です。この2つの住所を対応づけるのがARPの役割です。
[[OSI参照モデル]] でいうと、ネットワーク層(レイヤ3)のIPアドレスとデータリンク層(レイヤ2)のMACアドレスの橋渡しにあたります。
動作の流れ
同じLAN内の 192.168.1.20 へ通信したいとき:
- 送信元が「
192.168.1.20を使っているのは誰?」というARP要求をLAN全体へブロードキャストする - 該当するIPアドレスを持つ機器だけが「私です。MACアドレスは XX:XX:… です」とARP応答を送信元へ直接(ユニキャストで)返す
- 送信元は得られた対応をARPテーブル(キャッシュ)に一定時間保存し、次回以降は問い合わせを省略する
なお、宛先が別のネットワークの場合、ARPで調べるのは宛先そのものではなくデフォルトゲートウェイのMACアドレスです。フレームはまずルーターへ渡され、その先は [[ルーティング]] が担当します。
ARPテーブルの確認
ARPテーブルは Windows / macOS / Linux のいずれでも arp -a で確認できます。
arp -a
# ? (192.168.1.1) at a4:12:xx:xx:xx:xx on en0 ifscope [ethernet]
# ? (192.168.1.20) at 08:5b:xx:xx:xx:xx on en0 ifscope [ethernet]
「IPアドレスは合っているのに通信できない」トラブルで、古い対応が残ったARPキャッシュが原因になることがあり、切り分けの手がかりになります。
初学者向けポイント
- ARPが働くのは同じLANの中だけ。ブロードキャストはルーターを越えないため、インターネットの向こう側のMACアドレスを調べることはない
- [[IPv6]] にはARPがなく、ICMPv6の近隣探索(NDP)が同じ役割を担う
- 偽のARP応答で通信を横取りするARPスプーフィングという攻撃がある。同一LAN内に信頼できない端末がいる環境(公衆Wi-Fiなど)が危険とされる理由の1つ
関連技術とのつながり
- [[IPアドレスとサブネット]] — ARPはIPアドレスを入力としてMACアドレスを得る
- [[イーサネット]] — 解決したMACアドレスはイーサネットフレームの宛先になる
- [[LANとWAN]] — ARPのブロードキャストが届く範囲は同一LAN内に限られる
- [[OSI参照モデル]] — レイヤ3とレイヤ2の間をつなぐ位置づけのプロトコル
Q: ARPの役割として正しいのはどれ?
- [x] IPアドレスから相手のMACアドレスを調べる
- [ ] ドメイン名からIPアドレスを調べる
- [ ] MACアドレスを機器に自動で割り当てる
解説: ARPはネットワーク層のIPアドレスとデータリンク層のMACアドレスを対応づけるプロトコルです。ドメイン名からIPアドレスを調べるのはDNSです。
Q: ARP要求の送り方として正しいのはどれ?
- [ ] 宛先の機器だけへユニキャストで送る
- [x] LAN全体へブロードキャストし、該当する機器だけが応答する
- [ ] ルーターを経由してインターネット全体へ問い合わせる
解説: 相手のMACアドレスがまだ分からないため、要求はLAN全体へブロードキャストします。応答は該当機器からユニキャストで返ります。
Q: 別のネットワーク宛に通信するとき、ARPで調べるMACアドレスはどれ?
- [ ] 宛先ホストのMACアドレス
- [x] デフォルトゲートウェイ(ルーター)のMACアドレス
- [ ] DNSサーバーのMACアドレス
解説: ブロードキャストはルーターを越えないため、ネットワーク外宛のフレームはまずデフォルトゲートウェイへ渡します。そのためARPで調べるのはルーターのMACアドレスです。