スイッチのMAC学習の可視化 — フラッディングとユニキャスト転送

L2スイッチは、最初は「どのポートの先にどの機器がいるか」を知りません。でも通信するうちに、フレームの送信元MACアドレスと受信ポートMACアドレステーブルに記録(学習)していきます。宛先が未知なら全ポートへ転送(フラッディング)/既知なら該当ポートだけへ転送(ユニキャスト)。「進む」を押して、テーブルが埋まっていく様子と転送の違いを確かめてください。

🔀 L2スイッチ(MACアドレステーブルで転送先を決める) P1 P2 P3 P4 💻 PC-AA1-A1 💻 PC-BB2-B2 💻 PC-CC3-C3 💻 PC-DD4-D4

🔵 受信(送信元)/🟢 ユニキャスト転送/🟠 フラッディング(全ポート)

MACアドレステーブル

いま何が起きているか

スイッチの「MAC学習」とは

L2スイッチの賢さの正体が、このMAC学習(アドレスラーニング)です。スイッチはフレームが届くたびに、「送信元MACアドレス」と「そのフレームが入ってきたポート番号」をセットで MACアドレステーブル に記録します。こうして「このMACの機器は、このポートの先にいる」という地図を、通信しながら自動で作り上げます。エントリには寿命(エージングタイム)があり、しばらく通信が無いと消えます。

宛先で処理が変わる — フラッディング/ユニキャスト/ブロードキャスト

フレームを受け取ったスイッチは、宛先MACアドレスをテーブルで探して、次の3通りに処理を分けます。

宛先の状況処理どこへ送る?
テーブルにある(既知)ユニキャスト転送該当ポートだけ
テーブルにない(未知)フラッディング受信ポート以外の全ポート
ブロードキャスト(ff:ff:ff:ff:ff:ff)常にフラッディング受信ポート以外の全ポート

ポイントは、最初の1回は宛先が未知なので必ずフラッディングされること。でも、相手が一度でも返信すれば、その送信元MACが学習されるので、2回目以降は該当ポートだけへのユニキャストになります。上の可視化の②〜③がまさにこれです。

ハブとの違い — 「賢く送る」か「全部にばらまく」か

スイッチが登場する前のハブ(リピータハブ)は、届いた信号を常に全ポートへそのまま流すだけの機器でした(第1層)。スイッチ(第2層)は、MACアドレスを見て必要なポートだけに送るため、無駄な通信が減り、衝突(コリジョン)も避けられます。「ハブは考えずにばらまく、スイッチはMACを見て賢く送る」と覚えましょう。

スイッチ(L2)とルーター(L3)の違い

転送の判断に使うアドレスが違います。スイッチはMACアドレス(第2層)で同じネットワーク内を転送し、ルーターはIPアドレス(第3層)でネットワークをまたいで転送します。両者の関係や「宛先MACが1ホップごとに書き換わる」流れは、IPアドレスとMACアドレスの可視化 と合わせて見ると立体的に理解できます。

基本情報技術者試験ではこう出る

「L2スイッチが宛先を決めるのに使うアドレスは(→MACアドレス)」「MACアドレステーブルに無い宛先のフレームはどう扱われるか(→全ポートへ転送=フラッディング)」「ブロードキャストフレームの扱い」「スイッチとハブの違い」が定番です。スイッチは第2層、ハブ・リピータは第1層、ルータは第3層、という機器と層の対応もよく問われます(OSI参照モデルの可視化で整理できます)。

よくある質問

Q. フラッディングとブロードキャストは同じ?
A. 似ていますが別物です。ブロードキャストは「宛先が“全員宛”のフレーム」そのもの。フラッディングは「スイッチが(宛先が未知などの理由で)全ポートへ転送する動作」です。ブロードキャストは常にフラッディングされますが、ユニキャストでも宛先が未知ならフラッディングされます。

Q. なぜ受信したポートには送り返さないの?
A. 送信元はそのポートの先にいるので、送り返すと自分に戻ってくるだけで無意味だからです(かえって混乱のもと)。だから転送は「受信ポート以外」が基本です。

Q. テーブルがいっぱいになったら?
A. 一定時間使われなかったエントリは自動で消えます(エージング)。なお、大量の偽MACでテーブルを溢れさせ、意図的にフラッディングを起こして盗聴する「MACフラッディング攻撃」という手口もあり、対策(ポートセキュリティ)が取られます。

関連:IPアドレスとMACアドレスの可視化ルーティング構築パズルOSI参照モデルの可視化可視化一覧