表題を見て「そんな疑問をもつこと自体が理解できない」と思う人もいるでしょう。
また、「実は一意とは限らないんだぞ」と言いたくてうずうずする人もいるでしょう。
そういう人は分かっている人だと思うので、特に読んでも得るところはないかもしれません。
(が、ご指摘やご質問があればいただきたく思います)
疑問の背景
何となくの理解で済ませてきたインフラ知識をしっかり勉強しようと、
佐野裕『インフラエンジニアの教科書2』(C&R研究所, 2016年)をめくっていたところ、
OSI参照モデルのデータリンク層の説明に行き当たりました。(同書16-17頁)
この層の役割は
直接的(隣接的)に接続されている通信機器間の信号の受け渡し
受け渡し先の決定に用いる情報は
MACアドレス
これを見て思ったのです。
MACアドレスは世界で一意(globally unique)だと新人研修で教わった記憶があります。しかし、近くの機器を識別するのが用途であるなら、近くの機器同士の間で一意であれば十分なのではないでしょうか?
改めてMACアドレスとは
MACアドレスに関しては、
- @cironaga MACアドレスとIPアドレスの違い(直観的に分かりやすい)
- @s_oshima ネットワークって何①(情報量が多い割にコンパクト)
- その他多数
の解説記事がQiita内外に存在しますが、屋上屋を架すことになるのを承知で簡単にまとめます。
MACアドレス
MACアドレス(Medium Access Control Address)はネットワークに参加する機器(PC、ルータ、スマホなど)に予め割り振られている識別番号です。フォーマットはIEEE(Institute of Electrical and Electronics Engineers, アイ・トリプル・イー)という団体が管理する規格1に従います。
アドレスの管理
アドレス自体は、IEEEが払い出す組織識別子(OUI: Organizationally Unique Identifier)を受け取った各組織(機器のベンダーなど)が、さらに組織の中で一意になるような識別子をOUIに付加して発番されることになっています。理論上は上位ビットのOUIが全世界で一意(IEEEが管理)・下位ビットが組織内で一意(各組織が管理)なのでMACアドレス全体は世界で一意になることになります。
何に使われているのか
主な用途としては、上述の通りOSI参照モデルでいうデータリンク層で、通信相手となる隣接機器を特定するのに使われています。
隣り合った機器同士はネットワークの区分としてはLAN(Local Area Network)を構成していますので、LANの通信規格であるIEEE802.X(802.3 Ethernetや802.11 Wi-Fi)でMACアドレスが活用されています。
冒頭の疑問に戻る
LANでの使用なのだから、ローカルに一意であれば十分では? というのが私の疑問でした。
具体的な使用の局面に限って言えば、それで十分だと考えられます。今いるLANの外部に、MACアドレスの重複する機器が仮に存在していたとして、それがLANの通信に何の支障があるでしょうか?
(上で言及した@s_oshima氏の記事にも「L2セグメント内で一意であれば、通信するうえで特に支障はありません」とあり、「そうだよね!」と思いました。)
しかしそれでも、世界で一意になるように管理する必要があります。
「今いるLAN」を構成するネットワーク機器は、理論的に言えば、世界中で流通している機器の中の任意の組み合わせでありうるからです。
どのベンダーからどのPCを買い、どのベンダーからどのルータを買い、それらをどう組み合わせようともLANが成立するようにするためには、そもそもそれらのベンダーが製造するすべてのPC、ルータに一意な番号を振っておかなければなりません。
ベンダーは世界で展開していますので、それは結局、世界で一意であるということです。
少し考えれば分かることですが、解答に思い至ってスッキリしました。
しかし一意ではない
本稿は、原則論としてなぜ一意性の保証が必要なのかを考察していますのでテーマから外れますが、実際には重複が発生することがあり、ネットワークエンジニアリング界隈では少し悩ましい問題であるようです。WikipediaやWikipediaの参考文献に詳細な解説がありますのでご興味のある方は当たってみてください。
-
IEEEのアーカイブでMACアドレスの仕様書を探しましたが、ダウンロードが有料ということもあり、結局これというドキュメントの特定に至りませんでした。 ↩