Lesson2ではMACアドレスの構造を詳しく見ていこう。MACアドレスの正体は48のビット列,つまり0と1が48個並んだ数字列である。48ビットを8ビット(オクテットと呼ぶ)ごとにハイフンやコロンで区切り,16進数に変換して表記する

通信の種類を決めるI/Gビット

 MACアドレスを構成する48ビットの中で,特に重要なビットがある。それは,受け取ったデータのあて先MACアドレスを読み出すときの最初のビットだ。このビットは「I/Gビット」と呼ばれており,Iはindividual,Gはgroupの略である。I/Gビットは,そのデータの通信方法を表している(図2)。

図2●I/Gビットで通信方法が決まる
図2●I/Gビットで通信方法が決まる
MACアドレスは48ビットで構成され,8ビットごとにハイフンやコロンで区切り,16進数で表記する。ルーターやLANスイッチなどのネットワーク機器は,8ビット単位でビットを読み込む。一番初めに読み込むビットはI/Gビットといい,あて先が個別かグループかを表す。すべてのビットが1のアドレスはブロードキャストに使われる。48ビットのうち,最初の24ビットはベンダーを識別するOUI(organizationally unique identifier),残りの24ビットは各ベンダーが製品に割り当てる識別子である。
[画像のクリックで拡大表示]

 あて先MACアドレスのI/Gビットが0の場合,その通信は1台の端末だけを対象としたものという意味である。つまり,端末同士が1対1で通信するユニキャストを示すMACアドレスということだ。この場合,機器にはじめから設定されているMACアドレスを使う。このため,個別の機器に出荷時点で設定されているMACアドレスのI/Gビットは必ず0になっている。

 一方,I/Gビットが1の場合,その通信は複数の端末を対象としたマルチキャストであることを表す。マルチキャストで使うMACアドレスは個別の機器に割り当てられるのではなく,通信プロトコルごとに決められている

 例えば,IPマルチキャストで使うMACアドレスは,01-00-5Eで始まる番号と決められている。01を2進数に直すと00000001となり,I/Gビットが1になっていることがわかる。

読み込み順はオクテット内で逆転

 ここで,1になっているのは最初のビットではないと思うかもしれない。図2でI/Gビットの位置を確認してみると,I/Gビットは先頭から数えて8ビット目にあたる。

 どうして8ビット目なのにI/Gビットなのか,と不思議に思われるかもしれない。実はイーサネットの通信においては,オクテット単位でデータをまとめて取り込み,その中で最後の最下位ビットから先頭の最上位ビットに向けて読んでいく。このため,8番目のビットが最初に読み込まれるのだ。

 なお,LAN内の全端末を対象としたブロードキャスト通信は,MACアドレス上ではマルチキャストの特殊なパターンとなる。I/Gビットが1となっているだけでなく,それ以外のすべてのビットも1になっている。16進数で表記するとFF-FF-FF-FF-FF-FFとなる。このようなMACアドレスがあて先として指定されているデータは,すべての端末が受け取って処理する。

 また,二番目に読み込まれるビットも「G/Lビット」と呼ばれる特殊なビットである。G/LビットのGはglobal,Lはlocalの略で,0ならば世界で唯一のグローバル・アドレス,1ならば閉じたネットワークで使うローカル・アドレスを表す。ただし,「ローカル・アドレスは実験以外では見たことがない」(アンリツ IPネットワーク事業推進部の岩崎有平 副事業推進部長)存在である。このため,G/Lビットについては特に注意を払う必要はないだろう。

ベンダーに割り当てられるOUI

 ここまで説明したI/GビットとG/Lビットのほかにも,注目したいビットがある。それがMACアドレスの前半の24ビットである。この24ビットをOUIと呼ぶ。OUIは製品を提供するベンダーごとにIEEEが割り当てる。そして,そのベンダーが後半の24ビットを製品ごとに割り当てていくことでMACアドレスのユニーク性が保証される。