1. 故事
按「下一步」一步一步看。每一步都有一位角色出場,解釋自己正在做什麼。
序幕:溫習一下
第 1 步/共 13 步
八爪今天怎樣送貨
還記得我嗎?我是 Switch(交換器)。我看 Frame(訊框)上收件人的 MAC Address(硬體位址),認識的話,就只送到那一個 Port(連接埠)。
動畫文字版(全部步驟)
- 序幕:溫習一下
- 八爪今天怎樣送貨 八爪:還記得我嗎?我是 Switch(交換器)。我看 Frame(訊框)上收件人的 MAC Address(硬體位址),認識的話,就只送到那一個 Port(連接埠)。
- 詳細內容:網絡小故事 1「八爪上班第一天」
- 第一幕:Hub 的年代
- 阿帕教授的時光機 阿帕教授:在很久很久以前……其實是 1990 年代,大部分 LAN(區域網絡)還未有八爪。那時大家把網線接到一部叫 Hub(集線器) 的盒子上。
- 1973 年:Ethernet(以太網)誕生,最初所有電腦共用一條同軸電纜
- 1990 年:10BASE-T 標準出現,可以用雙絞網線接 Hub
- Hub 不看名牌 小比:阿麥要寄相片給桌面電腦。Hub 完全不看我背包上的 MAC Address,只是把收到的電子訊號放大,再從所有其他 Port 送出去。
- Hub 只處理電子訊號,所以是 Layer 1(第一層)設備
- 它不會學習,也沒有 MAC Address Table(MAC 位址表)
- 電視收到不屬於自己的信 小比:電視也收到我了。它看看收件人:
00:00:5E:00:53:04,不是自己,只好把我丟掉。每一個 Frame 都要這樣檢查一次,白白浪費時間。 - 大家共用一條線 阿帕教授:接在 Hub 上的裝置,其實好像共用同一條線路。所以同一時間,只可以有一部裝置說話;一部在送,其他就要等。
- 這種「只能輪流送或收」的模式叫 Half-duplex(半雙工),好像對講機
- 10 Mbps 的 Hub:所有裝置一起分享這 10 Mbps
- 砰!撞車了 小比:糟糕!阿麥和電視同時傳送。兩股訊號在線路上撞在一起,變成誰也看不懂的雜訊。這叫 Collision(碰撞),兩份資料都要重新送。
- 先聽後說:CSMA/CD 阿帕教授:工程師想出一套規則,叫 CSMA/CD(載波偵聽多重存取/碰撞偵測):傳送前先聽;線路空閒才開始;一邊送一邊聽,發現撞車就立即停下。
- ① Carrier Sense(載波偵聽):先聽有沒有人在說話
- ② Multiple Access(多重存取):空閒時大家都可以說
- ③ Collision Detection(碰撞偵測):撞車就發出 Jam Signal(干擾訊號),通知大家
- 各自等一段隨機時間 小比:撞車後,阿麥和電視各自等一段隨機的時間再試。因為等待時間不同,這次阿麥先送,電視聽到線路有人用,就耐心再等。
- 這段隨機等待叫 Backoff(退避)
- 撞車次數越多,可以選擇的等待時間範圍就越大
- 裝置越多,撞車越頻繁,網絡就越慢
- 第二幕:八爪接班
- 每個 Port 一條行車線 八爪:後來,我們 Switch 越來越便宜,就取代了 Hub。我每個 Port 都是獨立的行車線,只把 Frame 送到收件人那個 Port,所以兩部電腦同時傳送也不會撞車。
- 一邊送,一邊收 八爪:裝置直接接在我的 Port 上,還可以同時送和收,好像打電話一樣,這叫 Full-duplex(全雙工)。既然不會撞車,CSMA/CD 就可以休息了。
- Half-duplex(半雙工):輪流送或收,像對講機(Hub)
- Full-duplex(全雙工):同時送和收,像電話(Switch)
- 撞車的範圍:Collision Domain 八爪:一群「同時說話就會撞車」的裝置,叫一個 Collision Domain(碰撞域)。接在 Hub 上的全部裝置是 1 個;接在我身上,每個 Port 各自是 1 個。
- Hub + 3 部電腦:1 個 Collision Domain
- Switch + 3 部電腦:3 個 Collision Domain
- 可是 Broadcast 仍然人人有份 小比:留意:收件人是 Broadcast(廣播)的話,八爪一樣會送到所有 Port。一個 Broadcast 可以去到的範圍,叫 Broadcast Domain(廣播域)。Hub 和 Switch 都不會把它分開。
- 要分開 Broadcast Domain,要靠 Router(路由器)或 VLAN(虛擬區域網絡),之後的故事會講
- 總結:前輩退休了 阿帕教授: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. 動手試試
任務:分辨對講機和電話
- 回想用對講機說話:要按著按鈕才可以說,說完放手才可以聽。這就是 Half-duplex。
- 再想想打電話:兩個人可以同時說話,雖然不禮貌,但聲音不會「撞壞」。這就是 Full-duplex。
- 如果你用電腦,可以在網絡設定中找找「速度與雙工」(名稱視乎作業系統而定),看看你的網線連線是不是「Full Duplex」。
小互動
這是 Hub 還是 Switch?
把以下每一項,分到 Hub(集線器)或 Switch(交換器):
-
1收到的每一個 Frame 都一律送到所有其他 Port
-
2會記住每個 MAC Address 在哪個 Port
-
3接在上面的裝置要用 CSMA/CD
-
4每個 Port 是一個獨立的 Collision Domain
-
5裝置可以用 Full-duplex 同時送和收
-
6屬於 Layer 1 設備
全部分對了!Hub 是 Layer 1,把訊號送到所有 Port,大家共用線路;Switch 是 Layer 2,按 MAC Address 送貨,每個 Port 獨立。
6. 比喻的極限
- Hub 沒有「複製」小比。 Hub 只是把收到的電子訊號即時放大,從所有 Port 送出;它連 Frame 從哪裡開始、到哪裡結束也不理會。
- 撞車不是兩個包裹相撞。 Collision 是兩股電子訊號在同一條線上疊加,變成無法讀懂的波形,不會有東西「撞爛」。
- 隨機等待不是真的「耐心」。 裝置只是按規則抽一個隨機數字,再等那麼多個時槽,完全是機械式的計算。
- Wi-Fi(無線網絡)也會「撞車」,但做法不同。 無線裝置無法一邊送一邊聽,所以不用 CSMA/CD,而是用另一套「盡量避免撞車」的方法(小故事 4 會講 Wi-Fi)。
- Switch 不是完全不會塞車。 Switch 每個 Port 不會 Collision,但如果很多裝置同時送資料給同一個 Port,資料仍然要排隊,太多時也會被丟棄。
7. 小測驗
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(位址解析協定)。