このブログを検索

2010/03/18

MACアドレステーブルとarpテーブル again

ぱっと聞くと両者は同じように思えるが別物である。利用者にはあまり意識することのないテーブルであり、とくにmac addressテーブルを参照することはほとんどないだろう。この二つのテーブルをそれぞれ一言で説明すると、arpテーブルとは、macアドレスとipアドレスの対応表、mac addressテーブルとは、macアドレスとポートの対応表である。arpテーブルはL3通信で使用され、mac addressテーブルはL2通信で使用される。L3通信というのはL2通信を含むので、そういう意味ではL3通信をおこなう際には両方のテーブルを使用すると言うことができる。

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アドレスを持つ装置が接続していえることを学習するのである。