はじめに
本記事は、Coursera の Network Systems Foundations モジュール「Link Layer」で学んだ内容を整理した学習記録です。
リンク層とは?
ネットワークは ノード間を結ぶリンク(有線・無線)から成り立ちます。
リンク層はその上で通信を正しく行うための最下層プロトコル群であり、物理層の信号をデータ単位(フレーム)として扱う役割を担います。
リンク層が解決する 4 つの問題
-
データの構造化 (Framing)
- 0/1 の列を「誰宛か」「どこまでがデータか」「どう解釈するか」が分かる構造にする。
-
エラー検出・訂正 (Error Detection & Correction)
- 伝送中にビットが壊れた場合に検出し、再送などで回復を試みる。
-
共有媒体の調整 (Medium Access Control)
- 複数ノードが同じチャネルを使うとき、衝突を避けるルールを設ける。
-
LAN への拡張 (Local Area Network)
- 複数のリンクを接続して、スケーラブルなネットワークを構築する。
フレーム化 (Framing)
リンク層ではビット列を フレーム (Frame) という単位で扱います。
フレームは以下のような要素を持ちます:
- Header: 宛先・送信元・種類などのメタ情報
- Payload: 実際に運びたいデータ
- Trailer: エラー検出用の情報(例: CRC)
Ethernet フレーム例
| フィールド | 説明 |
|---|---|
| Destination | 宛先 MAC アドレス (48bit) |
| Source | 送信元 MAC アドレス (48bit) |
| Type | 上位プロトコル識別 (例: IPv4=0x0800) |
| Data | ペイロード |
| FCS | フレームチェックシーケンス (CRC32) |
アドレッシング (Addressing)
-
MAC アドレス: 48bit の物理アドレス。
通常は11:22:33:AA:BB:CCの形式で表記され、OUI(ベンダーコード)+製造番号で構成されます。-
ブロードキャスト:
FF:FF:FF:FF:FF:FF - マルチキャスト: 最上位ビットが 1 のアドレス範囲
-
ブロードキャスト:
エラー検出・訂正 (Error Detection & Correction)
パリティビット
- データ中の 1 の数を偶数(または奇数)に揃えるように 1 ビットを追加する。
- 偶数パリティ: 10000000 → 100000001
- 奇数パリティ: 10000000 → 100000000
- 単一ビット誤りの検出が可能だが、多ビット誤りは検出できない。
CRC (Cyclic Redundancy Check)
CRC(巡回冗長検査)は、mod 2(XOR)除算を用いて誤りを検出する方式です。
1) 基本アイデア(多項式による表現)
- 送信したデータが壊れていないかを確認するため、データに余分なビット(CRC ビット)を付加
- D: 送信データ
- G: イーサネット規格で定義されている、r+1 ビットの生成多項式
- R: の余り
送信側
- D に r 個の 0 を追加
- これを G で mod 2 除算し、余り R を得る
- 送信側はを送信データとする(D の後ろに Rwo つけたデータを送信)
受信側
- を受信
- を同じ G で割り、余りが 0 ならエラーなし。
- 余りが 0 以外なら伝送中に誤りが発生している。
💡 mod 2 除算とは、繰り下がり・繰り上がりのない計算であり、「1+1=0」。
足し算・引き算は XOR として処理します。
具体例
・データ D = 11101010、生成多項式 G = 1010(長さ 4 なので r=3)
- D に
000を追加 →11101010000 -
1010を使って XOR による割り算を行う - 余り R =
010 - 送信データ
<D,R>=11101010010
受信側で <D,R> を 1010 で割ると、余りは 0 となり正常。
📘 手計算による CRC 求め方(クリックで展開)
mod 2 除算の具体例(D=11101010, G=1010)
データ ( D = 11101010 )、生成多項式 ( G = 1010 )(長さ 4、したがって (r = 3))の CRC 計算
送信側では、まず (D) の末尾に (r = 3) ビットの 0 を追加します。
被除数: 11101010 000
除数 : 1010
mod 2 除算の筆算イメージ(例:D=11011101, G=1010)
11011101
1010 ) 11101010000
1010
----
1001
1010
----
1101
1010
----
1110
1010
----
1000
1010
----
1000
1010
----
1000
1010
----
010 ← 余り (R)
結果:
余り ( R = 010 )
検算(受信側)
受信側は <D,R> = 11101010100 を同じ 1010 で割る。
余りが 0 になれば、伝送誤りなし。
11101010100 ÷ 1010 = 余り 000
→ 正常
2) 誤り検出能力
CRC では以下の特性が得られます:
- すべての 1 ビット誤りを検出
- すべての 隣接した 2 ビット誤りを検出
- 奇数個のビット誤りを検出
- 長さ 32 ビット以下の全バースト誤りを検出
媒体アクセス制御 (MAC: Medium Access Control)
複数ノードが同一チャネルを共有する場合、どのタイミングで送信するかを制御する必要があります。
代表的方式
| 分類 | 方式 | 概要 |
|---|---|---|
| Channel Partitioning | TDMA | 時間スロットをノードごとに割り当てる |
| 〃 | FDMA | 周波数帯域を分割して割り当て |
| Random Access | CSMA/CD | jam 信号で衝突を検出 >Ethernet で使用される |
| Random Access | CSMA/CA | 衝突を回避(RTS/CTS、ACK 利用) 再送はバックオフ時間を置いて再送 ※バックオフ時間はランダムに選ばれる Wi-Fi で使用される |
🔹 CSMA は送信前にチャネルを監視し、空いている場合のみ送信
LAN の拡張
Ethernet スイッチ
- MAC アドレスに基づいて転送先ポートを決定する。
- MAC アドレステーブルを動的に学習し、宛先が不明な場合はフラッディング。
- MAC アドレスは完全一致で検索
ループ防止
- スイッチ間でループがあるとブロードキャストが無限循環(ブロードキャストストーム)を引き起こす。
- 解決策: スパニングツリープロトコル (STP) により論理的にツリー構造を形成する。
無線 LAN (Wi-Fi)
- アクセスポイント (AP) が中継し、すべての通信は AP 経由で行われる。
参考文献
- Coursera:Network Systems Foundations