には、製造段階で製品個々に書き込まれるアドレスがあり、このアドレスをMACアドレスといいます。MACアドレスはLAN内やインターネット内でパケットをリレー(受け渡し)する際に一時的に使われます。
パソコンやサーバー、ルーター等に搭載されているネットワーク アダプタ―には、個々のアダプターを識別するための番号が書き込まれています
※2。
この番号をMACアドレスといいます。
MACアドレスは他のネットワーク アダプタ―と重複しないよう管理されているので、パソコンやサーバー等を特定するのに用いられます。
MACアドレスは、ネットワーク アダプター等のハードウェアに割り当てられている固有識別子(番号)で、物理アドレスともいいます。
48ビットの符号(2進数)を、1バイト
※3ごとにダッシュ(-)や コロン(:)の記号で区切って、16進数で表記します。大文字小文字は区別しません。
(記号を使わない場合もあります)。
MACアドレスの表記例. 下記3例は全て同じMACアドレスを表しています。
a8-97-dc-98-ac-1b | A8:97:DC:98:AC:1B | a897dc98ac1b |
パソコンのMACアドレスは次の方法で確認できます(windows10の場合)。
- [スタート] をクリック後、電源ボタンの上にある歯車模様の [設定] を選択。
- [ネットワークとインターネット]を選択。
- ネットワークの状態を表示しているイラストと説明文の下にある [プロパティ] を選択。
- 大文字表記の [ネットワーク プロファイル] や [従量制課金接続] といった項目の中から [プロパティ] を探します。
- 最下段にある [物理アドレス(MAC):] を参照します。
MACアドレスは48ビットの固定長です。前半の24ビットは機器を供給するベンダーに割り当てられた固有の識別子(番号)で、OUI(Organizationally Unique Identifier)、
ベンダーID、company id と呼ばれています。
後半の24ビットは製品IDと呼ばれる部分で、個々の製品(ネットワーク アダプタ―)に重複しない番号が割り当てられます。製品IDの管理はベンダーに任されています。
IEEE(Institute of Electrical and Electronics Engineers)とベンダーがそれぞれの部分を管理することで、結果として世界で1つだけの重複しないMACアドレスが保証されています。
MACアドレスを必要とするベンダーはIEEEに申請してOUIの割り当てを受けなければなりません(有料です)。
1つのOUI(ベンダーID)があれば24ビットの製品IDを使って約1,660万個のMACアドレスを作れますが、不足するような時は複数のOUIを取得する(もちろん有料です)ことも可能です。実際に多くのベンダーが複数取得しています。
IEEEでは
OUIの一覧 および
IABの一覧 をテキストファイルで公開しています。
ちなみに表記例(前項)のベンダーID A8-97-DC はIBMになります。
MACアドレスは下に示す通り48ビット(6バイト)で構成されますが、この中に重要な意味を持つビットがあります。
左の図は先頭の(第1)バイトを抜き出してビット単位に示したもので、左側が上位ビットで右側が下位ビットになります。
青で色分けしてある最下位ビット(0ビット目)が I/G ビットと呼ばれているもので、転送先が個別(Individual)なのかグループ(Group)なのかを指定します。
I/Gビットが 0 の場合、そのMACアドレスは1台のネットワーク アダプターが対象であり、端末同士が1対1で通信を行うユニキャストを示しています。
一般的な通信(web閲覧やメール等)はユニキャストであり、ネットワーク アダプターに書き込まれているMACアドレスがそのまま使われます。
一方でI/Gビットが 1 の場合は、複数の端末を通信の対象とした 1対多 のマルチキャストであることを示します。
マルチキャストはテレビ会議システム等の同時配信サービスに用いられます。
この時のMACアドレスはネットワーク アダプターに書き込まれた値は使われず、アプリケーションによって決められます。
例えばIPマルチキャストの場合、OUI部分の24ビットが 01-00-5E、続く1ビットが 0 と(先頭からの25ビットが)決められています。
MACアドレスのすべてのビットを 1 (ff-ff-ff-ff-ff-ff)にする通信もあります。ブロードキャストと呼ばれるもので、LANに接続しているすべてのネットワークアダプタが対象になります。
この時I/Gビットも1になっていて、ブロードキャストはマルチキャストの特殊な形態であるともいえます。
パケットは通信相手に向かって一直線に進むわけではありません。多数のネットワークが相互に中継することで構成された巨大なネットワーク(インターネット)の森を、パケットはネットワークからネットワークへとバケツリレーのようにして運ばれます。こうした転送(バケツリレー)の際にMACアドレスは転送相手の指定として使われます。
前章の「
T.4.LANの内と外を中継する」で、家庭用ルーターとユーザーAの間でやり取りされるデータ(パケット)の宛先と送信元の指定には、IPアドレスが使われると説明しました。この説明には少し補正が必要です。
LANの通信規格はイーサネット(有線)と無線LANが主流です。そこで送受信されるデータのフォーマットはフレームと呼ばれています。フレームは積み荷であるパケットをスッポリと収めたコンテナのようなもので、そこに書かれる転送先や転送元
※4のアドレスにはMACアドレスが使われます。
フレームに付加するMACアドレスは通信相手(宛先IPアドレス)のものとは限りません。
例えば「
T.4.LANの内と外を中継する」の説明図なら、ユーザーAが送り出すフレームの転送先MACアドレスは家庭用ルーターのMACアドレスになります。
アプリケーションからデータ送信の依頼を受けたOSは、データを小分けにしてそれぞれにIPアドレス等をセットしたIPパケットを作ります。
これらのIPパケットにネットワーク アダプタ―のデバイス ドライバがMACアドレスや制御情報を付け加えてフレームを完成させます。
イーサネットのフレームは概ね次のようなフィールドで構成されています。
- プリアンブル フィールド [サイズ:8バイト]
同期信号です。他の端末(ネットワークアダプタ)にフレームの送信開始を知らせると共に同期のタイミング合わせに用います。信号のパターンは規格で決められています。
- 転送先MACアドレス フィールド [サイズ:6バイト]
転送先IPアドレスから検索した転送先のMACアドレスが入ります。
- 転送元MACアドレス フィールド [サイズ:6バイト]
自身のネットワーク アダプタのMACアドレスが入ります。
- タイプ フィールド[サイズ:2バイト]
データ フィールドの種類を示すIDが入ります。IDには 0x0800:IPv4、0x0806:ARP、0x809b:AppleTalk、0x86dd:IPv6 等があります。
- データ フィールド [サイズ:46〜1500バイト]
通信内容の本体。概ねパケットが入ります。
- FCS(Frame Check Sequence) フィールド [サイズ:4バイト]
通信エラー検出用の算出値。転送先MACアドレス 〜 データのフィールドから計算したCRC(Cyclic Redundancy Check)の値が入ります。受信側でも同様にCRC値を計算し、FCSフィールドと同じ値でなければエラー発生と判断して受信したフレームは破棄します。
完成したフレームはネットワークアダプタからデジタル信号としてLAN内に送り出されます。同一LANに接続している他端末は受信したフレームの転送先MACアドレスが自分のMACアドレスと同じであれば受信動作を、異なる時はそのフレームを破棄します。
家庭用ルーターはパソコンから見ると「デフォルト ゲートウェイ」になります。そのIPアドレスとMACアドレスは、ネットワークのプロパティやARP(アープ)テーブルとして一時保存されています。
これらの情報はコマンド プロンプトの ipconfigコマンドや ARPコマンドで確認できます。
下記はコマンド実行例です。ここから自身のIPアドレス(192.168.1.2)、家庭用ルーターのIPアドレス(192.168.1.1)とMACアドレス(a8-97-dc-98-ac-1b)が判ります。
C:\>ipconfig
Windows IP 構成
IPv4 アドレス ........: 192.168.1.2
サブネット マスク ......: 255.255.255.0
デフォルト ゲートウェイ ...: 192.168.1.1
C:\>ARP -a
インターフェイス:192.168.1.2 --- 0xC
インターネット アドレス 物理アドレス 種類
192.168.1.1 a8-97-dc-98-ac-1b 動的
192.168.1.255 ff-ff-ff-ff-ff-ff 静的
|
OSはARPテーブルを参照して、デフォルト ゲートウェイのIPアドレスに対応しているMACアドレスを検出します。
通常、デフォルト ゲートウェイのMACアドレスはARPテーブルに記録されているので、OSはフレームの完成に向けて動作を進めます。
ARPテーブルに目的のデータが無い状況も考えられます。例えば通信相手が同じLAN内のユーザーB(192.168.1.3)だとしたら・・。
そのような場合はARPパケットをブロードキャスト送信してMACアドレスの問い合わせを行います。
ARP(Address Resolution Protocol)パケットはMACアドレス問い合わせ(応答)用の特殊なパケットで、宛先と送信元のアドレス(IP, MAC)に関する情報のみで構成されます。
下図はARPパケットとフレームの主要フィールドのみを抜粋表示したものです。
OP(OPeration)コードはARPパケットの種類(要求/応答)を示します。
ここで「
T.4.LANの内と外を中継する」のユーザーAがホームページの閲覧を開始した時、たまたまARPテーブルに
家庭用ルーターのデータが無かったとしましょう。
この時、ARPパケットは次のようにやり取りされます。
▼ 各MACアドレスを次のように仮定します
家庭用ルーター | a0-a0-a0-a0-a0-a0 |
ユーザーA | e8-e8-e8-e8-e8-e8 |
(1) ARPテーブルを参照して 192.168.1.1 のデータを得られなかった場合、下記内容のARP要求パケット&フレームを作成して送信ます。
転送先がすべて f (ブロードキャスト)のフレームは全端末(家庭用ルーターと全ユーザー)に届きます。各端末はARPパケットの宛先IPアドレスをチェックし、自分のIPアドレスと一致しなければ無視(廃棄)します。
(2) 宛先IPアドレスが一致した家庭用ルーターは、要求元であるユーザーAに向けてARP応答パケット&フレームを作成・送信します。またこの時の情報を基に、自身のARPテーブルにユーザーAの情報(IPアドレス, MACアドレス)を追記します。
ARP応答を受けたユーザーAは、送信元(家庭用ルーター)情報を自身のARPテーブルに追加します。
(3) デフォルトゲートウェイのMACアドレス検索を終了したユーザーAは、中断していた作業に戻ってwebアクセスのフレームを完成させて送信を行います。
ネットワーク インターフェース、ネットワーク カード、NIC(Network Interface Card)、LANカード等、様々な形状・名称がありますが、ここではネットワーク アダプタ―と呼ぶ事にします。