arpテーブルの原理はわかりやすい。送信したい相手のIPアドレスに対応するMACアドレスを探すのである。テーブルに該当するIPアドレスがなかったらどうなるか?arpリクエストを送信して、その答えを待つ。先ほどL3通信といったが、arpキャッシュを参照するL3通信というのは、L3通信であっても同一ネットワーク内での通信に限られる。L3通信というのは、異なるネットワーク外への通信を含み、本来、それが目的の通信である。同一ネットワーク内の通信であれば、macアドレスだけでよいのである。
ルータはルーティングテーブルを見て、宛先IPアドレスがconnectedの経路であることを知ると、arpキャッシュを参照する。そして宛先macアドレスを知る。普通のルータであればここで話は終わる。ここから先はL3スイッチとか、ルータでもLAN側に複数ポートがあるようなものの話だ。
ブロードバンドルータでもそのようなものが多い、というかほとんどがそうであろう。この時には、出力ポートを選ぶのにMACアドレステーブルを使用する。MACアドレスとポートの対応表である。arpキャッシュの場合は見つからないときにはarp requestを送信したが、L2通信の場合は見つからないときはすべてのポートから送信する。これをフラッディングという。
MACアドレスを学習するのはフレームを受信したときで、そのときにそのポートにそのMACアドレスを持つ装置が接続していえることを学習するのである。