網絡小故事 2 · 入門

八爪的前輩Hub(集線器)與 Collision(碰撞)

如果大家同時說話,會發生什麼事?

主角:八爪、小比、阿帕教授閱讀時間約 10 分鐘

建議先讀:小故事 1「Switch 入門」

1. 故事

按「下一步」一步一步看。每一步都有一位角色出場,解釋自己正在做什麼。

序幕:溫習一下

第 1 步/共 13 步

八爪今天怎樣送貨

還記得我嗎?我是 Switch(交換器)。我看 Frame(訊框)上收件人的 MAC Address(硬體位址),認識的話,就只送到那一個 Port(連接埠)。

動畫文字版(全部步驟)
  1. 序幕:溫習一下
  2. 八爪今天怎樣送貨 八爪:還記得我嗎?我是 Switch(交換器)。我看 Frame(訊框)上收件人的 MAC Address(硬體位址),認識的話,就只送到那一個 Port(連接埠)。
    • 詳細內容:網絡小故事 1「八爪上班第一天」
  3. 第一幕:Hub 的年代
  4. 阿帕教授的時光機 阿帕教授:在很久很久以前……其實是 1990 年代,大部分 LAN(區域網絡)還未有八爪。那時大家把網線接到一部叫 Hub(集線器) 的盒子上。
    • 1973 年:Ethernet(以太網)誕生,最初所有電腦共用一條同軸電纜
    • 1990 年:10BASE-T 標準出現,可以用雙絞網線接 Hub
  5. Hub 不看名牌 小比:阿麥要寄相片給桌面電腦。Hub 完全不看我背包上的 MAC Address,只是把收到的電子訊號放大,再從所有其他 Port 送出去。
    • Hub 只處理電子訊號,所以是 Layer 1(第一層)設備
    • 它不會學習,也沒有 MAC Address Table(MAC 位址表)
  6. 電視收到不屬於自己的信 小比:電視也收到我了。它看看收件人:00:00:5E:00:53:04,不是自己,只好把我丟掉。每一個 Frame 都要這樣檢查一次,白白浪費時間。
  7. 大家共用一條線 阿帕教授:接在 Hub 上的裝置,其實好像共用同一條線路。所以同一時間,只可以有一部裝置說話;一部在送,其他就要等。
    • 這種「只能輪流送或收」的模式叫 Half-duplex(半雙工),好像對講機
    • 10 Mbps 的 Hub:所有裝置一起分享這 10 Mbps
  8. 砰!撞車了 小比:糟糕!阿麥和電視同時傳送。兩股訊號在線路上撞在一起,變成誰也看不懂的雜訊。這叫 Collision(碰撞),兩份資料都要重新送。
  9. 先聽後說:CSMA/CD 阿帕教授:工程師想出一套規則,叫 CSMA/CD(載波偵聽多重存取/碰撞偵測):傳送前先聽;線路空閒才開始;一邊送一邊聽,發現撞車就立即停下。
    • ① Carrier Sense(載波偵聽):先聽有沒有人在說話
    • ② Multiple Access(多重存取):空閒時大家都可以說
    • ③ Collision Detection(碰撞偵測):撞車就發出 Jam Signal(干擾訊號),通知大家
  10. 各自等一段隨機時間 小比:撞車後,阿麥和電視各自等一段隨機的時間再試。因為等待時間不同,這次阿麥先送,電視聽到線路有人用,就耐心再等。
    • 這段隨機等待叫 Backoff(退避)
    • 撞車次數越多,可以選擇的等待時間範圍就越大
    • 裝置越多,撞車越頻繁,網絡就越慢
  11. 第二幕:八爪接班
  12. 每個 Port 一條行車線 八爪:後來,我們 Switch 越來越便宜,就取代了 Hub。我每個 Port 都是獨立的行車線,只把 Frame 送到收件人那個 Port,所以兩部電腦同時傳送也不會撞車。
  13. 一邊送,一邊收 八爪:裝置直接接在我的 Port 上,還可以同時送和收,好像打電話一樣,這叫 Full-duplex(全雙工)。既然不會撞車,CSMA/CD 就可以休息了。
    • Half-duplex(半雙工):輪流送或收,像對講機(Hub)
    • Full-duplex(全雙工):同時送和收,像電話(Switch)
  14. 撞車的範圍:Collision Domain 八爪:一群「同時說話就會撞車」的裝置,叫一個 Collision Domain(碰撞域)。接在 Hub 上的全部裝置是 1 個;接在我身上,每個 Port 各自是 1 個。
    • Hub + 3 部電腦:1 個 Collision Domain
    • Switch + 3 部電腦:3 個 Collision Domain
  15. 可是 Broadcast 仍然人人有份 小比:留意:收件人是 Broadcast(廣播)的話,八爪一樣會送到所有 Port。一個 Broadcast 可以去到的範圍,叫 Broadcast Domain(廣播域)。Hub 和 Switch 都不會把它分開。
    • 要分開 Broadcast Domain,要靠 Router(路由器)或 VLAN(虛擬區域網絡),之後的故事會講
  16. 總結:前輩退休了 阿帕教授:Hub 簡單又便宜,陪伴了早期的 LAN 很多年。但它令大家共用線路、常常撞車。今天的網絡幾乎全部改用 Switch,Hub 已經光榮退休了。
    • Hub:Layer 1,送到所有 Port,共用線路,會 Collision
    • Switch:Layer 2,只送到正確 Port,每個 Port 獨立,不會 Collision
    • 兩者都不會分開 Broadcast Domain

2. 問題在哪裡

想像一間課室,只有一位同學可以說話。如果兩位同學同時開口,大家就什麼也聽不清楚,要兩個人都重新說一次。

接在 Hub(集線器)上的電腦,就是這樣的情況:

  • 人人都收到。 Hub 把每一個 Frame(訊框)送到所有其他 Port(連接埠),每部電腦都要檢查一次,不是給自己的就丟掉。
  • 大家輪流說話。 所有裝置共用同一條「線路」,同一時間只可以有一部裝置傳送。
  • 同時說話就撞車。 兩部裝置一起傳送,訊號會撞在一起,變成雜訊。這叫 Collision(碰撞),兩份資料都要重新送。

裝置越多,撞車越頻繁,大家分到的速度就越少。

3. 網絡怎樣解決

第一步:定下說話規矩。 好像開會時「先聽,沒人說話才開口;撞到就停,各自等一會再說」。這套規矩叫 CSMA/CD(載波偵聽多重存取/碰撞偵測),令共用線路勉強可以運作。

第二步:換成 Switch(交換器)。 八爪替每部裝置開一條獨立的行車線,只把 Frame 送到收件人的 Port。大家各行各路,自然不會撞車。

今天的有線網絡幾乎全部用 Switch,Hub 已經退休了。

4. 看深一點

Hub 是 Layer 1(第一層)設備

Hub 不看 MAC Address(硬體位址),也沒有 MAC Address Table(MAC 位址表)。它只做一件事:把從一個 Port 收到的電子訊號放大,再從所有其他 Port 送出去。所以 Hub 又叫「多埠中繼器」。

因為它只處理電子訊號,不理解 Frame 的內容,業界把它稱為 Layer 1(第一層)設備。Switch 看 MAC Address,是 Layer 2(第二層)設備。

一點歷史

年份 發生了什麼事
1973 年 Ethernet(以太網)誕生,最初所有電腦共用一條同軸電纜
1990 年 10BASE-T 標準出現,可以用雙絞網線把電腦接到 Hub
1990 年代中後期 Switch 價錢下降,開始取代 Hub
今天 新的 Ethernet 設備只用 Switch,Hub 幾乎絕跡

留意:無論是一條同軸電纜,還是一部 Hub,接在上面的裝置都是共用同一條線路。

CSMA/CD 的三個部分

部分 意思 開會時的比喻
Carrier Sense(載波偵聽) 傳送前先聽線路上有沒有訊號 先聽有沒有人在說話
Multiple Access(多重存取) 線路空閒時,每部裝置都可以開始傳送 沒人說話,誰都可以開口
Collision Detection(碰撞偵測) 一邊送一邊聽;發現撞車就停下,並發出 Jam Signal(干擾訊號) 撞到就停,並說一聲「撞到了!」

撞車之後:Backoff(退避)

撞車後,每部裝置各自等一段隨機的時間,才再試一次。這段等待叫 Backoff(退避)。

  • 等待時間以「時槽」計算。10 Mbps 的 Ethernet,一個時槽大約是 51.2 微秒。
  • 第 1 次撞車,在 0 至 1 個時槽之間隨機選;第 2 次,在 0 至 3 個之間選;之後每撞一次,範圍大約加倍(最多到 0 至 1023)。
  • 撞車 16 次仍然失敗,就放棄這個 Frame。

隨機的好處是:兩部裝置很大機會選到不同的時間,下一次就不會再撞在一起。

Half-duplex(半雙工)與 Full-duplex(全雙工)

模式 意思 比喻 用在
Half-duplex(半雙工) 同一時間只可以送或收 對講機 Hub
Full-duplex(全雙工) 可以同時送和收 電話 直接接在 Switch 上的裝置

用 Full-duplex 時根本不會撞車,所以 CSMA/CD 不用再運作。

Collision Domain(碰撞域)與 Broadcast Domain(廣播域)

  • Collision Domain(碰撞域):一群「同時傳送就會撞車」的裝置。
  • Broadcast Domain(廣播域):一個 Broadcast(廣播)Frame 可以去到的範圍,即收件人是 FF:FF:FF:FF:FF:FF 時會收到的所有裝置。
設備 接 3 部電腦時的 Collision Domain Broadcast Domain
Hub 1 個 1 個
Switch 3 個(每個 Port 一個) 1 個
Router(路由器) 每個介面各自一個 每個介面各自一個

Switch 分開了 Collision Domain,但沒有分開 Broadcast Domain。要把 Broadcast 攔住,要靠 Router 或 VLAN(虛擬區域網絡),之後的故事會講。

5. 動手試試

任務:分辨對講機和電話

  1. 回想用對講機說話:要按著按鈕才可以說,說完放手才可以聽。這就是 Half-duplex。
  2. 再想想打電話:兩個人可以同時說話,雖然不禮貌,但聲音不會「撞壞」。這就是 Full-duplex。
  3. 如果你用電腦,可以在網絡設定中找找「速度與雙工」(名稱視乎作業系統而定),看看你的網線連線是不是「Full Duplex」。

小互動

這是 Hub 還是 Switch?

把以下每一項,分到 Hub(集線器)或 Switch(交換器):

  1. 1收到的每一個 Frame 都一律送到所有其他 Port

  2. 2會記住每個 MAC Address 在哪個 Port

  3. 3接在上面的裝置要用 CSMA/CD

  4. 4每個 Port 是一個獨立的 Collision Domain

  5. 5裝置可以用 Full-duplex 同時送和收

  6. 6屬於 Layer 1 設備

6. 比喻的極限

  • Hub 沒有「複製」小比。 Hub 只是把收到的電子訊號即時放大,從所有 Port 送出;它連 Frame 從哪裡開始、到哪裡結束也不理會。
  • 撞車不是兩個包裹相撞。 Collision 是兩股電子訊號在同一條線上疊加,變成無法讀懂的波形,不會有東西「撞爛」。
  • 隨機等待不是真的「耐心」。 裝置只是按規則抽一個隨機數字,再等那麼多個時槽,完全是機械式的計算。
  • Wi-Fi(無線網絡)也會「撞車」,但做法不同。 無線裝置無法一邊送一邊聽,所以不用 CSMA/CD,而是用另一套「盡量避免撞車」的方法(小故事 4 會講 Wi-Fi)。
  • Switch 不是完全不會塞車。 Switch 每個 Port 不會 Collision,但如果很多裝置同時送資料給同一個 Port,資料仍然要排隊,太多時也會被丟棄。

7. 小測驗

第 1 題,共 3 題Hub 收到一個 Frame,會怎樣做?
第 2 題,共 3 題兩部接在同一部 Hub 的電腦同時傳送資料,會發生什麼事?
第 3 題,共 3 題一部 Switch 接著 5 部電腦,有多少個 Collision Domain 和 Broadcast Domain?

8. 重點筆記

  • Hub(集線器)是 Layer 1(第一層)設備:不看 MAC Address,把訊號送到所有其他 Port,大家共用線路。
  • 共用線路上兩部裝置同時傳送,就會發生 Collision(碰撞);CSMA/CD 規定「先聽後說、撞車就停、隨機等待再試」。
  • Switch(交換器)每個 Port 獨立,可以用 Full-duplex(全雙工)同時送和收,所以不會 Collision。
  • Hub 全部 Port 是 1 個 Collision Domain(碰撞域);Switch 每個 Port 各自 1 個。
  • Hub 和 Switch 都不會分開 Broadcast Domain(廣播域)。

延伸閱讀

Hub 已經退休,八爪接班後,大家終於不用再撞車了。不過,八爪只認得 MAC Address;阿麥如果只知道電視的 IP Address(網絡位址),要怎樣寫收件人?下一個故事,阿麥會在 LAN(區域網絡)裡大叫一聲:「誰是 192.168.1.11?」這就是 ARP(位址解析協定)。