Ethernet とは
Ethernet とは、現在の代表的なレイヤー 2 の通信プロトコルです。Ethernet の通信データ単位は"フレーム"と呼ぶことが多く、ここでもそれに倣うことにします。
Ethernet は LAN (Local Area Network: ローカルエリアネットワーク) の一種です (LAN は Windows ではローカルエリア接続とも呼ばれています)。
LAN とは家の中や社内等の近距離を繋ぐネットワークを意味します。LAN の対義語は WAN ( Wide Area Network ) で、主にプロバイダへ接続するための回線 ( ONU 以降) を意味します。
ですがともに L2 通信のことを意味することもあり、特に LAN 用の L2 通信は今は Ethernet が主流であるため、LAN = Ethernet と解釈されることも多いです。
レイヤー2 (L2) 通信の役割
L2 通信の役割は、『通信主体の L3 通信 (IP 等) を届ける物理ケーブルに対し、物理的な電気信号を論理的な 0/1 ビットに解釈するための決まり事を提供する』ことであったり、『その L2 通信を行う範囲でのローカルな宛先を決める』ことです。
今でこそ L2 通信プロトコルのデファクトスタンダードは Ethernet であり、若い世代の人はむしろ他の L2 通信の実装を見たことが無いのが多数派でしょう。ですが昔使われていた L2 通信プロトコルの例として PPP や Frame-relay、トークンリング、FDDI 等があります。
IP パケットはケーブル媒体が変わるたびにプロトコルが変わりますが、L2 通信の宛先/送信元アドレスが変わっても、通信主体の L3 通信 (IP) の宛先/送信元アドレスは変わりません。下図にその例を示します。
Ethernet のフレームフォーマット
下記に Ethernet のフレームのフォーマットを示します。
プリアンブルと FCS は一般的にはフレーム長に含まれません。
プリアンブル
クロック同期用で、開始タイミングを知らせるのと、受信端末がビット判断のタイミングを合わせるためにあります。
同期をしないと対向機器がうまくビットを解釈できず、情報を正しく受信できないケースが多発します。同期の意味をもう少し知るには、以下が参考になるかと思います。
MAC アドレス
Ethernet (LAN) インタフェース (NIC) に振られている、(基本的に) 世界唯一の識別番号で、6 Byte で表現されます。宛先 MAC アドレスは L2 上でのデータを送信したい NIC の住所で、送信元 MAC アドレスは送信した NIC の住所です。ただし、OS レベルで設定変更も可能=詐称も可能です。
タイプ(Type)
歴史的な背景から、0-1500 (Ox0000-05DC) の場合は長さ、それ以外はタイプとして認識されます。
現在の通信のほとんどはタイプが使われます。CDP など一部特殊なもののみ、長さが使われます。
なので NW 機器や PC/サーバは Ethernet フレーム長を上位レイヤ (IPv4, ARP, IPv6 等) で識別します。
データ
伝送する内容が格納されます。IP パケットや ARP が格納されることがほとんどです。
FCS
Frame Check Sequence の略で、フレームをチェックし破損していた場合は破棄する仕組みを持っています。
Ethernet では破棄されたフレームを再送する仕組みはありません (コリジョン検知の場合は再送するが、今の時代は全二重であるためコリジョン検知は無い) ので、 TCP などの上位プロトコルにより再送をする必要があります。
MAC アドレスについて
MAC アドレスの構成をもう少し細かく見ていきます。
上位 3 Byte (24bit) は OUI ( Organizationally Unique Identifier ) と呼ばれ、IEEE が管理しています。後述の通り、この OUI からその機器を作ったメーカが分かります。
例えば "00-00-0C" であれば Cisco 製だと分かります ( Cisco はこれ以外にも OUI を持っています)。
OUI の bit の意味は以下のように定められています。なお、Ethernet 通信は 1 Byte 毎に、後ろから 1 bit ずつ送られますので、1 bit 目は 10 進数の 1 を表す bit、8 bit 目は 10 進数の 128 を表す bit になります。
1 bit 目: Individual/Group bit
0 ならばユニキャスト(個別)、1 ならばマルチキャスト(グループ)、もしくはブロードキャスト
2 bit 目: Universal/Local bit
0 ならば世界唯一性を保証しなければならない、1 ならば保証されなくてよい
3 - 24 bit 目: ベンダーコード
ベンダー企業を表す (Cisco や Xerox 等)。
OUI がどの企業に割り当てられているかは、 IEEE.org のこのページで見ることができます。
下位の 3 Byte は各ベンダーが管理し、NW 機器の Ethernet (LAN) インタフェース(NIC)に割り当てる仕組みになっています。
上位 3 Byte (OUI) | 下位 3 Byte | |||
---|---|---|---|---|
管理組織 | IEEE | 各ベンダー | ||
内容 | I/G bit | U/L bit | ベンダー識別子 | ベンダー内管理番号 |
ビット数 | 1 bit | 1 bit | 22 bit | 24 bit |
タイプについて
タイプフィールドに入る代表的なプロトコルを以下に示します。
タイプ番号 | プロトコル |
---|---|
Ox0000 - 05DC | Length |
Ox0800 | IPv4 |
Ox0806 | ARP |
Ox0842 | Wake on LAN |
Ox8100 | IEEE802.1q |
Ox86DD | IPv6 |
Ox8808 | Flow Control (802.3X PAUSE) |
Ox8809 | Slow Protocol (LACP, EFM OAM) |
Ox8847 | MPLS-IPv4 unicast |
Ox8848 | MPLS-IPv4 multicast |
Ox8863 | PPPoE Discovery Stage |
Ox8864 | PPPoE Session Stage |
Ox888E | EAP over LAN (IEEE802.1x) |
Ox88A8 | IEEE802.1ad (Q-in-Q) / IEEE802.1aq (SPB) |
Ox88CC | LLDP |
Ox88E7 | IEEE802.1ah (PBB) |
Ox8902 | CFM (L2ping/L2traceroute) |
ちなみに、cisco の CDP や VTP は タイプ/長さの Field は 長さが入るほうで、LLC ヘッダがつきます。例えば CDP の LCC ヘッダは以下の通りです。
- DSAP: Oxaa (SNAP)
- SSAP: Oxaa (SNAP)
- 制御部: Ox03 (Unnumbered frame)
- OUI: Ox00000c (Cisco)
- PID: Ox2000 (CDP)
コメント
現在はEthernet量産(コスト低減)によりAll Ethernetの時代の図のL2の送信元がDstになっています
aさん
コメントありがとうございます!
仰る通り、誤植でしたので修正しました。
ご指摘ありがとうございました!