資料鏈結層#
資料鏈結層(Data Link Layer)是 OSI 模型的第二層,負責在相鄰節點之間傳輸資料幀。本章涵蓋 MAC 層、ARP 協定、交換機學習機制和 VLAN 技術。
MAC 位址與 MAC 層#
MAC 位址是網卡出廠時燒入的物理識別碼,共 6 個位元組,以十六進制表示(如 fa:16:3e:c7:79:75)。前 3 位元組是廠商代碼(OUI),後 3 位元組是廠商自行分配的序號。
MAC 全名 Medium Access Control(媒體存取控制)。當多台電腦透過 Hub(集線器)連接時,會面臨三個關鍵問題:
| 問題 | 解決方案 |
|---|---|
| 誰該接收 | MAC 位址標示 |
| 誰先發送 | 多路存取控制 |
| 錯誤檢測 | CRC 循環冗餘檢測 |
多路存取控制方式#
- 通道劃分:每個設備專用通道(類似多車道)
- 輪流協定:輪流使用(類似單雙號限行)
- 隨機接入:先發先佔,衝突後重試(乙太網路採用此方式)
乙太網路幀結構#
乙太網路(Ethernet)是最常見的區域網技術,其幀結構如下:
0 15 16 31
+----------------------+----------------------+
| 目標 MAC 位址(6 位元組) |
+----------------------+----------------------+
| 來源 MAC 位址(6 位元組) |
+----------------------+----------------------+
| 類型(2位元組)| 資料(46-1500 位元組) |
+----------------------+----------------------+
| CRC(4 位元組) |
+----------------------+----------------------+| 欄位 | 說明 |
|---|---|
| 目標 MAC | 標示接收方 |
| 來源 MAC | 標示發送方 |
| 類型 | 指明上層協定(如 0x0800 表示 IP) |
| CRC | 用於錯誤檢測 |
ARP 協定#
工作原理#
ARP(Address Resolution Protocol) 用於將 IP 位址解析為 MAC 位址。
sequenceDiagram
participant S as 發送方
participant N as 所有設備
participant R as 目標設備
S->>N: ARP 廣播:誰是 192.168.1.2?
Note over N: 只有目標設備回覆
R->>S: ARP 回覆:我是,MAC 是 xx:xxARP 的精髓就是「吼」:不知道對方 MAC 位址時,向整個區域網廣播詢問,對方收到後回覆。
ARP 快取#
為了避免每次都廣播,設備會維護 ARP 快取:
# Linux 查看 ARP 快取
arp -a
ip neigh show
# Windows 查看 ARP 快取
arp -aARP 快取特性
- 有過期時間:通常幾分鐘到幾小時
- 動態更新:設備上下線或 IP 變化時更新
- 可手動清除:
arp -d或ip neigh flush
交換機工作原理#
Hub vs 交換機#
| 設備 | 工作層級 | 轉發方式 | 智慧程度 |
|---|---|---|---|
| Hub(集線器) | 物理層 | 廣播到所有埠 | 無 |
| 交換機 | 資料鏈結層 | 根據 MAC 表精確轉發 | 有學習能力 |
交換機學習機制#
交換機透過「學習」建立 MAC 位址表:
- 步驟 1:收到封包,記錄來源 MAC 和埠的對應關係
- 步驟 2:查找目標 MAC,若找到則精確轉發,否則廣播
- 步驟 3:重複以上過程,逐漸完善 MAC 表
sequenceDiagram
participant A as 設備A
participant SW as 交換機
participant B as 設備B
participant ALL as 其他所有設備
A->>SW: 發送資料幀(來源 MAC: A)
Note over SW: 記錄 MAC-A 對應 Port 1
SW->>SW: 查詢 MAC 位址表:目標 MAC 是否已知?
alt 目標 MAC 已知
SW->>B: 精確轉發至對應埠
else 目標 MAC 未知
SW->>ALL: 廣播(泛洪)至所有其他埠
B->>SW: 回覆(來源 MAC: B)
Note over SW: 記錄 MAC-B 對應 Port 3
endMAC 位址表範例:
| MAC 位址 | 埠 |
|---|---|
| aa:bb:cc:11:22:33 | Port 1 |
| aa:bb:cc:44:55:66 | Port 3 |
| aa:bb:cc:77:88:99 | Port 5 |
表項有過期時間,會定期刷新。
STP 生成樹協定#
環路問題#
當多個交換機互聯形成環路時,會導致:
- 廣播風暴:廣播包無限循環
- MAC 表震盪:同一 MAC 位址在不同埠間跳動
- 網路癱瘓:資源被耗盡
STP 解決方案#
STP(Spanning Tree Protocol) 透過選舉和阻塞,將有環的圖變成無環的樹:
有環路的網路:
flowchart LR
A[交換機A] --- B[交換機B]
B --- C[交換機C]
C --- ASTP 處理後(樹狀):
flowchart LR
A[交換機A] --- B[交換機B]
A --- C[交換機C]
C -. "阻塞" .- BSTP 核心概念
- Root Bridge(根橋):整個網路的「老大」,由優先級決定
- Designated Bridge(指定橋):連接下游設備的橋
- BPDU:橋協定資料單元,用於交換資訊
- 優先級向量:決定誰當老大的依據
VLAN 虛擬區域網#
為什麼需要 VLAN#
當網路規模變大時會出現:
- 廣播風暴:廣播包影響所有設備
- 安全問題:敏感資訊可能被其他部門截獲
VLAN 工作原理#
VLAN 透過在二層頭部添加 802.1Q 標籤 實作虛擬隔離:
原始乙太網路幀:
┌──────────┬──────────┬──────┬───────┬─────┐
│ 目標MAC │ 來源MAC │ 類型 │ 資料 │ CRC │
└──────────┴──────────┴──────┴───────┴─────┘
802.1Q 標籤幀:
┌──────────┬──────────┬────────────┬──────┬───────┬─────┐
│ 目標MAC │ 來源MAC │ VLAN TAG │ 類型 │ 資料 │ CRC │
└──────────┴──────────┴────────────┴──────┴───────┴─────┘
│
└── 包含 12 位 VLAN ID(可標示 4096 個 VLAN)VLAN 設定要點#
| 埠類型 | 功能 | 應用場景 |
|---|---|---|
| Access | 只屬於一個 VLAN | 連接終端設備 |
| Trunk | 可傳輸多個 VLAN | 交換機之間連接 |
VLAN ID 限制:12 位只能支援 4096 個 VLAN,對於大規模雲端運算場景不夠用,需要使用 VXLAN 等擴展技術。
實際應用場景#
場景一:宿舍組網#
# 兩台電腦直連需要交叉線(或現代網卡支援自動識別)
# 設定同一網段的 IP
電腦A: 192.168.1.1/24
電腦B: 192.168.1.2/24場景二:辦公室網路#
┌─────────┐
│ 核心交換機 │
└────┬────┘
┌─────────────┼─────────────┐
│ │ │
┌──────┴──────┐ ┌────┴────┐ ┌──────┴──────┐
│ VLAN10(研發) │ │VLAN20(HR)│ │VLAN30(財務) │
└─────────────┘ └─────────┘ └─────────────┘常用指令#
# Linux 查看網卡資訊
ip link show
ethtool eth0
# 查看 ARP 表
arp -a
ip neigh show
# 查看網橋/VLAN(若有設定)
bridge link show
cat /proc/net/vlan/config本章小結#
| 概念 | 關鍵點 |
|---|---|
| MAC 層 | 解決多路存取問題,使用 MAC 位址標示設備 |
| ARP | 透過廣播將 IP 位址解析為 MAC 位址,結果會快取 |
| 交換機 | 二層設備,具有 MAC 學習能力,精確轉發 |
| STP | 破除環路,將圖變成樹 |
| VLAN | 虛擬隔離,解決廣播和安全問題 |