Mímisbrunnr知恵の泉

← コンピュータネットワーク 一覧

🎓 レベル:基礎 | 重要度:A(必須) 📎 前提:カプセル化とデータの流れ

要点(BLUF)

イーサネットフレームの構造

L2のPDUであるフレームは、おおむね次の並びです。

graph LR
  P["プリアンブル+SFD(同期8B)"]
  DA["宛先MAC(6B)"]
  SA["送信元MAC(6B)"]
  T["タイプ/長さ(2B)"]
  D["ペイロード(46〜1500B)"]
  F["FCS(4B・誤り検査)"]
  P --> DA --> SA --> T --> D --> F

MACアドレスの読み方

48ビットを16進2桁ずつ、6組で表記します(例 00:1A:2B:3C:4D:5E)。前半24ビットと後半24ビットで意味が分かれます。

# MACアドレスの種別を判定する(標準ライブラリのみ)
def classify(mac):
    first = int(mac.split(":")[0], 16)
    if mac.lower() == "ff:ff:ff:ff:ff:ff":
        return "broadcast"
    return "multicast" if (first & 1) else "unicast"

for m in ["00:1A:2B:3C:4D:5E", "01:00:5E:00:00:01", "FF:FF:FF:FF:FF:FF"]:
    print(m, "->", classify(m))

実行結果:

00:1A:2B:3C:4D:5E -> unicast
01:00:5E:00:00:01 -> multicast
FF:FF:FF:FF:FF:FF -> broadcast

01:00:5E... はIPv4マルチキャスト用に予約されたOUIで、先頭バイト 01 の最下位ビットが1なのでマルチキャスト判定になります。

CSMA/CD と全二重への進化

graph TD
  H["ハブ接続(1つのコリジョンドメイン)"]
  H --> N1["全員が衝突を共有→CSMA/CD必須"]
  S["スイッチ接続(ポートごとに分離)"]
  S --> N2["衝突なし→全二重で帯域フル活用"]

「コリジョンドメイン」はスイッチのポートごとに分割され、「ブロードキャストドメイン」はVLAN/ルータで分割されます(次トピック以降)。

なぜMACとIPの両方が要るのか(設計の直観)

MACは「製造時に焼かれた、場所に依らない名前」、IPは「ネットワーク上の住所」。引っ越しても名前は変わりませんが住所は変わる、のと同じです。配送はまず近所(同一LAN内)はMACで、遠方はIPで経路を決めてから各区間をMACで運びます。役割が違うため両方必要なのです。

⚠️ よくある誤解

対応 lab

関連