網絡小故事 12 · 進階

路路的地圖Routing Table(路由表)與 Static Route(靜態路由)

路路怎樣知道每一封信的「下一站」?

主角:路路、小比閱讀時間約 10 分鐘

建議先讀:小故事 11「Subnetting」

1. 故事

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

序幕:溫習一下

第 1 步/共 10 步

路路看 IP 決定下一站

我是 Router(路由器)。每收到一個 Packet(封包),我看它的 IP 收件人,再決定交給哪一站。阿麥要去 example.com,我就交給互聯網那邊。

動畫文字版(全部步驟)
  1. 序幕:溫習一下
  2. 路路看 IP 決定下一站 路路:我是 Router(路由器)。每收到一個 Packet(封包),我看它的 IP 收件人,再決定交給哪一站。阿麥要去 example.com,我就交給互聯網那邊。
  3. 第一幕:路路的地圖
  4. 連上工作室 Router 路路:我和樓上的工作室 Router 用一條網線連起來了。這條線用 192.168.40.252/30:我是 .253,它是 .254。工作室裡面有辦公室、閉路電視和伺服器三個網絡。
  5. 我的地圖: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(直接連接)
  6. 去工作室?地圖上沒有! 小比:阿麥要把相片傳到辦公室電腦 192.168.40.10。路路翻地圖:沒有 192.168.40.0 這一行!只好用 0.0.0.0/0,把我交給互聯網……我去錯地方,最後被丟掉了!
    • Router 只認識直接連接的網絡
    • 工作室的網絡接在工作室 Router 身上,路路根本不知道
  7. 第二幕:Static Route
  8. 人手加一行 路路:網絡管理員在我的地圖上人手加一行:「192.168.40.0/24,交給 192.168.40.254。」這叫 Static Route(靜態路由)。
    • S = Static(靜態),由人手輸入
    • 一條 /24 就包括了工作室的三個 /26 網絡
  9. 這次到了! 小比:路路再翻地圖:192.168.40.10 符合 192.168.40.0/24,下一站是工作室 Router。工作室 Router 看自己的地圖:辦公室是直接連接的,於是把我送到辦公室電腦!
  10. 回程也要有路 路路:辦公室電腦回覆阿麥 192.168.1.10。工作室 Router 的地圖只有自己的網絡,加上一條 Default Route:「其他地方交給 192.168.40.253。」所以回覆也可以回到我這裡。
    • 工作室 Router:S* 0.0.0.0/0 → 192.168.40.253
    • 常見錯誤:只設了去程,忘記回程
  11. 幾條都符合?選最準確的 路路:收件人 192.168.40.254 同時符合 /30、/24 和 /0 三條 Route。我會選前綴最長、最準確的 /30:它直接接在我身上!這叫 Longest Prefix Match(最長前綴匹配)。
    • 192.168.40.252/30:前綴 30 ← 最長,勝出
    • 192.168.40.0/24:前綴 24
    • 0.0.0.0/0:前綴 0,最後的選擇
  12. 第三幕:地圖不會自己更新
  13. 網線斷了 小比:糟糕,家中和工作室之間的網線斷了!路路的 Port 失去訊號,/30 和那條 Static Route 都從地圖上消失。路路只好用 0.0.0.0/0,把我交給 ISP……結果又送不到工作室!
    • Static Route 不會自己找另一條路去工作室
    • 如果是工作室 Router 當機、Port 仍然亮燈,Static Route 會繼續指向 .254,小比就掉進黑洞
    • 要等網絡管理員發現問題,再人手修改
  14. 總結:路路的地圖 路路: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 往哪裡送的表。

地圖上的路有三個來源:

  1. 直接接在路路身上的網絡,開機就自動寫進去。
  2. 網絡管理員人手加上的一行,叫 Static Route(靜態路由)。
  3. 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 不會自己找另一條路。故事中,家中和工作室之間的網線斷了:

  1. 路路那個 Port 失去訊號,192.168.40.252/30 從地圖上消失。
  2. 下一站 192.168.40.254 再也找不到,那條 Static Route 也跟著失效。
  3. 去 192.168.40.10 只剩 0.0.0.0/0 符合,路路把小比交給 ISP,一樣送不到工作室。

另一種情況更麻煩:如果是工作室 Router 當機,但路路的 Port 仍然亮燈,Static Route 會繼續指向 192.168.40.254,小比就掉進「黑洞」。

兩種情況都要等網絡管理員發現問題,再人手修改。

5. 動手試試

任務:看看電腦的 Routing Table

  1. 在 Windows 電腦開啟「命令提示字元」,輸入 route print;在 Mac 或 Linux 開啟「終端機」,輸入 netstat -rn。
  2. 找找 0.0.0.0(有些系統顯示為 default)這一行:它的下一站就是你的 Default Gateway(預設閘道)。
  3. 原來不只 Router,你的電腦也有一本小地圖!

小互動

路路會選哪一條 Route?

以下每個收件人,路路會怎樣處理?

  1. 1192.0.2.80

  2. 2192.168.40.10

  3. 3192.168.1.11

  4. 4192.168.40.254

  5. 5192.168.20.10

  6. 6198.51.100.1

6. 比喻的極限

  • 地圖上沒有完整路線。 路路只知道「下一站」,不知道小比之後會經過哪些 Router;每一站都各自查自己的地圖。
  • 真實的地圖可以很長。 家用 Router 只有幾行,但互聯網上的大型 Router 有約一百萬行 Route,要用專門的晶片快速查找。
  • 路路不會「翻」地圖。 動畫把查表畫成翻書,實際上 Router 用特別的資料結構,在極短時間內找出前綴最長的一行。
  • 前綴一樣長時,還有其他規則。 如果兩條 Route 的網絡和前綴完全一樣、但來源不同(例如一條 Static、一條 Dynamic),Router 會按「可信程度」選一條,這裡不詳談。
  • 回程不一定原路返回。 這個故事只有一條路,所以來回相同;在大型網絡中,去程和回程可以走不同的路線。

7. 小測驗

第 1 題,共 3 題0.0.0.0/0 這條 Route 代表什麼?
第 2 題,共 3 題路路的 Routing Table 同時有 192.168.40.0/24 和 192.168.40.252/30,收件人是 192.168.40.254,會選哪一條?
第 3 題,共 3 題以下哪一項是 Static Route 的缺點?

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(開放最短路徑優先)。