| この記事の要点 |
|
概要
MAC アドレス (Media Access Control address) は、ネットワークインターフェース (NIC) を一意に識別するためのハードウェア寄りの識別子です。OSI 参照モデルのデータリンク層 (L2) で使われ、同一ネットワークセグメント内でフレームを「どの機器宛に送るか」を決めるのに用いられます。IP アドレスが論理的・経路に応じて変わりうるのに対し、MAC アドレスは原則として NIC に固定的に焼き込まれています。親項目の MACアドレス、および IP との対応を扱う ARP も併せて参照してください。
仕組み
標準的な MAC アドレス (EUI-48) は 48 ビット (6 バイト) で構成され、大きく前半と後半に分かれます。
- 前半 24bit = OUI (Organizationally Unique Identifier): ベンダ (NIC の製造元) を識別する番号で、IEEE が各メーカーに割り当てる。先頭 3 バイトを見ればおおよその製造元が分かる。
- 後半 24bit = NIC 固有番号: 各ベンダが自社の OUI の範囲内で、個々の NIC に重複しないよう割り振るシリアル部分。
さらに、先頭バイトの下位 2 ビットには特別な意味があります。
- I/G ビット (最下位ビット): 0 ならユニキャスト (個別の 1 台宛)、1 ならマルチキャスト/ブロードキャスト (グループ宛)。全ビットが 1 の
FF:FF:FF:FF:FF:FFはブロードキャストで、セグメント内全機器が受信する。 - U/L ビット (下位から 2 番目): 0 ならユニバーサル管理アドレス (IEEE が保証するグローバル一意)、1 ならローカル管理アドレス (管理者が任意に設定したもの、後述の MAC ランダム化もこれ)。
表記は 16 進 2 桁を 6 個並べ、コロンまたはハイフンで区切る AA:BB:CC:DD:EE:FF 形式が一般的です。一部の機器 (Cisco など) では aabb.ccdd.eeff のようにピリオド区切り 4 桁の表記も使われます。
実用例
自機の MAC アドレスとその構造は、各 OS のコマンドで確認できます。先頭 3 バイト (OUI) を OUI データベースで引けばベンダが分かります。
# 【Linux】各 IF の MAC を一覧 (link/ether の行)
ip link show
# 例) link/ether 52:54:00:12:34:56 ... 先頭 52:54:00 が OUI
# 簡潔表示
ip -br link
# 【Windows】物理アドレス欄が MAC
ipconfig /all
getmac /v
# 【macOS】en0 の ether 行
ifconfig en0 | grep ether
# ARP テーブルで LAN 内の IP↔MAC 対応を見る
ip neigh show
# 例) 192.168.1.1 dev eth0 lladdr 00:1a:2b:3c:4d:5e REACHABLE
先頭バイトを 2 進数に直して下位 2 ビットを見れば、そのアドレスがユニキャストか・ユニバーサルかローカルかを判別できます。たとえば 02:... で始まるアドレスは U/L ビットが 1 のローカル管理アドレスで、仮想マシンやランダム化で生成されたものが多いです。
主な用途
- L2 フレームの宛先指定: 同一セグメント内の通信は MAC アドレス宛にフレームを送る。
- 機器の識別: スイッチは MAC アドレステーブルで「どのポートの先にどの MAC があるか」を学習する。
- ベンダ特定: OUI から NIC の製造元を推定し、機器の棚卸しやトラブル調査に使う。
- アクセス制御: 無線 LAN の MAC フィルタリングなど、補助的な識別子として使う。
ビット構造の比較
| 部分 | ビット数 | 意味 | 割り当て主体 |
|---|---|---|---|
| OUI | 前半 24bit | ベンダ識別子 | IEEE |
| NIC 固有部 | 後半 24bit | 個体シリアル | 各ベンダ |
| I/G ビット | 先頭バイトの最下位 | 0=ユニキャスト / 1=マルチキャスト | 規格 |
| U/L ビット | 先頭バイトの下位 2 番目 | 0=ユニバーサル / 1=ローカル管理 | 規格 |
注意点
- グローバル一意は前提に過ぎない: ユニバーサルアドレスは重複しない設計だが、ソフトウェアで変更 (詐称) できるため「絶対に一意」とは言い切れない。
- セグメントを越えない: MAC アドレスはルータを越えると書き換わる (各ホップで次の機器の MAC になる)。エンドツーエンドで一定なのは IP の方。
- 02 始まりはローカル: 仮想 NIC やコンテナの MAC はローカル管理アドレスのことが多く、OUI からベンダを引いても意味がない。
- EUI-48 と EUI-64: IPv6 のインターフェース ID 生成では 48bit MAC を 64bit に拡張する EUI-64 が使われることがある。
関連リンク
子ページ
子ページはありません
同階層のページ
- MACアドレスの構造
- MACアドレスフィルタリング
- MACアドレスの確認・変更方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15