この記事でわかること
- MACアドレスとは何か、なぜネットワークに必要なのか
- 12桁の番号が「前半6桁(OUI)+後半6桁」に分かれている理由
- スイッチングハブがMACアドレスを自動で覚える「MAC学習」の流れ
- 宛先が不明なときにハブが取る「フラッディング」という動作
はじめに
これまでの連載で、スイッチングハブが「宛先の名前」を読み取って必要なポートにだけデータを送り出す仕組みを学びました。第14回では、その名前を運ぶ電気信号の正体と、行く手を阻む3つの障害を掘り下げました。
ここで一つ、未回収の疑問が残っています。スイッチングハブが読み取る「宛先の名前」とは、具体的に何なのか。
その正体が MACアドレス です。スマートフォン、パソコン、ゲーム機など、ネットワークに接続するすべての機器には例外なくこの番号が割り当てられています。MACアドレスがなければ、スイッチングハブはデータをどこへ届ければいいのか判断できません。
なぜ機器ごとに固有の番号が必要なのか
「固有の番号が必要」と言われても、ピンとこないかもしれません。日常の例で考えてみましょう。
あなたが宅配便でプレゼントを送るとき、箱に宛先の住所を書きますよね。住所が書かれていなければ、配送業者はどの家に届ければいいのか判断できません。同じ番地の家が2軒あっても、同様に困ります。
ネットワークも同じです。スイッチングハブは何台もの機器が繋がる「集線装置」ですが、届いたデータを「どのケーブルの先にいる機器に渡すか」を決めるために、各機器を区別できる番号が必要です。しかもその番号は、ネットワーク内で絶対に重複してはなりません。「同じ住所の家が2軒」という状況が起きた瞬間、通信は判断不能に陥ります。
この「機器を一意に識別するための番号」として設計されたのが、MACアドレスです。
MACアドレスとは
MACアドレスは Media Access Control Address(メディア・アクセス・コントロール・アドレス) の略称です。英単語を一つずつ確認します。
- Media(メディア):情報を伝える媒介。ここでは「LANケーブルや電波などの通信回線」を指します
- Access(アクセス):近づく、接続する、利用する
- Control(コントロール):管理する、制御する
- Address(アドレス):住所、宛先
繋げると「通信回線(Media)へのアクセス(Access)を制御(Control)するための識別番号(Address)」という意味になります。
MACアドレスは、機器を製造するメーカーが工場で部品を作る段階でチップの中に直接書き込みます。機器の「住民票の番号」あるいは「製品に刻印された製造シリアル」のようなものです。ハードウェアに書き込まれた元の値はユーザーが変更することはできませんが、OSの設定によって一時的に別の値を名乗る(スプーフィング)ことは技術的には可能です。通常のネットワーク利用でユーザーが意識する必要はありません。
世界中のすべてのネットワーク機器に重複なく番号が割り当てられているからこそ、スイッチングハブは「この番号の機器はあのポートにいる」と正確に判断できます。
MACアドレスの見た目と12桁の構造
MACアドレスは「16進数(じゅうろくしんすう)」という形式で表されます。
00:1A:2B:3C:4D:5E
2桁ずつの塊がコロン(:)またはハイフン(-)で6つに区切られた、合計12桁の文字列です。
💡 なぜ「16進数」なのか?
コンピューターは内部で0と1のビット列しか扱えません(第14回参照)。この0と1を8桁まとめたもの(1バイト)を10進数で書くと最大「255」になりますが、16進数で書くと必ず「FF」の2桁で収まります。桁数が一定になると、人間にとって区切りやすく、コンピューターにとっても処理しやすくなります。MACアドレスが16進数で表示されるのはこのためです。
この12桁には、厳密な役割分担があります。
前半6桁:メーカーを識別するOUI
最初の6桁(例の 00:1A:2B 部分)は OUI(Organizationally Unique Identifier:オーユーアイ) と呼ばれるメーカー識別番号です。Organizationally は「組織的に」、Unique は「唯一の」、Identifier は「識別子」を意味します。
世界中のメーカーごとに異なるOUIが、IEEE(アイトリプルイー)——電気・電子工学の国際標準化団体——から割り当てられています。前半6桁を見れば、その部品がどのメーカーで作られたか特定できます。
後半6桁:メーカーが振るシリアル番号
後半の6桁(例の 3C:4D:5E 部分)は、メーカーが自社の製品に順番に割り当てる製造番号です。OUIが異なれば後半が同じ数字でも機器全体としてのMACアドレスは別物になるため、理論上は世界中の機器で番号が重複しません。
スイッチングハブがMACアドレスを覚える仕組み
スイッチングハブは電源を入れた直後、どのポート(LANケーブルの差し込み口)にどのMACアドレスの機器が繋がっているかをまったく把握していません。内部の対応表(MACアドレステーブル)は完全に空の状態です。
ここから、通信が発生するたびに自動で知識を蓄えていきます。この動作を MACアドレス学習 と呼びます。
学習の流れ(具体例):
ポート1番に「Aさん」、ポート2番に「Bさん」、ポート3番に「Cさん」の3台が繋がっているとします。最初はテーブルが空なので、スイッチングハブは誰がどのポートにいるか知りません。
- AさんがBさんへデータを送り出します
- データはケーブルを通ってポート1番からスイッチングハブに届きます
- スイッチングハブはデータに書かれた 送信元のMACアドレス(Aさん) を読み取ります
- 「ポート1番にAさんがいる」という事実をMACアドレステーブルに書き込みます
これがMACアドレス学習の一回分です。機器が通信を発信するたびに、スイッチングハブはこの動作を繰り返して自動でテーブルを埋めていきます。人間が手作業で設定しなくても機器を繋ぐだけで通信が動き出すのは、この仕組みのおかげです。
宛先がわかっているとき:ピンポイント転送
MACアドレステーブルに宛先の情報が揃ったあとは、転送がピンポイントになります。
先ほどの例で、AさんがCさんにデータを送りたいとします。データには「宛先:CさんのMACアドレス」が書き込まれています。データを受け取ったスイッチングハブはテーブルを検索し、「Cさんは3番ポート」という記録を見つけます。すると他のポートには一切データを流さず、ポート3番のLANケーブルだけにデータを送り出します。
BさんにはAさんとCさんのやり取りがまったく届かないため、ネットワーク全体の回線が無用に混雑しません。「必要なデータを、必要な相手にだけ」という動作が、こうして成り立っています。
宛先が不明なとき:フラッディング
テーブルに宛先のMACアドレスが登録されていない場合、スイッチングハブは接続されているすべてのポートに同じデータを送り出します。この動作を フラッディング(Flooding:溢れさせること) と呼びます。
フラッディングされたデータを受け取った各機器は、「自分宛てではない」と判断すれば静かに捨てます。本来の宛先だった機器だけが返事を返し、スイッチングハブはその返事の送信元MACアドレスを見て「あのポートにあの機器がいた」と学習します。次の通信からはピンポイント転送に切り替わります。
フラッディングは一見非効率に見えますが、「知らない相手を探す」ための合理的な初回動作です。学習が完了してしまえば、その後は発生しません。
自分のMACアドレスを確認する方法
実際に自分の機器のMACアドレスを確認してみましょう。
| OS | 確認方法 |
|---|---|
| Windows | コマンドプロンプトで ipconfig /all を実行。「物理アドレス」として表示されます |
| macOS | ターミナルで ifconfig en0 を実行。ether の行に表示されます |
| iPhone | 設定 → 一般 → VPNとデバイス管理 → MACアドレス |
| Android | 設定 → 端末情報 → MACアドレス(機種によって場所が異なります) |
自分の機器で確認すると、「前半6桁がメーカーを示す」という説明が一気に実感できます。前半6桁をインターネットで検索すると、製造メーカーが特定できます。
まとめ
- MACアドレスとは、ネットワーク機器を一意に識別するための12桁の識別番号。Media Access Control Addressの略
- 前半6桁(OUI)はIEEEがメーカーごとに割り当てるメーカー識別番号。後半6桁はメーカーが製品ごとに振るシリアル番号
- 世界中の機器で重複しない仕組みのため、スイッチングハブは番号だけで「どのポートに誰がいるか」を正確に判断できる
- MACアドレス学習:通信のたびに送信元MACアドレスとポートの対応をテーブルに自動で記録する動作
- フラッディング:宛先が不明なとき全ポートへ送り出して相手を探す動作。学習が完了すれば不要になる
物理的なハードウェアに刻まれたMACアドレスが正しく機能しているからこそ、私たちのパソコンやスマートフォンは迷子にならずにデータをやり取りできています。