Ethernet

【図解】Ethernetの仕組み〜LANとの違い, MACアドレスの構成, フレーム構造やタイプについて〜

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 は一般的にはフレーム長に含まれません。

プリアンブル

クロック同期用で、開始タイミングを知らせるのと、受信端末がビット判断のタイミングを合わせるためにあります。

同期をしないと対向機器がうまくビットを解釈できず、情報を正しく受信できないケースが多発します。同期の意味をもう少し知るには、以下が参考になるかと思います。

シンボルエラー (Symbol Error) とは
シンボルエラーとは シンボルエラーとは、100Base-TX の 4B/5B 符...

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 bitU/L bitベンダー識別子ベンダー内管理番号
ビット数1 bit1 bit22 bit24 bit

タイプについて

タイプフィールドに入る代表的なプロトコルを以下に示します。

 

タイプ番号プロトコル
Ox0000 - 05DCLength
Ox0800IPv4
Ox0806ARP
Ox0842Wake on LAN
Ox8100IEEE802.1q
Ox86DDIPv6
Ox8808Flow Control (802.3X PAUSE)
Ox8809Slow Protocol (LACP, EFM OAM)
Ox8847MPLS-IPv4 unicast
Ox8848MPLS-IPv4 multicast
Ox8863PPPoE Discovery Stage
Ox8864PPPoE Session Stage
Ox888EEAP over LAN (IEEE802.1x)
Ox88A8IEEE802.1ad (Q-in-Q) / IEEE802.1aq (SPB)
Ox88CCLLDP
Ox88E7IEEE802.1ah (PBB)
Ox8902CFM (L2ping/L2traceroute)

ちなみに、cisco の CDP や VTP は タイプ/長さの Field は 長さが入るほうで、LLC ヘッダがつきます。例えば CDP の LCC ヘッダは以下の通りです。

  • DSAP: Oxaa (SNAP)
  • SSAP: Oxaa (SNAP)
  • 制御部: Ox03 (Unnumbered frame)
  • OUI: Ox00000c (Cisco)
  • PID: Ox2000 (CDP)

コメント

  1. a より:

    現在はEthernet量産(コスト低減)によりAll Ethernetの時代の図のL2の送信元がDstになっています

    • nesuke より:

      aさん
      コメントありがとうございます!
      仰る通り、誤植でしたので修正しました。
      ご指摘ありがとうございました!

タイトルとURLをコピーしました