Learning Objectives
- 說出網路的三種組成:主機、連線與交換設備,以及交換器和路由器各自的角色
- 比較電路交換與封包交換,說明封包交換為什麼適合電腦之間斷斷續續的流量
- 分辨 bps 與 Bps,換算下載時間,並說明吞吐量受最慢的那一段限制
- 說出處理、排隊、傳輸、傳播四種延遲各自取決於什麼,並計算傳輸延遲與傳播延遲
- 說明 RTT 的意思,以及「頻寬大」和「距離近」各在什麼情況下比較重要
打開一個網頁,中間經過了什麼
你在宿舍打開一個網頁,請求要先離開你的電腦,經過房間的網路孔、樓層的設備、學校的機房,再經過網路服務業者的線路, 最後才到達網頁伺服器;回應再沿著類似的路回來。整個過程常常不到 0.1 秒。這一軌要一層一層看清楚:資料怎麼被包裝、怎麼找到路、怎麼確保送到。 計算機概論的「網路基礎」那一課講過整體輪廓,這裡往下深入一層,每一課都會在模擬網路上親手操作。
不管是校園網路還是整個網際網路,都只由三種東西組成:
| 組成 | 是什麼 | 例子 |
|---|---|---|
| 主機(host) | 網路的端點,執行程式、產生與接收資料,也叫終端系統 | 筆電、手機、網頁伺服器、感測器 |
| 連線(link) | 把兩台設備接起來的傳輸媒介 | 網路線(銅線)、光纖、Wi-Fi、行動網路 |
| 交換設備 | 收下資料、決定往哪條線送出去 | 交換器(switch)、路由器(router) |
交換設備有兩種,這一軌會一再用到:
- 交換器:把同一個區域網路(例如一層樓)裡的設備接在一起,依 MAC 位址轉送,第 3 課細講。
- 路由器:把不同的網路接在一起,依 IP 位址決定下一步往哪送,第 9 課細講。
電路交換與封包交換
讓很多人共用線路,有兩種做法。
電路交換(circuit switching)是傳統市內電話的做法:通話前先在路徑上每一段保留一份固定的容量,通話期間這份容量只屬於你, 就算你沉默不說話也一樣佔著;掛斷後才釋放。
封包交換(packet switching)是網際網路的做法:資料切成一個個封包(packet),每個封包帶著目的地址, 和其他人的封包共用線路,誰有資料要送誰就用;線路忙的時候,封包在交換設備裡排隊等候。
| 電路交換 | 封包交換 | |
|---|---|---|
| 開始傳送前 | 先建立連線、保留容量 | 不用,直接送 |
| 線路的使用 | 保留的容量只給一個人,閒置也浪費 | 大家共用,有資料才用 |
| 延遲 | 穩定可預期 | 會隨排隊情況變化 |
| 擁擠時 | 打不進來(忙線),但打進來就有保障 | 大家都變慢,嚴重時封包被丟掉 |
| 適合 | 持續、固定速率的流量(傳統語音) | 斷斷續續、忽多忽少的流量(瀏覽網頁、訊息) |
電腦的流量多半是「突然一大筆、接著很久沒事」:點一下網頁下載一陣,接著讀很久。如果每個人都保留一條電路,大部分時間都閒著; 封包交換讓閒著的容量自動給正在傳的人用,所以同一條線能服務多得多的使用者。
交換設備處理封包的方式叫儲存轉送(store-and-forward):一個封包要整個收完、檢查過,才開始往下一段送。 所以封包是一段一段往前跳的。下面的練習可以看到這件事。
頻寬、bps 與 Bps、吞吐量
頻寬(bandwidth)是一條連線每秒最多能送多少位元,單位是 bps(bits per second)。網路設備與方案寫的「100M」「1G」指的都是位元:
| 寫法 | 意思 | 等於 |
|---|---|---|
| 1 kbps | 每秒 1 千位元 | 1,000 bps |
| 1 Mbps | 每秒 1 百萬位元 | 1,000,000 bps |
| 1 Gbps | 每秒 10 億位元 | 1,000,000,000 bps |
| 1 MB/s(大寫 B) | 每秒 1 百萬位元組 | 8 Mbps |
小寫 b 是位元(bit),大寫 B 是位元組(byte),1 位元組 = 8 位元。網路速率的 k、M、G 是 10 的次方(1 M = 1,000,000); 作業系統顯示檔案大小時,有的用 1,024 的次方,數字會略有差異,這裡一律用 10 的次方。
例子:用 100 Mbps 的線路下載 100 MB 的檔案,最快要 100 × 8 ÷ 100 = 8 秒,不是 1 秒。下載軟體顯示「12.5 MB/s」,其實就是 100 Mbps 跑滿。
吞吐量(throughput)是實際每秒送達多少資料,一定小於等於頻寬:線路要和別人共用、協定的標頭佔掉一部分、遺失的封包要重送。 從伺服器到你的電腦經過好幾段連線,整條路的吞吐量被最慢的那一段限制住,這一段叫瓶頸(bottleneck): 伺服器端是 10 Gbps、學校骨幹 1 Gbps、你的 Wi-Fi 只跑出 80 Mbps,下載最快就是 80 Mbps 左右。
四種延遲與 RTT
頻寬回答「每秒送多少」,延遲(delay)回答「一個封包要多久才到」。封包每經過一台交換設備、一段連線,會累積四種延遲:
| 延遲 | 發生在哪 | 取決於 | 算法 |
|---|---|---|---|
| 處理延遲 | 設備收到封包後 | 設備的速度 | 檢查標頭、查表,通常是微秒等級 |
| 排隊延遲 | 等著從輸出埠送出 | 前面還有多少封包在排 | 排隊的位元數 ÷ 頻寬;忙的時候變大 |
| 傳輸延遲 | 把封包的位元推上線 | 封包大小 L、頻寬 R | L ÷ R |
| 傳播延遲 | 訊號從線的一端跑到另一端 | 距離 d、訊號速度 s | d ÷ s |
傳輸與傳播最容易搞混。想像一列車隊過一座橋:傳輸延遲是整列車隊從橋頭全部開上橋要多久(車越多、入口越窄就越久); 傳播延遲是一台車從橋頭開到橋尾要多久(橋越長越久,和入口寬窄無關)。
傳輸延遲的例子:1,500 位元組 = 12,000 位元,在 100 Mbps 的線路上要 12,000 ÷ 100,000,000 = 0.12 毫秒。
傳播延遲的例子:訊號在光纖裡大約每秒跑 20 萬公里(光速的三分之二),也就是每公里 5 微秒。350 公里要 1.75 毫秒; 10,000 公里要 50 毫秒,不管頻寬多大都一樣,這是物理限制。實際的光纖路線比直線長,所以真實數字更大。
RTT(round-trip time,來回時間)是送出一個小封包到收到回覆的總時間,也就是去程加回程的延遲。 ping 顯示的時間就是 RTT。連線到 10,000 公里外的伺服器,RTT 至少 100 毫秒,這是網頁開啟、遊戲反應要多等的時間。
小測驗:頻寬與延遲的計算
網路方案寫「300M」,下載一個 600 MB 的檔案,在最理想的情況下要多久?
一個 1,000 位元組的封包,送上 10 Mbps 的線路,傳輸延遲是多少?
把線路從 1 Gbps 升級到 10 Gbps,下列哪一種延遲不會改變?
伺服器的對外線路 10 Gbps、學校骨幹 1 Gbps、你的 Wi-Fi 實際只跑出 120 Mbps。下載大檔案時,吞吐量大約是多少?
小測驗:交換方式與延遲的觀念
下列哪一項是封包交換的特性?
線上遊戲玩家常說「延遲比頻寬重要」。玩遊戲時送的多半是很小的封包,下列哪一個說法最合理?
在 net-lab 的練習裡,交換器 SW1 為什麼沒有出現在 traceroute 的結果裡?
重點整理
- 網路由主機、連線與交換設備組成;交換器在區域網路裡依 MAC 位址轉送,路由器在網路之間依 IP 位址轉送。
- 電路交換先保留容量、延遲穩定但容易浪費;封包交換大家共用線路,適合電腦斷斷續續的流量,代價是要排隊。
- 交換設備採儲存轉送:封包整個收完才往下一段送,所以每一段連線都要傳一次。
- 頻寬單位是 bps(位元),檔案大小常用 B(位元組),差 8 倍;吞吐量受整條路上最慢的一段限制。
- 四種延遲:處理、排隊(看擁擠程度)、傳輸(L ÷ R,看頻寬)、傳播(d ÷ s,看距離);RTT 是去程加回程。
- 大檔案靠頻寬,小封包與遠距離時距離才是關鍵。
下一課看資料送出前怎麼被一層一層包裝:分層模型與封裝。