iT邦幫忙

2026 iThome 鐵人賽

DAY 5
0
IT Operation

網路為什麼筆記本:從一個封包開始,把 Router、Switch 與 Routing 串起來系列 第 5

Day 05|Router 怎麼知道下一站?Routing Table、Static Route 到底是什麼?

  • 分享至 

  • xImage
  •  

Day 04 我們一路追到這裡:

PC A
  ↓
Default Gateway
  ↓
Router 收到 Packet

Router 拆掉這一段的 Ethernet Header 之後,看到裡面的:

Destination IP

接下來才是真正的問題:

Router 知道最終目的地的 IP,但它怎麼知道「下一站」要往哪裡?

答案就是:

Routing Table

今天不急著背一堆 Route 名稱。

我們繼續追同一包資料,看 Router 到底怎麼做決定。


先把網路再往後拉長一點

Day 04 為了先理解 Default Gateway,只需要看到「PC → Router → 另一個 Network」。

今天要看 Router 怎麼選下一站,所以我們把網路再延伸一段:

PC A
192.168.1.10/24
        │
        ▼
     Router A
G0/0:192.168.1.1/24
G0/1:192.168.2.1/24
        │
        │ 192.168.2.0/24
        │
        ▼
     Router B
G0/0:192.168.2.2/24
G0/1:10.0.0.1/24
        │
        ▼
     Server
10.0.0.20/24

這張圖先省略中間可能存在的 Switch。

原因跟 Day 04 一樣:

Switch 有可能存在,也可能沒有;今天要追的是 Router 的 Layer 3 決策。

現在 PC A 要把資料送給:

10.0.0.20

PC A 已經知道這不是自己的網段,所以先把 Frame 交給 Default Gateway:

192.168.1.1

也就是 Router A。

接下來換 Router A 接手。


第一步:Router A 看到真正的 Destination IP

Router A 收到 Frame 後,會先處理這一段的 Layer 2 封裝。

再往裡面看 IP Packet:

Source IP      = 192.168.1.10
Destination IP = 10.0.0.20

現在 Router A 要回答:

10.0.0.20 要從哪裡送出去?

它不會憑感覺猜。

它會查自己的:

Routing Table

Routing Table 不是「每一台電腦的地址簿」

看到:

Destination IP = 10.0.0.20

不代表 Routing Table 一定要有:

10.0.0.20 → 下一站

Router 通常會用「網段」來記路。

例如:

10.0.0.0/24
→ 下一跳 192.168.2.2

意思是:

只要目的 IP 屬於 10.0.0.0/24,就先往 192.168.2.2 送。

所以:

10.0.0.20
10.0.0.50
10.0.0.200

都可以匹配同一條 Route。

這也是為什麼前面一直在練:

IP
Subnet Mask
Network

因為 Router 真正拿來做路由比對的核心,不只是單一主機 IP,而是目的網段。


第二步:有些 Route 不用設定,Router 自己就知道

先看 Router A 自己的介面:

G0/0:192.168.1.1/24
G0/1:192.168.2.1/24

只要介面有正確設定,而且處於可用狀態,Router 就知道這些 Network 是直接連在自己身上的:

192.168.1.0/24
192.168.2.0/24

這就是:

Connected Route

可以先記成:

這個 Network 直接接在我的介面上,所以我本來就知道怎麼到。

到了 Packet Tracer 或 Cisco IOS 裡,之後執行:

show ip route

可能會看到類似:

C 192.168.1.0/24 is directly connected, GigabitEthernet0/0
L 192.168.1.1/32 is directly connected, GigabitEthernet0/0

C 192.168.2.0/24 is directly connected, GigabitEthernet0/1
L 192.168.2.1/32 is directly connected, GigabitEthernet0/1

這裡先認兩個字母就好:

C = Connected
    直接連在 Router 上的 Network

L = Local
    Router 自己這個介面的 IP

例如:

C 192.168.1.0/24

代表整個:

192.168.1.0/24

直接連在這個 Router 上。

而:

L 192.168.1.1/32

指的是 Router 自己 G0/0 的 IP。

今天知道看到 CL 不用慌就夠了。


第三步:可是 10.0.0.0/24 不在 Router A 身上

現在回到我們真正的目的地:

10.0.0.20

Router A 直接連著的是:

192.168.1.0/24
192.168.2.0/24

但 Server 所在的是:

10.0.0.0/24

這個 Network 在 Router B 後面:

Router A
   │
   │ 192.168.2.0/24
   ▼
Router B
   │
   ▼
10.0.0.0/24

所以 Router A 不會因為「看得到 Router B」就自動知道 Router B 後面還有哪些 Network。

它需要另外知道:

要去 10.0.0.0/24,先往 Router B 走。


第四步:Static Route 就是人工告訴 Router 這條路

工程師可以在 Router A 加一條:

10.0.0.0/24
→ 下一跳 192.168.2.2

這就是:

Static Route

注意,Static Route 不是

192.168.2.2

這一個 IP。

它是一整條路由規則:

目的網段             下一跳
10.0.0.0/24    →     192.168.2.2

前面在回答:

哪些 Destination IP 要套用這條路?

後面在回答:

符合之後,下一站先交給誰?

Cisco IOS 上可以寫成:

ip route 10.0.0.0 255.255.255.0 192.168.2.2

今天不急著背指令。

先把它翻成白話:

如果目的地屬於 10.0.0.0/24,就先把 Packet 往 192.168.2.2 送。

這裡的:

192.168.2.2

就是:

Next-hop IP

也就是 Router B。


第五步:知道 Next Hop 之後,Router 還要知道怎麼碰到它

現在 Router A 已經選到:

10.0.0.0/24
→ 192.168.2.2

但它還要確認:

192.168.2.2 要從哪個介面出去?

Router A 本來就有:

192.168.2.0/24
→ G0/1

這條 Connected Route。

而:

192.168.2.2

就在:

192.168.2.0/24

裡面。

所以 Router A 知道:

要找 192.168.2.2
→ 從 G0/1 出去

到這裡,Layer 3 的「下一站」已經決定好了。


第六步:如果這段是 Ethernet,還是會再遇到 ARP

這裡就接回 Day 03、Day 04。

Router A 知道:

Next-hop IP
=
192.168.2.2

但 Ethernet Frame 還需要:

Destination MAC

所以如果 ARP Cache 裡還沒有 Router B 的 MAC,Router A 會在 192.168.2.0/24 這一段做 ARP:

Who has 192.168.2.2?

Router B 回覆自己的 MAC。

接著 Router A 才能重新建立新的 Ethernet Frame。

這一次會變成:

Source MAC
=
Router A G0/1 的 MAC

Destination MAC
=
Router B G0/0 的 MAC

但裡面的 IP Packet,先不考慮 NAT 等會改寫位址的情況,仍然是:

Source IP      = 192.168.1.10
Destination IP = 10.0.0.20

所以 Day 04 的觀念又回來了:

Destination IP
→ 最終目的地

Destination MAC
→ 目前這一跳要交給誰

第七步:Router B 收到後,再做一次同樣的判斷

現在 Packet 來到 Router B。

Router B 的介面是:

G0/0:192.168.2.2/24
G0/1:10.0.0.1/24

所以它本來就會知道:

10.0.0.0/24
→ directly connected

Router B 一看 Destination IP:

10.0.0.20

就會發現:

這個目的地就在我直接連著的 10.0.0.0/24。

因此它不需要再找另一台 Router。

如果這段是 Ethernet,而且還不知道 Server 的 MAC,就再 ARP:

Who has 10.0.0.20?

拿到 Server 的 MAC 後,再建立下一個 Ethernet Frame,把資料送出去。

所以整條路其實一直在重複同一個節奏:

看 Destination IP
        ↓
查 Routing Table
        ↓
決定出口 / Next Hop
        ↓
如果需要,ARP 找這一跳的 MAC
        ↓
建立新的 Layer 2 Frame
        ↓
送出去

Default Gateway 跟 Default Route 不是同一個東西

這裡很容易混在一起。

Day 04 才剛學:

Default Gateway

Day 05 又會看到:

Default Route

名字很像,但它們不是同一件事。

Default Gateway

站在 PC A 的角度:

Default Gateway
=
目的地不在本地網段時
先交給哪台 Router

例如:

PC A
Default Gateway = 192.168.1.1

Default Route

站在 Router 的 Routing Table 角度:

Default Route
=
沒有更精準的 Route 可以匹配時
最後使用的兜底路線

IPv4 會看到:

0.0.0.0/0

所以可以先這樣分:

Default Gateway
→ 主機:不同網段先交給誰?

Default Route
→ Router:沒有更精準路線時往哪走?

兩個都可能指向「下一台 Router」,但概念和所在位置不同。


Default Route:不知道去哪,就走這條

假設 Routing Table 裡有:

192.168.1.0/24 → directly connected
192.168.2.0/24 → directly connected
10.0.0.0/24    → 192.168.2.2
0.0.0.0/0      → ISP Router

如果 Destination IP 是:

8.8.8.8

前面幾條都不符合。

最後還有:

0.0.0.0/0

可以匹配。

這條就是 Default Route。

它的概念可以先記成:

其他不知道怎麼走的目的地,就走這條。


如果很多條 Route 都符合呢?

假設 Routing Table 裡已經有:

10.0.0.0/8    → Router X
10.0.0.0/24   → Router Y
0.0.0.0/0     → Router Z

目的地是:

10.0.0.20

它其實可以匹配:

10.0.0.0/8
10.0.0.0/24
0.0.0.0/0

Router 會選 Prefix 最長、範圍最精準的:

10.0.0.0/24

這叫:

Longest Prefix Match

可以先記:

多條已存在的 Route 都能匹配目的 IP 時,先走最精準的那一條。

例如:

/24

會比:

/8

精準。

而:

/0

就是最不精準、最後兜底的 Default Route。


那 AD、Metric 又是什麼?

先不要把它們跟 Longest Prefix Match 混在一起。

今天先抓一個大方向:

Longest Prefix Match
→ 封包真的要轉送時
  多條已在 Routing Table 裡的 Route 都符合
  要選哪個 Prefix

而之後會學到的:

Administrative Distance
Metric

比較偏向:

同一個目的網段如果從不同來源學到多條路,Router 要怎麼決定哪些路比較可信、比較好。

這部分留到後面學 Dynamic Routing 時再拆。

今天只要先不要把:

Longest Prefix Match
AD
Metric

當成同一件事情就好。


Dynamic Route 先知道它存在

目前我們讓 Router A 知道:

10.0.0.0/24
→ 192.168.2.2

的方法,是工程師手動設定 Static Route。

但如果公司有:

10 台 Router
50 台 Router
100 台 Router

每一條路都人工維護就會變得很麻煩。

所以 Router 也可以透過 Routing Protocol 彼此學習路由。

CCNA 後面會碰到:

OSPF

這種就是 Dynamic Routing。

今天先知道:

Connected Route
→ Router 從自己的介面自然知道

Static Route
→ 工程師人工設定

Dynamic Route
→ Router 透過 Routing Protocol 學到

就夠了。


把 Day 04 和 Day 05 串起來

現在整條資料流可以接起來了。

PC A

Destination IP = 10.0.0.20
        ↓
發現不同網段
        ↓
找 Default Gateway
        ↓
ARP 找 Router A 的 MAC
        ↓
Frame 送給 Router A

Router A

收到 Frame
        ↓
看到 Destination IP = 10.0.0.20
        ↓
查 Routing Table
        ↓
匹配 10.0.0.0/24
        ↓
Static Route 指向 192.168.2.2
        ↓
Next Hop = Router B
        ↓
如果需要,ARP 找 Router B 的 MAC
        ↓
重新建立 Ethernet Frame
        ↓
送給 Router B

Router B

收到 Packet
        ↓
Destination IP = 10.0.0.20
        ↓
查 Routing Table
        ↓
10.0.0.0/24 是 Connected
        ↓
如果需要,ARP 找 Server 的 MAC
        ↓
重新建立 Ethernet Frame
        ↓
送到 Server

看到這裡,Routing Table 就不再是一張憑空出現的表。

它其實只是 Router 每次收到 Packet 後,用來回答:

這個 Destination IP,下一步要往哪裡?


Day 05 先記住這幾句

Routing Table
→ Router 用來決定目的網段往哪裡走

Connected Route
→ 直接連在 Router 介面上的 Network

Local Route
→ Router 自己介面的 IP

Static Route
→ 工程師人工設定的路由規則

Next-hop IP
→ 下一台要交給的 Router IP

Default Route
→ 沒有更精準 Route 時的兜底路線

Longest Prefix Match
→ 多條 Route 都符合時,選最精準的 Prefix

再把 Day 04 的觀念一起帶著:

IP
→ 最終要去哪裡

MAC
→ 這一跳要交給誰

Routing Table
→ 下一跳應該往哪裡

上一篇
Day 04|不同網段怎麼寄?Gateway 為什麼是第一站?
下一篇
Day 06|第一次真的讓封包跨過兩台 Router
系列文
網路為什麼筆記本:從一個封包開始,把 Router、Switch 與 Routing 串起來9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言