Learning Objectives
- 說出乙太網路訊框的欄位與大小,以及最小 64、最大 1,518 位元組的由來
- 讀懂 MAC 位址:48 位元、前 24 位元的 OUI、廣播位址,以及本機管理的位址
- 比較集線器與交換器,說明交換器怎麼從來源 MAC 學出 MAC 表
- 說明交換器遇到廣播與未知單播時為什麼要泛洪
- 分辨碰撞網域與廣播網域,並數出一個拓撲有幾個
區域網路裡的最後一段路
上一課看到,封包在每一段連線上都會被包進一個訊框(frame)。不管封包要跨越多少個網路, 每一段實際的傳送都是連結層的工作:從你的電腦到交換器、從交換器到路由器,都是在同一個區域網路(LAN)裡把訊框送到下一站。
今天幾乎所有有線的區域網路都用乙太網路(Ethernet,標準是 IEEE 802.3),宿舍牆上的網路孔、機房裡成排的交換器都是。 這一課回答兩個問題:訊框裡寫了什麼?交換器怎麼知道要把訊框往哪個埠送?計算機概論的「區域網路」那一課看過整體的樣子,這裡看細節。
訊框的結構:
| 欄位 | 位元組 | 用途 |
|---|---|---|
| 前置碼與起始符號 | 7 + 1 | 讓接收端對準時脈;通常不算在訊框長度裡 |
| 目的 MAC | 6 | 要給誰 |
| 來源 MAC | 6 | 誰送的 |
| 類型(EtherType) | 2 | 裡面裝的是什麼:0x0800 是 IPv4、0x0806 是 ARP、0x86DD 是 IPv6 |
| 資料 | 46~1,500 | 上一層的封包;不到 46 就補 0 |
| FCS | 4 | CRC-32 檢查碼;接收端重算對不上,就把訊框丟掉 |
所以一個訊框(從目的 MAC 算到 FCS)最小 6 + 6 + 2 + 46 + 4 = 64 位元組,最大 6 + 6 + 2 + 1,500 + 4 = 1,518 位元組。 資料部分最多 1,500 位元組,這個上限叫 MTU。注意乙太網路只檢查錯誤、不負責重送:壞掉的訊框直接丟掉,要不要重送由上面的層決定。
MAC 位址
MAC 位址是網路介面的硬體位址,長 48 位元(6 位元組),通常寫成 12 個十六進位數字,例如 3c:22:fb:5a:10:07。
| 部分 | 長度 | 意思 |
|---|---|---|
| 前 3 位元組 | 24 位元 | OUI(組織唯一識別碼):IEEE 分配給製造商的編號 |
| 後 3 位元組 | 24 位元 | 製造商自己編給每張網路卡的序號 |
第一個位元組裡有兩個特別的位元:
- 最低位元(I/G):0 表示單播(給一個介面),1 表示群播(給一群介面)。
- 次低位元(U/L):0 表示廠商燒在網路卡裡、全球唯一的位址;1 表示本機管理的位址,由軟體或管理者設定。 手機為了隱私,連 Wi-Fi 時常用隨機產生的 MAC,就屬於這一種。
這一軌的模擬網路裡,MAC 都長得像 02:00:00:00:01:01:第一個位元組 0x02 = 二進位 0000 0010,次低位元是 1,是本機管理的位址,不屬於任何真實廠商。
全部是 1 的 ff:ff:ff:ff:ff:ff 是廣播位址:同一個區域網路裡的每一台都要收下。ARP 問「誰是 192.168.1.20?」就是用廣播送的。
MAC 位址只在同一個區域網路裡有意義。封包跨過路由器時,路由器會換上新的訊框,來源與目的 MAC 都會換掉(上一課看過);IP 位址才是一路不變的。
集線器與交換器
早期的區域網路用集線器(hub)。集線器只是第 1 層的訊號放大器:從一個埠進來的訊號,原封不動送到所有其他埠。 所有電腦共用同一條「線」,同一時間只能有一台在送,兩台同時送就會碰撞,雙方都要等一下再重送(這套規則叫 CSMA/CD)。
交換器(switch)是第 2 層設備,會讀訊框的 MAC 位址,只把訊框送到需要的那個埠。它靠一張 MAC 表(哪個 MAC 在哪個埠)決定,而這張表是自己學出來的:
- 學習:訊框從某個埠進來,就把「來源 MAC → 這個埠」記進 MAC 表。
- 查表:看目的 MAC。表裡有,就只從那個埠送出(同一個埠進出就不送)。
- 泛洪(flooding):目的是廣播位址,或目的 MAC 不在表裡(叫未知單播),就從進來的埠以外的所有埠各送一份。
- 老化:一筆紀錄太久沒被更新就刪掉(IEEE 802.1D 建議預設 300 秒),設備搬走時表才不會一直錯下去。
| 集線器 | 交換器 | |
|---|---|---|
| 處理到 | 第 1 層(訊號) | 第 2 層(MAC 位址) |
| 收到訊框 | 送到所有埠 | 查 MAC 表,只送到對的埠 |
| 同時傳送 | 全部共用,會碰撞 | 每個埠各自獨立,可以全雙工同時收送 |
| 今天 | 幾乎已淘汰 | 所有區域網路的標準設備 |
交換器剛開機時 MAC 表是空的,所以一開始什麼都泛洪;等每台電腦都送過東西,就幾乎都能精準轉送。
碰撞網域與廣播網域
兩個常被拿來比較的範圍:
- 碰撞網域(collision domain):同時送訊號會互相干擾的範圍。集線器的所有埠是同一個碰撞網域; 交換器的每個埠各自是一個碰撞網域(全雙工的連線實際上不會碰撞)。
- 廣播網域(broadcast domain):一個廣播訊框送得到的範圍。交換器會把廣播泛洪到所有埠,所以交換器不切割廣播網域; 路由器不轉送廣播,它的每個介面是一個廣播網域。
| 設備 | 切割碰撞網域 | 切割廣播網域 |
|---|---|---|
| 集線器 | 否 | 否 |
| 交換器 | 是,每個埠一個 | 否 |
| 路由器 | 是,每個介面一個 | 是,每個介面一個 |
一個廣播網域通常就是一個 IP 網段。下面的拓撲有兩台交換器和一台路由器,看看 ARP 廣播送得到哪裡、送不到哪裡。
小測驗:訊框與 MAC 位址
乙太網路訊框的「類型」欄位是 0x0806,裡面裝的是什麼?
一則 ARP 訊息只有 28 位元組,放進乙太網路訊框後,訊框(從目的 MAC 到 FCS)有多大?
MAC 位址 00:1a:2b:3c:4d:5e 的前 3 個位元組 00:1a:2b 代表什麼?
下列哪一個 MAC 位址是「本機管理」(不是廠商燒錄)的單播位址?
小測驗:交換器與網域
交換器的 MAC 表是怎麼建立的?
交換器收到一個單播訊框,目的 MAC 不在 MAC 表裡,它會怎麼做?
一台 24 埠的集線器接了 20 台電腦。這 20 台電腦屬於幾個碰撞網域、幾個廣播網域?
重點整理
- 乙太網路訊框:目的 MAC、來源 MAC、類型、資料(46~1,500)、FCS;最小 64、最大 1,518 位元組;壞掉的訊框直接丟掉。
- MAC 位址 48 位元,前 24 位元是 OUI;
ff:ff:ff:ff:ff:ff是廣播;第一個位元組的次低位元是 1 表示本機管理的位址。MAC 只在同一個區域網路裡有意義。 - 集線器把訊號送到所有埠;交換器從來源 MAC 學習、依目的 MAC 轉送,廣播與未知單播要泛洪,紀錄會老化。
- 交換器的每個埠是一個碰撞網域;交換器不切割廣播網域,路由器才會。
廣播網域越大,每一台收到的廣播就越多,也越難管理。下一課用 VLAN 把一台交換器切成好幾個廣播網域,並處理備援線路造成的迴圈。