Ethernet (IEEE 802.3) は有線 LAN の事実上の唯一の選択肢として 50 年生き残ってきた L2 プロトコル。速度を 1 万倍、メディアを同軸からツイストペア・光まで、トポロジを共有バスからスイッチドへ全部入れ替えながら、フレーム形式だけは互換を保ったまま現役。本稿は「読める / 設定できる / 守れる」を目標に、Ethernet の不変の中心と現代の運用知識を通しで整理する。
難しく見えても本質は次の 3 つだけ。(1) Ethernet は 「LAN ケーブルの上で動く荷物の規格」。中身は IP や ARP だが、運ぶ容器 (フレーム) は Ethernet が決めている。(2) 各機器は MAC アドレス (48 bit の機械固有番号) で互いを呼び合う。IP が「住所」なら MAC は 「機材の製造番号」。(3) 中継役の スイッチが「この MAC はこのポートに居る」を勝手に覚えて、適切なポートだけにフレームを流す。— ここを土台に各章を順に開いていけばいい。
フレーム形式 — Ethernet の不変の中心 #
Ethernet が半世紀互換を保てたのは、フレーム形式が IEEE 802.3 で標準化されてからほとんど変わっていないから。IP も ARP も VLAN も、すべてこの 1 枚の入れ物の中身として成り立っている。
1 枚の Ethernet フレームは 「宛名 + 差出人 + 中身の種類 + 中身 + 改ざんチェック」がセットになった封筒。Dst/Src MAC が宛名と差出人、EtherType が「中身は IP か / ARP か / IPv6 か」の種別シール、Payload が荷物本体、FCS が「封筒が破れていないか」のチェック印。中身が何であれ封筒の形は同じだから、Ethernet は 50 年同じ姿のまま IP も ARP も VLAN もすべて運べる、という仕組み。
| 領域 | サイズ | 役割 |
|---|---|---|
| Preamble | 7 byte | 10101010 × 7。NIC ハードウェアが扱い、OS から見えない |
| SFD | 1 byte | 10101011。フレーム本体の開始マーカー |
| Dst MAC | 6 byte | 宛先ハードウェアアドレス |
| Src MAC | 6 byte | 送信元ハードウェアアドレス |
| EtherType | 2 byte | Payload の種別 (0x0800=IPv4 / 0x0806=ARP / 0x86DD=IPv6 / 0x8100=VLAN) |
| Payload | 46〜1500 byte | IP / ARP 等の上位プロトコル |
| FCS | 4 byte | CRC-32。受信側が再計算して照合 → 不一致なら破棄 |
| IPG | 12 byte 等価 | 送信間隔 (HW 制御) |
押さえどころ:
- Preamble + SFD + IPG は NIC ハードウェアが扱う。「Ethernet フレーム」と呼ぶときは普通 Dst MAC〜FCS を指す。
- EtherType が「Payload を何のプロトコルとして読むか」の鍵。
tcpdumpが「IP packet」「ARP packet」と分けて表示するのはここを見ているだけ。 - Payload 下限 46 byte は、衝突検出に必要だった最小フレーム長 64 byte を満たすための CSMA/CD 時代の遺産。現代では実質意味を持たないが互換のため残る。
- FCS は損失検出のみ。不整合なら NIC が黙って捨て、再送は上位 (TCP) の仕事。Ethernet は再送しない。
TPID=0x8100 が「ここから VLAN タグ」のマーカー、続く TCI 2 byte に PCP + DEI + VID (12 bit, 1〜4094) が入る。EtherType がもう 1 段奥に押し出されるだけで、それ以外は同じ形式。タグ付き最大長は 1522 byte。
MAC アドレス — 48-bit のハードウェア識別子 #
Dst/Src MAC の中身を 1 段掘る。48-bit (6 byte) で、表記は 00:1A:2B:3C:4D:5E の 16 進。前半 24 bit が OUI (IEEE がベンダーに払い出す番号)、後半 24 bit がベンダー内のシリアル。
MAC は NIC (LAN チップ) の工場出荷時に焼き付けられた固有番号で、原則一生変わらない (= 機材の指紋)。一方 IP は 引っ越しすれば変わる住所。前半 24 bit を OUI 検索すれば 「これは Apple 製」「これは Cisco の機材」とすぐ分かる (OUI 検索サイトに 6 桁打ち込むだけ)。「ARP テーブルを見て知らない MAC を OUI で引く」のは、ネット内で見慣れない機材を発見する基本動作。
最初の byte の下位 2 bit が特殊な意味を持つ:
| bit | 名前 | 意味 |
|---|---|---|
| bit 0 (I/G) | Individual / Group | 0 = ユニキャスト / 1 = マルチキャスト or ブロードキャスト |
| bit 1 (U/L) | Universal / Local | 0 = グローバル一意 (OUI 割当) / 1 = ローカル管理 (仮想 NIC 等) |
代表的なパターン:
ff:ff:ff:ff:ff:ff— ブロードキャスト (ARP request 等)01:00:5e:xx:xx:xx— IPv4 マルチキャスト33:33:xx:xx:xx:xx— IPv6 マルチキャスト02:xx:xx:xx:xx:xx等 — VM / Docker / WSL の仮想 NIC、macOS / iOS の Private Wi-Fi Address
$ ip link show # 各 NIC の MAC
$ ip neigh # ARP テーブル (IP → MAC)
$ ethtool -P eth0 # 永続 MAC (現在と異なれば変更されている)
# 一時的に MAC を変える (匿名化 / 検証 / 復旧)
$ sudo ip link set dev eth0 address 02:11:22:33:44:55ルータを 1 つ越えるたびに 送信元 / 宛先 MAC は書き換わる (IP は同じまま)。IP と MAC が「何を識別しているか」の階層が違うことの帰結で、初学者がつまずきやすい。
共有バスからスイッチドへ — 同じ名前で中身が変わった #
「Ethernet = 衝突したら待って再送する CSMA/CD」と教科書で読んだ世代もいるが、現代の Ethernet にはほぼ無関係。トポロジが根本から変わったため。
昔のハブは 「全校放送」方式 — 誰かが何か言うと校内全員に聞こえてしまい、誰もが他人の通信を盗聴できた。さらに 2 人が同時に喋ると衝突して聞き取れず、両者がくじ引きで再送する (= CSMA/CD)。現代のスイッチは 「職員室の受付」方式 — 「○○宛です」と渡すと受付がその人だけに渡してくれる。だから 100 人が同時に喋っても他人の話は聞こえないし、衝突も起きない。「Ethernet = 衝突して待つ」のイメージは過去のもの、と覚え直すと現代の話が一気に腑に落ちる。
CSMA/CD で再送。ホストが増えるほど劣化。CSMA/CD は無効化。N 台が N 本のリンクを同時にフル帯域で使える。NIC に残る「半二重 / 全二重 / auto-negotiation」設定はシェアドバス時代の名残で、現代では実質常に「全二重」固定。
Wi-Fi (802.11) は今も類似の CSMA/CA (Collision Avoidance) で動く。Wi-Fi が混雑すると遅くなるのは「Ethernet が捨てた問題が無線にだけ残っているから」。
スイッチ内部 — MAC 学習とフラッディング #
スイッチが「この MAC はこのポート」をどう知るか? 来たフレームの送信元 MAC を、入ってきたポートと紐付けて覚えるだけ (= MAC learning)。事前設定は不要で、これが「プラグアンドプレイで動く」の正体。
スイッチは「○○さんはこのポートから出てきました」という 送信元の情報をメモに残す (= FDB に学習)。次回その人宛のフレームが来たら、メモを見て そのポートだけに渡す。初対面 (未学習) の宛先なら 「○○さーん!」と全員に呼びかけ、本人が応答したらメモに登録。ブロードキャスト (= 全員宛) は常に全ポートに流す。古いメモは 5 分くらいで消えて (= エージタイマー)、座席が変わった人にも追従できる。これだけの仕組みで世界中のスイッチが事前設定ゼロで動いている。
ff:ff:ff:ff:ff:ff 宛は常に全ポートへ。ARP request はこの仕組みで届く。# Linux ブリッジ (= ソフトウェア L2 スイッチ)
$ bridge fdb show
$ ip link show type bridge
# Cisco IOS
switch# show mac address-table
switch# show mac address-table address aa.aa.aa
switch# show spanning-tree # STP の状態複数スイッチを冗長リンクで繋ぐと、ブロードキャストがループして増殖し続ける。STP (Spanning Tree Protocol, 802.1D) がスイッチ間で BPDU を交換し、論理的にリンクを 1 本ブロックして木構造に整える。旧 STP は収束 30〜50 秒、RSTP (802.1w) で数秒に短縮。DC スケールでは TRILL / SPB / EVPN-VXLAN に置き換わっている。
VLAN (802.1Q) — 1 本の物理線で複数の L2 を分ける #
LAN を物理的に分ける代わりに、フレームに 12-bit のタグ (VID) を付けて論理的に分けるのが VLAN。同じスイッチ・同じ物理線でも、VID が違えば L2 的には別の世界。
1 本の廊下 (= 物理ケーブル) を全社員が共有しているとき、各人が首から下げる名札の色 (= VID) で「営業部 / 経理部 / 開発部」と分け、自分と違う色とは話せないルールにする — これが VLAN。物理的にケーブルを引き直さなくても、L2 的にネットワークを分けられるのが強み。「ブロードキャストドメインの分割」「部署別の隔離」「IP 電話と PC を同じ 1 本のケーブルで通す」が代表的な使い道。VLAN 間で話したくなったらルータ (or L3 スイッチ) で IP 層を介する必要がある、という点だけ最初に押さえておく。
- VID — 12-bit (1〜4094)。0 と 4095 は予約。4094 個までしか作れないためクラウドスケールで足りなくなり、後継として VXLAN (24-bit, 約 1600 万個) が登場。
- アクセスポート — 端末側ポート。1 VLAN のみに所属し、フレームに VLAN タグを付けない。
- トランクポート — スイッチ間 / ルータ-スイッチ間ポート。複数 VLAN をタグ付きで運ぶ。
- ネイティブ VLAN — トランク上でタグなしで送る VLAN (デフォルト VLAN 1)。VLAN hopping の温床になりやすいので業務で使わないのが定石。
$ sudo ip link add link eth0 name eth0.100 type vlan id 100
$ sudo ip addr add 10.100.0.5/24 dev eth0.100
$ sudo ip link set eth0.100 up(config)# interface Gi0/1
(config-if)# switchport mode access
(config-if)# switchport access vlan 10
(config)# interface Gi0/24
(config-if)# switchport mode trunk
(config-if)# switchport trunk allowed vlan 10,20,30
(config-if)# switchport trunk native vlan 999 # 業務 VLAN を native にしないVLAN は「ブロードキャストドメインの分割」「部門ごとの分離」「Voice VLAN で IP 電話 + PC を 1 本のケーブルで運ぶ」など多目的に使われる。VLAN 間の通信には L3 ルーティング (ルータ or L3 スイッチ) が必須 — VLAN は L2 を分けるだけなので、跨ぐには IP 層で経路を決める必要がある。
速度世代とメディア — 10M から 400G まで #
Ethernet が同じフレーム形式で速度を 1 万倍に伸ばせたのは、物理層 (PHY) を速度ごとに別物に取り替えてきたから。L2 (フレーム) と L1 (信号方式) が綺麗に分離されている設計の勝利。
| 速度 | 標準 | 規格年 | メディア | ケーブル |
|---|---|---|---|---|
| 10 Mbps | 10BASE-T | 1990 | UTP | Cat3+ |
| 100 Mbps | 100BASE-TX | 1995 | UTP | Cat5+ |
| 1 Gbps | 1000BASE-T | 1999 | UTP | Cat5e+ |
| 2.5 / 5 Gbps | 2.5G/5GBASE-T | 2016 | UTP | Cat5e/6 (既設で OK) |
| 10 Gbps | 10GBASE-T / -SR | 2006 | UTP / 光 (MMF) | Cat6a+ / OM3+ |
| 25 / 40 / 100 Gbps | 25/40/100GBASE | 2010s | 光 / DAC | OM4 / OS2 |
| 400 Gbps | 400GBASE | 2017 | 光 (SMF) | OS2 |
ツイストペア (UTP) はカテゴリ (Cat) で速度上限が決まる:
- Cat5e — 1 Gbps (現代 LAN の最低基準)
- Cat6 — 1 Gbps 全長 / 10 Gbps 短距離 (55m)
- Cat6a — 10 Gbps 全長 (100m)
- Cat8 — 25 / 40 Gbps (DC 内短距離)
光ファイバ は 2 種類 — MMF (マルチモード) が短距離 (数百 m, 安価, DC 内)、SMF (シングルモード) が長距離 (数 km〜数十 km, キャリア / 拠点間)。
データと一緒に 最大 90W (802.3bt) の電源を Cat ケーブルで供給する規格。IP 電話 / Wi-Fi AP / 監視カメラ / ドアコントローラを AC 電源なしで設置できる、現代エンタープライズの必須機能。
Auto-negotiation と MTU — 古典的な落とし穴 #
Auto-negotiation はリンク両端が「この速度・全二重で行こう」を自動で握る機構。両端が auto なら問題ないが、片方が固定 / もう片方が auto だと、片側は「auto で半二重 fallback」、もう片方は「固定で全二重」となり、フレーム送信のたびに衝突誤検出 → 性能急落、という古典的な duplex mismatch が起きる。
$ ethtool eth0 # 現在の状態
# 両端を 1G/全二重に固定 (auto を切る) — 通常は不要
$ sudo ethtool -s eth0 speed 1000 duplex full autoneg offMTU (Maximum Transmission Unit) は 1 フレームの payload 最大バイト数。Ethernet のデフォルトは 1500 byte。データセンター内では 9000 byte (jumbo frame) を使うことが多く、iSCSI / NFS / NVMe-oF のスループットに大きく効く。
ICMP "Fragmentation Needed" を捨てるファイアウォールが経路にあると、パケットがブラックホールされて「ping は通るが大きい転送だけ詰まる」嫌な症状が出る。MTU を 1500 → 1492 (PPPoE) や 1450 (VPN/トンネル) に下げる回避策が定番。
L2 攻撃面と防御 — 基本セットを必ず入れる #
スイッチの「MAC を学習して転送する」素朴な仕組みは、L2 で動く攻撃にそのまま脆弱。最低限知っておくべき攻撃と、現代スイッチが提供する防御:
| 攻撃 | 仕組み | 防御 |
|---|---|---|
| MAC flooding (CAM overflow) | 偽 src MAC のフレームを大量に送り FDB を溢れさせ、学習不能 → 全フレーム flood = ハブ退化 → 盗聴可能 | port security (ポート当たり学習 MAC 数を制限) |
| ARP spoofing | 「ゲートウェイの IP は俺の MAC」と偽 ARP reply を流して MitM | DAI (Dynamic ARP Inspection) — DHCP snooping のバインディングテーブルと照合 |
| DHCP starvation / rogue DHCP | DHCP プールを偽 MAC で食い尽くす / 偽 DHCP で誤った GW・DNS を配布 | DHCP snooping — 信頼ポートからのみ DHCP offer を許可 |
| VLAN hopping (Double Tagging) | 802.1Q タグを 2 重に付け、最初のスイッチが外側を剥がし次が内側 VID で別 VLAN へ配達 | ネイティブ VLAN を業務に使わない + 未使用 VLAN を trunk allowed に入れない |
| VLAN hopping (Switch Spoofing) | アクセスポートに偽 DTP を流し勝手に trunk 昇格 → 全 VLAN 覗き見 | switchport mode access 明示 + DTP 無効 (switchport nonegotiate) |
| STP 攻撃 (BPDU 偽装) | 偽 BPDU で自分が root bridge と宣言、トポロジ書き換えで MitM | BPDU guard — エンドホスト用ポートが BPDU を受信したら即 err-disable |
スイッチは 「会社の玄関ロビーで誰を通すか判定する受付」のような存在。何の対策もない受付は 偽名で何度も入る人 / 受付の名簿を溢れさせる人 / 隣の会議室と勝手に標識を入れ替える人に簡単にだまされる。上表の対策はそれぞれが 「定員制限 (port security)」「ID 確認 (DAI)」「名札の色チェック (BPDU guard)」のような 玄関ロビーの防犯セット。新しいポートに端末を繋ぐ前に必ずこのセットを入れるのが、エンタープライズ運用の事実上の標準。
(config)# interface GigabitEthernet0/1
(config-if)# switchport mode access
(config-if)# switchport access vlan 10
(config-if)# switchport nonegotiate # DTP 無効
(config-if)# switchport port-security # port security 有効
(config-if)# switchport port-security maximum 2 # PC + IP 電話想定
(config-if)# switchport port-security violation restrict
(config-if)# spanning-tree portfast
(config-if)# spanning-tree bpduguard enable # BPDU が来たら err-disable
(config-if)# ip dhcp snooping limit rate 15
(config)# ip dhcp snooping vlan 10
(config)# ip arp inspection vlan 10 # DAI 有効アクセスポートに port security + DHCP snooping + DAI + BPDU guard + switchport mode access 強制 を一括で入れたテンプレートを作っておくのが、エンタープライズスイッチ運用の事実上の標準。MACsec (802.1AE) という L2 暗号化規格もあるが、ペアごとの鍵管理と全スイッチ対応が必要で、通常は L3 以上 (IPsec, TLS) で守るのが現実解。
Wi-Fi との関係 — 同じフレーム形式の上で連続する #
家でも職場でも「Wi-Fi で繋いだ端末が、有線で繋いだプリンタを直接見える」のは、Wi-Fi (802.11) と Ethernet (802.3) が同じ MAC + EtherType + Payload のフレーム形式を共有しているから。AP (アクセスポイント) は「無線フレームを有線フレームに翻訳する L2 ブリッジ」として動く — 入った 802.11 フレームを 802.3 フレームに変換し、有線側に流す (逆方向も同じ)。
これにより:
- 同じサブネットの IP が Wi-Fi と有線で共存できる
- ARP / DHCP / mDNS / NetBIOS といった L2 ブロードキャスト系プロトコルが両方に届く
- スイッチから見ると AP は「複数の MAC が住むポート」
「Ethernet 抜きで Wi-Fi だけのネットワーク」が事実上ほぼ存在しない (AP は必ず有線で uplink される) のは、Ethernet が L2 の共通語だから。Wi-Fi は無線区間の物理層 + MAC 層を担当するが、その上は Ethernet と同じ 1 枚のフレーム形式に乗っている。
「フレーム形式と MAC を読めること」 → 「スイッチが何を学習して何を flood するかが分かること」 → 「VLAN で L2 を切り分けられること」 → 「port security / DHCP snooping / DAI / BPDU guard をテンプレで入れられること」。この 4 つを揃えれば、エンタープライズ L2 で起きる問題のほとんどに自分の判断軸で対処できる。