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