イーサネットフレーム構造
イーサネット(Ethernet II / IEEE 802.3)で使用されるフレームは、複数のフィールドから構成されています。ここでは各フィールドの役割とフレームサイズについて解説します。
各フィールドの説明
| フィールド名 | サイズ | 説明 |
|---|---|---|
| プリアンブル (Preamble) | 7 バイト | 10101010 を7回繰り返すビットパターン。受信側のクロックを送信側と同期させるために使用される。 |
| SFD (開始デリミタ / Start Frame Delimiter) | 1 バイト | 10101011 の固定パターン。この直後からフレーム本体(宛先MACアドレス)が始まることを示す。 |
| 宛先MACアドレス (Destination MAC Address) | 6 バイト | フレームの送信先となる機器のMACアドレス。ブロードキャスト(FF:FF:FF:FF:FF:FF)やマルチキャストアドレスも指定可能。 |
| 送信元MACアドレス (Source MAC Address) | 6 バイト | フレームを送信した機器のMACアドレス。 |
| タイプ/長さ (Type/Length, EtherType) | 2 バイト | 値が1500(0x05DC)以下の場合はデータ長を、1536(0x0600)以上の場合は上位プロトコルの種別(EtherType)を表す。 |
| データ (ペイロード / Payload) | 46〜1500 バイト | 上位層から渡されたデータ本体。最小フレーム長を満たすため、46バイトに満たない場合はパディング(詰め物)が付加される。 |
| FCS (フレームチェックシーケンス / CRC) | 4 バイト | 宛先MACアドレスからデータまでの内容をもとに計算されたCRC32のチェックサム。伝送中のビット誤りを検出するために使用される。 |
宛先MACアドレス
宛先MACアドレスフィールドには、ユニキャストアドレス(特定の1台宛)、マルチキャストアドレス、またはブロードキャストアドレス(FF:FF:FF:FF:FF:FF)のいずれかが格納されます。アドレスの先頭ビット(ワイヤ上で最初に送信されるビット。16進表記では第1オクテットの最下位ビットにあたり、01:xx:xx:xx:xx:xx のように第1オクテットが奇数になる)が0ならユニキャスト、1ならマルチキャストを表し(I/Gビット)、48ビットすべてが1であればブロードキャストです。受信側のインタフェースは、宛先アドレスが自身のアドレス・登録済みマルチキャストアドレス・ブロードキャストアドレスのいずれとも一致しない場合、そのフレームを廃棄します。
送信元MACアドレス
送信元MACアドレスフィールドには、そのフレームを送信したインタフェースのユニキャストアドレスが格納されます。イーサネットのMAC層自体はこの値を解釈しませんが、上位層プロトコルやトラブルシューティング、スイッチが宛先ポートを学習するための送信元アドレステーブル構築などに利用されます。IEEEから製造業者に割り当てられたアドレス(グローバル管理アドレス)の場合、上位24ビットがOUI(Organizationally Unique Identifier)と呼ばれるベンダー識別子で、下位24ビットが各インタフェース固有の値です。OUIを調べることで、そのアドレスがどのベンダー製機器のものかを推定できます(MAC OUI ベンダー検索ツール)。
ローカル管理アドレス
先頭から2番目のビット(U/Lビット。16進表記では第1オクテットの下から2番目のビットで、02:xx:xx:xx:xx:xx や x2/x6/xA/xE で始まるアドレスが該当)が1のアドレスはローカル管理アドレスと呼ばれ、IEEEの割り当てとは無関係に機器側で自由に設定されます。仮想マシンに割り当てられるMACアドレスや、プライバシー保護のために端末が生成するWi-Fiのランダム化MACアドレスがこれに該当し、OUIからベンダーを特定することはできません。
上図のとおり、48ビットのMACアドレスは前半3オクテットのOUIと後半3オクテットのNIC固有部分に分かれ、第1オクテットの最下位ビット(b0)がI/Gビット、その隣(b1)がU/Lビットです。16進表記では第1オクテットの2桁目が 2・6・A・E ならU/Lビットが1(ローカル管理)、奇数ならI/Gビットが1(マルチキャスト)と判別できます。
EtherTypeの代表例
タイプ/長さフィールドの値が1536(0x0600)以上の場合、その値は上位プロトコルの種別(EtherType)を示します。代表的な値は以下の通りです。
| EtherType値 | プロトコル |
|---|---|
0x0800 | IPv4 |
0x0806 | ARP |
0x8100 | IEEE 802.1Q VLANタグ付きフレーム |
0x86DD | IPv6 |
0x8847 | MPLS ユニキャスト |
0x8848 | MPLS マルチキャスト |
0x8863 | PPPoE Discovery Stage |
0x8864 | PPPoE Session Stage |
0x888E | IEEE 802.1X EAPOL |
0x88CC | LLDP |
EtherTypeはIEEE Registration Authorityが管理しており、割り当て済みの全一覧は以下で公開されています。
フレームサイズ
| 範囲 | サイズ | 備考 |
|---|---|---|
| MACフレーム(宛先MACアドレス〜FCS) | 64〜1518 バイト | イーサネットの規格上で定義されているフレームサイズ。 |
| 伝送データ全体(プリアンブル・SFDを含む) | 72〜1526 バイト | 実際にケーブル上を流れるビット列全体のサイズ。 |
データが46バイト未満の場合、最小フレーム長64バイト(MACフレーム)を満たすようにパディングが挿入されます。これは、CSMA/CD方式における衝突検出を正しく機能させるために必要な最小サイズです。
また、802.1Q VLANタグを付与する場合は、送信元MACアドレスとタイプ/長さの間に4バイトのVLANタグが挿入され、最大フレーム長は1522バイトまで拡張されます。