1. 故事
按「下一步」一步一步看。每一步都有一位角色出場,解釋自己正在做什麼。
序幕:溫習一下
第 1 步/共 10 步
路路看 IP 決定下一站
我是 Router(路由器)。每收到一個 Packet(封包),我看它的 IP 收件人,再決定交給哪一站。阿麥要去 example.com,我就交給互聯網那邊。
動畫文字版(全部步驟)
- 序幕:溫習一下
- 路路看 IP 決定下一站 路路:我是 Router(路由器)。每收到一個 Packet(封包),我看它的 IP 收件人,再決定交給哪一站。阿麥要去
example.com,我就交給互聯網那邊。 - 第一幕:路路的地圖
- 連上工作室 Router 路路:我和樓上的工作室 Router 用一條網線連起來了。這條線用
192.168.40.252/30:我是.253,它是.254。工作室裡面有辦公室、閉路電視和伺服器三個網絡。 - 我的地圖:Routing Table 路路:我有一本地圖,叫 Routing Table(路由表)。直接接在我身上的網絡,開機就自動寫進去;還有一條
0.0.0.0/0:「其他地方,全部交給 ISP」。- C
192.168.1.0/24→ 直接連接(家人區) - C
192.168.20.0/24→ 直接連接(客人區) - C
192.168.40.252/30→ 直接連接(往工作室) - C
203.0.113.0/24→ 直接連接(對外,接 ISP) - S*
0.0.0.0/0→203.0.113.254(ISP) - C = Connected(直接連接)
- C
- 去工作室?地圖上沒有! 小比:阿麥要把相片傳到辦公室電腦
192.168.40.10。路路翻地圖:沒有192.168.40.0這一行!只好用0.0.0.0/0,把我交給互聯網……我去錯地方,最後被丟掉了!- Router 只認識直接連接的網絡
- 工作室的網絡接在工作室 Router 身上,路路根本不知道
- 第二幕:Static Route
- 人手加一行 路路:網絡管理員在我的地圖上人手加一行:「
192.168.40.0/24,交給192.168.40.254。」這叫 Static Route(靜態路由)。- S = Static(靜態),由人手輸入
- 一條
/24就包括了工作室的三個/26網絡
- 這次到了! 小比:路路再翻地圖:
192.168.40.10符合192.168.40.0/24,下一站是工作室 Router。工作室 Router 看自己的地圖:辦公室是直接連接的,於是把我送到辦公室電腦! - 回程也要有路 路路:辦公室電腦回覆阿麥
192.168.1.10。工作室 Router 的地圖只有自己的網絡,加上一條 Default Route:「其他地方交給192.168.40.253。」所以回覆也可以回到我這裡。- 工作室 Router:S*
0.0.0.0/0→192.168.40.253 - 常見錯誤:只設了去程,忘記回程
- 工作室 Router:S*
- 幾條都符合?選最準確的 路路:收件人
192.168.40.254同時符合/30、/24和/0三條 Route。我會選前綴最長、最準確的/30:它直接接在我身上!這叫 Longest Prefix Match(最長前綴匹配)。192.168.40.252/30:前綴 30 ← 最長,勝出192.168.40.0/24:前綴 240.0.0.0/0:前綴 0,最後的選擇
- 第三幕:地圖不會自己更新
- 網線斷了 小比:糟糕,家中和工作室之間的網線斷了!路路的 Port 失去訊號,
/30和那條 Static Route 都從地圖上消失。路路只好用0.0.0.0/0,把我交給 ISP……結果又送不到工作室!- Static Route 不會自己找另一條路去工作室
- 如果是工作室 Router 當機、Port 仍然亮燈,Static Route 會繼續指向
.254,小比就掉進黑洞 - 要等網絡管理員發現問題,再人手修改
- 總結:路路的地圖 路路:Routing Table 寫著「去哪個網絡、交給哪一站」。Static Route 簡單清楚,但網絡一變就不靈光。如果我們幾位 Router 可以自己交換情報、自動找新路就好了……下一個故事見!
- Route 的來源:直接連接、Static Route、Dynamic Routing(動態路由)
0.0.0.0/0= Default Route(預設路由)- 多條符合時,選前綴最長的
2. 問題在哪裡
路路是 Router(路由器)。每收到一個 Packet(封包),他看 IP 收件人,再決定交給哪一站。
阿麥打開 example.com(192.0.2.80)時,路路把小比交給 ISP(互聯網服務供應商),一切順利。192 開頭不一定是 Private IP(私人位址),只有 192.168 開頭才是。
可是當阿麥把相片傳到工作室的辦公室電腦 192.168.40.10,小比卻送不到:
- 工作室的三個網絡接在工作室 Router 身上,不是接在路路身上。
- 路路只認識直接接在自己身上的網絡,根本不知道辦公室的
192.168.40.10在樓上。 - 找不到更好的路,路路只好把小比交給 ISP。互聯網上的 Router 不會轉送寄往 Private IP 的 Packet,小比最後被丟掉。
3. 網絡怎樣解決
路路手上有一本地圖,每一行寫著:「去這個網絡,交給這一站。」這本地圖叫 Routing Table(路由表),是 Router 用來決定 Packet 往哪裡送的表。
地圖上的路有三個來源:
- 直接接在路路身上的網絡,開機就自動寫進去。
- 網絡管理員人手加上的一行,叫 Static Route(靜態路由)。
- Router 之間自動交換回來的,叫 Dynamic Routing(動態路由),下一個故事再講。
4. 看深一點
家中和工作室之間的連線
路路和工作室 Router 用一條網線連起來。這條線本身也是一個網絡:192.168.40.252/30。
/30 每件只有 4 個位址,正好適合只有兩部 Router 的連線。它是從上一個故事預留的第四件 192.168.40.192/26 裡面,再切出來的一小件:
| 位址 | 用途 |
|---|---|
192.168.40.252 |
網段位址 |
192.168.40.253 |
家中路路 |
192.168.40.254 |
工作室 Router |
192.168.40.255 |
Broadcast Address(廣播位址) |
路路的 Routing Table
加上 Static Route 之後,路路的地圖大約是這樣:
代號 目的地網絡 下一站 / 出口
C 192.168.1.0/24 直接連接(家人區)
C 192.168.20.0/24 直接連接(客人區)
C 192.168.40.252/30 直接連接(往工作室)
C 203.0.113.0/24 直接連接(對外,接 ISP)
S 192.168.40.0/24 經 192.168.40.254
S* 0.0.0.0/0 經 203.0.113.254(ISP)
- C = Connected Route(直接連接路由):網絡接在路路自己的 Port(連接埠)上,開機自動出現。
- S = Static(靜態):網絡管理員人手輸入。
- 下一站:即 Next Hop(下一跳),指 Packet 要交給的下一部 Router 的 IP Address(網絡位址),它必須是路路直接連接得到的位址。
*表示這是 Default Route(預設路由)。它的下一站203.0.113.254在直接連接的203.0.113.0/24之內,所以路路找得到。
一條 192.168.40.0/24 已經包括了工作室的三個 /26 網絡,不用逐件寫。
Default Route:0.0.0.0/0
0.0.0.0/0 的前綴長度是 0,即「一個位元也不用比較」,所以任何位址都符合。意思是:「其他地方,全部走這條路。」
家用 Router 通常只有這一條 Default Route,指向 ISP Router 203.0.113.254。
幾條都符合?Longest Prefix Match(最長前綴匹配)
一個收件位址可以同時符合幾條 Route。路路會選前綴最長的一條,因為它最準確。這就是 Longest Prefix Match。
以收件人 192.168.40.254 為例:
| Route | 前綴長度 | 符合嗎? |
|---|---|---|
192.168.40.252/30 |
30 | 符合 ← 最長,勝出 |
192.168.40.0/24 |
24 | 符合 |
0.0.0.0/0 |
0 | 符合(任何位址都符合) |
所以 192.168.40.254 直接送出去;192.168.40.10 只符合 /24 和 /0,選 /24,交給工作室 Router;192.0.2.80 只符合 /0,交給 ISP。
留意:地圖的排列次序不影響結果,前綴長度才是關鍵。
回程也要有路
辦公室電腦回覆阿麥 192.168.1.10 時,由工作室 Router 決定路線。它的地圖只有自己的網絡,加上一條 Default Route:
S* 0.0.0.0/0 經 192.168.40.253(家中路路)
所以回覆可以回到路路,再由路路送給阿麥。只設了去程、忘記回程,是設定 Static Route 時最常見的錯誤。
Static Route 的弱點
Static Route 不會自己找另一條路。故事中,家中和工作室之間的網線斷了:
- 路路那個 Port 失去訊號,
192.168.40.252/30從地圖上消失。 - 下一站
192.168.40.254再也找不到,那條 Static Route 也跟著失效。 - 去
192.168.40.10只剩0.0.0.0/0符合,路路把小比交給 ISP,一樣送不到工作室。
另一種情況更麻煩:如果是工作室 Router 當機,但路路的 Port 仍然亮燈,Static Route 會繼續指向 192.168.40.254,小比就掉進「黑洞」。
兩種情況都要等網絡管理員發現問題,再人手修改。
5. 動手試試
任務:看看電腦的 Routing Table
- 在 Windows 電腦開啟「命令提示字元」,輸入
route print;在 Mac 或 Linux 開啟「終端機」,輸入netstat -rn。 - 找找
0.0.0.0(有些系統顯示為default)這一行:它的下一站就是你的 Default Gateway(預設閘道)。 - 原來不只 Router,你的電腦也有一本小地圖!
小互動
路路會選哪一條 Route?
以下每個收件人,路路會怎樣處理?
-
1
192.0.2.80 -
2
192.168.40.10 -
3
192.168.1.11 -
4
192.168.40.254 -
5
192.168.20.10 -
6
198.51.100.1
全部分對了!找出所有符合的 Route,選前綴最長的一條;都不符合時,才用 0.0.0.0/0。
6. 比喻的極限
- 地圖上沒有完整路線。 路路只知道「下一站」,不知道小比之後會經過哪些 Router;每一站都各自查自己的地圖。
- 真實的地圖可以很長。 家用 Router 只有幾行,但互聯網上的大型 Router 有約一百萬行 Route,要用專門的晶片快速查找。
- 路路不會「翻」地圖。 動畫把查表畫成翻書,實際上 Router 用特別的資料結構,在極短時間內找出前綴最長的一行。
- 前綴一樣長時,還有其他規則。 如果兩條 Route 的網絡和前綴完全一樣、但來源不同(例如一條 Static、一條 Dynamic),Router 會按「可信程度」選一條,這裡不詳談。
- 回程不一定原路返回。 這個故事只有一條路,所以來回相同;在大型網絡中,去程和回程可以走不同的路線。
7. 小測驗
8. 重點筆記
- Routing Table(路由表)每一行寫著「去哪個網絡、交給哪一站」;Router 只知道下一站,不知道整條路線。
- Route 有三個來源:Connected Route(直接連接路由)、Static Route(人手輸入)、Dynamic Routing(自動交換)。
0.0.0.0/0是 Default Route(預設路由),任何位址都符合,找不到更準確的 Route 時才用。- 多條 Route 都符合時,選前綴最長的一條,這叫 Longest Prefix Match(最長前綴匹配)。
- Static Route 簡單清楚,但網絡一變就不會自動更新;而且去程、回程都要有路。
延伸閱讀
只有兩部 Router 時,人手寫幾行 Static Route 還可以應付。如果有十部、一百部 Router,網線又不時斷掉呢?下一個故事,阿帕教授會介紹 Router 之間怎樣自動交換情報:Dynamic Routing(動態路由)與 OSPF(開放最短路徑優先)。