「IPで通信するのに、なんでMACアドレスが必要なの?」。ここを埋めてくれるのがARPでした。
IPだけでは届かない
通信の宛先はIPアドレスで指定しますが、同じネットワーク内で実際にフレームを届けるにはMACアドレス(機器固有の物理アドレス)が要ります。IPは「住所」、MACは「その家の表札」のようなイメージです。IPは分かってもMACを知らないと、L2では渡せません。
ARPが橋渡しをする
そこでARP(Address Resolution Protocol)が、「このIPの人、MACアドレス教えて!」とネットワーク全体に叫びます(ブロードキャスト)。該当するIPを持つ機器だけが「それ私です、MACはこれです」と返事します(ユニキャスト)。
ARPリクエスト(全員へ): 192.168.10.1 のMAC教えて
ARPリプライ(本人だけ): 192.168.10.1 は AA:BB:CC:DD:EE:FF です
一度聞いたら「ARPテーブル」に一定時間キャッシュされ、毎回聞かずに済みます。
実機で見てみる
arp -a
でPCが覚えているIPとMACの対応表が見られます。ゲートウェイのMACがちゃんと載っていれば、少なくともそこまではやり取りできている、という切り分けにも使えます。
トラブルの元にもなる
ARPは便利ですが、同じIPを2台が持ってしまう「IPアドレス重複」が起きると、ARPの返事が混線して通信が不安定になります。「たまに繋がってたまに切れる」ときは、ARPテーブルを見て、ゲートウェイのMACが時々変わっていないか確認する、という手が使えると先輩に教わりました。
まとめ
- 通信の最終的な宛先指定はIP、実際の配送はMAC
- ARPはIP→MACを解決するための問い合わせ
arp -aで対応表を確認できる
裏方だけど、これが動いていないと同じネットワーク内すら通信できない、大事な仕組みでした。