MACアドレスとは

 LANは、現在、イーサーネットという規格が最も使われています。そのイーサーネットでは、IPアドレスの他にMACアドレス(Media Access Control)を呼ばれるハードウェア固有のアドレスを使用します。

 そもそもIPアドレスは、論理的なアドレスで、あるPCに「192.168.1.1」を振ったところで、便宜上、人が勝手に設定しただけで、LAN上の他のPCは、そのPCに、どんなIPアドレスが、割当てられたのかは分かりません。

そこで、イーサネットでは、IPアドレスとMACアドレスを使用して通信を行うようになっています。

 MACアドレスは、ハードウェア固有のアドレスで、物理アドレスとも呼ばれます。NICやネットワーク機器に固有で割当てられる番号で、別のネットワークに移動させても変わることはありません。

MACアドレスには、次のルールがあります。

  • 48bitのコードからなる。
  • OUIより、ベンダーを識別可能
     最初の24bit分が、ベンダーコードで、「00:00:0C」ならCisco、「00:00:39」なら東芝、を表し、IEEEで管理されています。 残りの24bit分は、重複さえしなければ、ベンダーが任意に付けることができます。
  • ベンダーが出荷時に書き込み、原則としてユーザーは操作しない。
  • 原則として同じMACアドレスの機器は、存在しない。
  • 48bitを8bitずつ、「:」で6つのブロックに区切り、16進数で表現する。
    例えば「00:00:0C:A6:38:D8」
    ※「-」や「.」で区切る場合もあります。

 オクテット内のビットで、最上位ビットは、MSB(Most Significant Bit、最下位ビットは、LSB(Least Significant Bit)と呼ばれ、第1オクテットのI/Gビット、U/Lビットは、特別な意味を持つビットとして規格化されています。
※伝送時には、各オクテットは、LSBからMSBの順に伝送されます。

MACアドレスのブロードキャストアドレス

 IPアドレスと同様にMACアドレスでも、予約されている番号があります。ブロードキャストアドレスとマルチキャストアドレスです。ここでは、ブロードキャストアドレスについて説明して行きます。

 48bitの全てのビットが「1」の「FF:FF:FF:FF:FF:FF」というアドレスは、ブロードキャストアドレスとして予約されています。

 「FF:FF:FF:FF:FF:FF」のブロードキャストアドレスは、データリンク層レベルで、全ての宛先を意味し、このアドレスを宛先とするフレームは、ルータによって区切られるブロードキャストドメイン内の全ての端末に届きます。

ARPなどのブロードキャストドメイン内の全ての端末と、通信を行いたい場合に、このブロードキャストアドレスが使用されます。

ブロードキャストの問題

ブリッジやスイッチは、このコリジョンドメインを分割するための装置で、データリンク層で動作します。

 送受信するフレームをMACアドレステーブルで管理します。その為、どのポートにどの機器がつながっているのか学習し、宛先ホストにつながるポートにだけにフレームを転送し、不要なフレームを他のポートに流さないことで、ブロードキャストドメインを分割しています。

ただし、宛先が全てを対象とするブロードキャスト(FF:FF:FF:FF:FF:FF)は、転送してしまいます。

 ユニキャストであれば、データリンク層レベルで、NICが自分宛てかどうか判断して、自分宛でなければ破棄しますが、ブロードキャストを宛先とするフレームを受け取った端末は、自分宛だと判断して、上位層であるネットワーク層に、データを渡してしまうことになります。その結果、CPU資源を浪費してしまいます。

 ブロードキャストドメインのサイズが大きくなるとブロードキャストを受け取る端末が増加してくるので、問題となります。ブロードキャストドメインのサイズは、なるべく小さくなるように配慮して、ネットワークを構築する必要があります。

 また、IPのヘッダ内には、TTLがあり、生存時間というのがありますが、イーサネットヘッダには、TTLのような生存時間に該当するものがありません。

 つまり宛先に到達できないフレームは、いつまで経っても消滅しません。誤ってネットワークの構成をループ構成にした場合、ブロードキャストストームが発生し、ネットワークをダウンさせてしまう可能性があります。

PCのMACアドレスを調べる(ipconfig /all)

Windows PCのMACアドレスを確認するには、以下のコマンドを使用します。

Windows 9x系 ・・・ winipcfg
Windows NT系 ・・・ ipconfig /all

ここでは、Windows8.1などのWindows NT系のOSの場合を例に紹介します。

コマンドプロンプトを表示して、「ipconfig /all」コマンドを入力して、「Enterキー」を押します。

すると、次のように表示されます。

表示された項目の中でで「物理アドレス」とあるのが、MACアドレスです。

MACアドレスは枯渇するのか?

IPv4アドレスは、32ビットのため

 232 = 4,294,967,296

となり、約43億のIPアドレスしかありません。世界人口に対して不足しているのは明らかです。

 そのためIPv4では、サブネットマスク、VLSM、CIDR、プライベートIPアドレス、NATなど少ないIPアドレスを有効活用するための対策が施されています。それでも、IPアドレスの数が足りなくなることが近い将来、予測されるため、IPv6へ切り替える準備が進められています。

それでは、MACアドレスは、枯渇の心配をしなくてもよいのでしょうか?

 最近では、1人で複数のPCを所有するするのも珍しくありませし、家庭用ゲーム機、テレビなどの家電製品にもMACアドレスが付いています。身近な家電製品がネットワークに接続できるようになってきています。

つまり、MACアドレスが振られる機器が増えてきているのです。

MACアドレスは、48ビットです。

I/Gビット、U/Lビットが除いて46ビットが使えることになりますので

 246 = 70,368,744,177,664

約70兆のMACアドレスが、利用できることになります。

 IPv4のIPアドレスは、32ビットで約43億個ですから、MACアドレスは、IPアドレスの約1万6,000倍のアドレスを持つことになります。仮に、世界人口を70億と見積もって、1人当たりの取得できるMACアドレスを計算してみても、1人1万台のMACアドレスが取得できることになります。

MACアドレスに関しては、当分の間、枯渇の心配をする必要がなさそうです。

 仮に、MACアドレスが枯渇するような状況になったとしても、MACアドレスは、データリンク層のアドレスで、セグメント内で重複しなければよいのですから、確率的にあまり心配しなくてもよさそうですし、仮に重複した場合は、MACアドレスを、書き換えれば済みそうですね。

それでは、機器を製造するベンダー側にとってMACアドレスは、十分足りるのでしょうか?

各ベンダーが管理できるアドレス数は、1つのOUIに付き24ビットです。

 224 = 16,777,216

つまり、1つのOUIに付き、約1,600万個のアドレスしか使えない計算になります。

この数は、一見、十分足りそうな数値に思えるかもしれません。

 しかし、世界的に爆発的に売れた「Nintendo DS」例に挙げると、日本国内だけで、販売台数が、2,000万台を突破(2007年11月時点)しています。

つまり、MACアドレスが1,600万個では、不足するわけです。

そこで、ベンダーは、OUI割り当ての申請をして、複数のOUIを取得しています。