前回は第1層(物理層)で「電気が0と1に変わる瞬間」をディープに解説しましたが、今回はその続き。「第2層:データリンク層(Data Link Layer)」の世界へダイブします。
第1層のケーブルの中では、0と1がただ無秩序に連続して流れているだけです。これをそのまま隣のPCに送りつけると、「どこからどこまでがデータなの?」「誰宛てなの?」とパニックになってしまいます。
そこでデータリンク層の出番です!0と1の羅列を「フレーム(Frame)」というカプセルにパッキングし、宛先を貼り付けて、お隣さんへ確実に届ける。この「交通整理」の裏側で動いている見事なアルゴリズムと数式を紐解いていきましょう!
1. データリンク層の本当の役割:「フレーミング」と「直接配達」
データリンク層の最大のミッションは、同じネットワーク(LAN)に繋がっている機器同士で、正しくデータをやり取りすることです。
ここで主役となるのが「MACアドレス(物理アドレス)」です。
世界中のすべてのネットワーク機器(PC、スマホ、ルーター)の通信チップには、製造時に「00:1A:2B:3C:4D:5E」のような世界でたった一つの番号が焼き付けられています。
第2層では、送りたいデータの先頭に「宛先のMACアドレス」と「送信元のMACアドレス」をくっつけます。これをイーサネットフレーム(Ethernet Frame)と呼びます。IPアドレス(第3層)が「最終目的地の住所」なら、MACアドレス(第2層)は「次に荷物を渡す隣の人の名前」です。
2. データリンク層を「どう学び、どう極めるか?」のロードマップ
データリンク層は、ネットワークエンジニアの登竜門である「L2スイッチ(スイッチングハブ)」の挙動を理解するための最重要レイヤーです。
【ステップ1】MACアドレスとフレームの構造を解剖する(暗記編)
まずはMACアドレスの構造を学びます。前半の3バイト(OUI)が「Apple」や「Cisco」といったベンダー(製造元)を表し、後半3バイトが製品のシリアル番号です。
そして、イーサネットフレームの構造(宛先MAC、送信元MAC、EtherType、ペイロード、FCS)を暗記します。無料のパケットキャプチャソフト「Wireshark」をPCにインストールし、自分のPCがどんなフレームを飛ばしているか観察するのが最強の学習法です。
【ステップ2】L2スイッチの「学習と転送」のアルゴリズムを極める
家電量販店で売っている「スイッチングハブ(L2スイッチ)」は、実は内部でめちゃくちゃ賢いことをしています。
スイッチは、繋がっているPCのMACアドレスを自動で暗記し、「MACアドレステーブル」という名簿を作ります。そして、関係ないPCにはデータを流さず、宛先のPCが繋がっているポート(穴)にだけピンポイントでデータを流す(フォワーディング)のです。この「学習(Learning)」と「転送(Forwarding)」のロジックを論理的に説明できるようになれば、実務レベルの知識が身につきます。
3. アカデミックな裏側:エラー検知の「CRC」と、衝突回避の「CSMA/CA」
データリンク層を語る上で欠かせないのが、通信の信頼性を担保する美しい数学とアルゴリズムです。
🧮 数式1:エラーを絶対に見逃さない多項式「CRC」
第1層のケーブルでノイズが入り、データが「1」から「0」に化けてしまったらどうするか?第2層ではCRC(巡回冗長検査)という強力なアルゴリズムを使って、フレームの末尾(FCS)にチェック用のデータをくっつけます。
送信するデータを多項式 $M(x)$ 、あらかじめ決めておいた生成多項式を $G(x)$ とします。データを $G(x)$ で「割り算」し、その余り $R(x)$ を計算します。
$$R(x) = (M(x) \cdot x^n) \pmod{G(x)}$$
受信側も送られてきたデータを同じ $G(x)$ で割り算し、余りが「0」になればデータは壊れていないと証明されます。この数式のおかげで、私たちは文字化けのないWebサイトを見ることができています。
📶 数式2:Wi-Fiの電波衝突を避ける「指数バックオフ」
無線LAN(Wi-Fi)もデータリンク層の管轄(MACサブレイヤ)です。見えない電波の世界では、2人が同時に通信すると電波がぶつかって(衝突して)壊れてしまいます。これを避けるのがCSMA/CA(搬送波感知多重アクセス/衝突回避)です。
もし電波が混雑していたら、通信機器はサイコロを振って「ランダムな時間」だけ待機します(バックオフ時間 $T_w$)。
$$T_w = \text{Random}(0, CW) \times T_{slot}$$
ここで重要なのが「コンテンションウィンドウ($CW$)」です。もし通信が失敗(衝突)したら、次回待つ最大時間 $CW$ を $2$ 倍、$4$ 倍、$8$ 倍と指数関数的に増やしていきます。
$$CW_{new} = \min(CW_{max}, (CW_{old} + 1) \times 2 – 1)$$
みんなが少しずつ空気を読んで待つ時間を長くすることで、渋滞したWi-Fi空間でもデータが確実に流れるように設計されているのです。IEEE INFOCOMやACM MobiComといったトップ学会では、この $CW$ の最適化や、最新のWi-Fi 7に向けた超高効率なMACプロトコルが日夜研究されています。
💻 第2層をハックする!学ぶべきプログラミング言語
データリンク層(フレーム)を自由に操れるようになると、ネットワークエンジニア・セキュリティエンジニアとして一気にレベルアップします。
- C言語 / C++(究極の高速パケット処理)1秒間に何億個というフレームを処理する業務用のルーターやファイアウォールは、Linuxカーネルをバイパスする「DPDK(Data Plane Development Kit)」や「eBPF/XDP」という技術を使い、C言語でゴリゴリに書かれています。最速の通信システムを作りたいなら必須です。
- Python(Scapyライブラリでのフレーム生成)Pythonの
Scapyという神ライブラリを使えば、たった数行のコードで「偽のMACアドレスを持ったイーサネットフレーム」を自作してネットワークに放つことができます。セキュリティ診断(ペネトレーションテスト)やネットワーク検証の自動化において、Pythonは最強の武器になります。
🔗 データリンク層をもっと知るための学会・サイト
- IEEE 802 LAN/MAN Standards Committee有線LAN(IEEE 802.3:イーサネット)や無線LAN(IEEE 802.11:Wi-Fi)の規格を定めている世界最高峰の委員会。すべての仕様の源流はここにあります。https://www.ieee802.org/
- ACM MobiComモバイル通信とワイヤレスネットワークのトップカンファレンス。Wi-FiのMACプロトコル(CSMA/CAの改良など)に関する最先端の論文が発表されます。https://sigmobile.org/mobicom/
📚 参考文献
- Peterson, W. W., & Brown, D. T. (1961). Cyclic Codes for Error Detection. Proceedings of the IRE. (CRCエラー検知の基礎を作った歴史的論文)
- Bianchi, G. (2000). Performance analysis of the IEEE 802.11 distributed coordination function. IEEE Journal on Selected Areas in Communications. (Wi-FiのCSMA/CAバックオフアルゴリズムを数学的に解析した超有名論文)

