資料鏈結層#

資料鏈結層(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:xx

ARP 的精髓就是「吼」:不知道對方 MAC 位址時,向整個區域網廣播詢問,對方收到後回覆。

ARP 快取#

為了避免每次都廣播,設備會維護 ARP 快取:

# Linux 查看 ARP 快取
arp -a
ip neigh show

# Windows 查看 ARP 快取
arp -a
ARP 快取特性
  • 有過期時間:通常幾分鐘到幾小時
  • 動態更新:設備上下線或 IP 變化時更新
  • 可手動清除arp -dip 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
    end

MAC 位址表範例:

MAC 位址
aa:bb:cc:11:22:33Port 1
aa:bb:cc:44:55:66Port 3
aa:bb:cc:77:88:99Port 5

表項有過期時間,會定期刷新。

STP 生成樹協定#

環路問題#

當多個交換機互聯形成環路時,會導致:

  1. 廣播風暴:廣播包無限循環
  2. MAC 表震盪:同一 MAC 位址在不同埠間跳動
  3. 網路癱瘓:資源被耗盡

STP 解決方案#

STP(Spanning Tree Protocol) 透過選舉和阻塞,將有環的圖變成無環的樹:

有環路的網路:

flowchart LR
    A[交換機A] --- B[交換機B]
    B --- C[交換機C]
    C --- A

STP 處理後(樹狀):

flowchart LR
    A[交換機A] --- B[交換機B]
    A --- C[交換機C]
    C -. "阻塞" .- B
STP 核心概念
  • Root Bridge(根橋):整個網路的「老大」,由優先級決定
  • Designated Bridge(指定橋):連接下游設備的橋
  • BPDU:橋協定資料單元,用於交換資訊
  • 優先級向量:決定誰當老大的依據

交換機 MAC 表的學習、老化與環路防護#

前面介紹了交換機的基本學習機制,這一節深入它的三個核心動作、MAC 表為何要「老化」,以及為何二層網路天生怕環路。理解這些取捨,才能在採購與組網時做對選擇。

學習、轉送、泛洪三動作#

交換機處理每一個進來的資料幀,本質上只做三件事:

  • 學習(Learning):讀取幀的來源 MAC,記錄「此 MAC 位於哪個埠」,寫入 MAC 表。
  • 轉送(Forwarding):查 MAC 表,若目標 MAC 已知,只從對應埠送出,其他埠完全收不到——這正是交換機與 Hub 的本質差異。
  • 泛洪(Flooding):若目標 MAC 未知(或是廣播/多播位址),則向除來源埠以外的所有埠送出,等對方回覆後再「學會」它。
sequenceDiagram
    participant A as 設備A (Port 1)
    participant SW as 交換機
    participant B as 設備B (Port 3)
    participant ALL as 其他埠

    A->>SW: 幀(來源 MAC-A,目標 MAC-B)
    Note over SW: 學習:MAC-A → Port 1
    alt 目標 MAC-B 在表中
        SW->>B: 轉送:只送 Port 3
    else 目標 MAC-B 未知
        SW->>ALL: 泛洪:送往所有其他埠
        B->>SW: 回覆(來源 MAC-B)
        Note over SW: 學習:MAC-B → Port 3
    end

泛洪只在「不知道目標在哪」時發生,是一種臨時手段。一旦雙方都通訊過、各自被學習進表,後續流量就會精確轉送,不再打擾無關埠。

MAC 表為何要老化#

MAC 表項並非永久有效,而是有老化時間(aging time,預設常見約 300 秒)。每當某 MAC 再次出現流量,計時器重置;若一段時間沒有任何流量,表項被刪除。這個設計是必要的取捨:

  • 設備可能換埠、下線或更換網卡,舊的對應關係若不清除,會把流量送往錯誤的埠。
  • MAC 表容量有限,老化可回收長期不活躍的表項。
老化時間設定取捨
太短表項頻繁失效,泛洪增多,浪費頻寬
太長設備遷移後仍按舊紀錄轉送,造成短暫不可達
預設約 300 秒兼顧穩定性與適應性,多數場景無需調整

L2 vs L3 交換機怎麼選#

維度二層(L2)交換機三層(L3)交換機
轉送依據MAC 位址MAC + IP,可做路由
跨網段不行,需外接路由器可在 VLAN / 網段間直接路由
效能純硬體轉送,極快硬體路由,接近線速
成本較低較高
適用接入層、單一廣播域匯聚/核心層、多 VLAN 互通

選擇原則:若只需在同一廣播域內連接終端,用 L2 即可;一旦要讓多個 VLAN/網段彼此通訊,又不想讓流量繞到外部路由器,就該用 L3 交換機在內部直接路由。

環路、廣播風暴與 RSTP 收斂#

二層網路沒有像 IP 那樣的 TTL 機制,一旦交換機之間形成環路,廣播幀會被無限泛洪、繞圈放大,瞬間吃光頻寬,即廣播風暴。這也是必須有 STP/RSTP 的根本原因(STP 機制見上一節)。

RSTP(Rapid Spanning Tree Protocol)是 STP 的改良版,主要解決收斂太慢的痛點:

維度STPRSTP
收斂時間數十秒通常 1 秒內
埠角色較少新增備援埠、邊緣埠等角色
拓撲變化被動等待計時器逾時主動快速協商、立即切換

環路最危險之處在於「悄無聲息」:一條被誤接的網線、一個沒開 STP 的非網管交換機,就可能在數秒內讓整個廣播域癱瘓。接入層的面向終端埠應啟用 BPDU 防護與邊緣埠(PortFast),避免使用者私接設備引發風暴。

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虛擬隔離,解決廣播和安全問題