iT邦幫忙

2026 iThome 鐵人賽

DAY 4
0
IT Operation

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

Day 04|不同網段怎麼寄?Gateway 為什麼是第一站?

  • 分享至 

  • xImage
  •  

昨天我們先搞懂一件事情:

明明已經知道對方的 IP,為什麼還需要 MAC?

因為資料真的從網路卡送出去時,會被包成 Ethernet Frame。

除了 Destination IP 之外,還會需要:

Destination MAC

如果對方跟我們在同一個網段,事情比較簡單。

例如:

PC A
192.168.1.10/24

PC B
192.168.1.20/24

PC A 算出 PC B 跟自己都在:

192.168.1.0/24

所以它可以直接用 ARP 找 PC B 的 MAC,然後把 Frame 交給 Switch,再送到 PC B。

但如果目的地根本不在同一個網段呢?

今天就從這裡開始。


先把整張網路圖放出來

這次不要只看 PC A 和目的地。

先把中間會經過的設備一起畫出來:

PC A
192.168.1.10/24
        │
        ▼
     Switch A
        │
        ▼
      Router
192.168.1.1 / 192.168.2.1
        │
        ▼
     Switch B
        │
        ▼
PC B
192.168.2.20/24

PC A 想把資料送給:

192.168.2.20

現在就沿著這張圖,一步一步看資料到底怎麼走。


第一步:PC A 先判斷是不是同網段

PC A 自己是:

192.168.1.10/24

目的地是:

192.168.2.20/24

PC A 先利用 Subnet Mask 判斷 Network。

自己的 Network:

192.168.1.0/24

目的地的 Network:

192.168.2.0/24

不一樣。

所以 PC A 知道:

192.168.2.20
不在本地 LAN

這時它不會直接去找 192.168.2.20 的 MAC。

因為 ARP 只能在目前這個 Layer 2 網路裡找人。

PC A 現在真正需要知道的是:

如果目的地不在本地網段,我要先把資料交給誰?

答案就是 Default Gateway。


第二步:Default Gateway 是離開本地網路的第一站

假設 PC A 的網路設定是:

IP Address:      192.168.1.10
Subnet Mask:     255.255.255.0
Default Gateway: 192.168.1.1

這裡的 Default Gateway 就是 Router 在 PC A 這一側的介面。

所以 PC A 的判斷會變成:

目的地 192.168.2.20
不在本地網段
        ↓
先交給 192.168.1.1
Default Gateway

注意一件很重要的事:

「先交給 Router」不代表真正目的地變成 Router。

真正的目的地還是:

192.168.2.20

Router 只是這趟旅程的第一個出口。


第三步:PC A 要先知道 Router 的 MAC

問題又來了。

PC A 現在知道第一站要交給:

192.168.1.1

但 Ethernet Frame 需要的是 MAC Address。

所以 PC A 會 ARP:

Who has 192.168.1.1?

Router 回覆:

192.168.1.1 is at
BB:BB:BB:BB:BB:BB

這時 PC A 才拿到這一跳真正需要的 Destination MAC。


第四步:PC A 把 Packet 包進 Frame

假設現在是:

PC A

IP:
192.168.1.10

MAC:
AA:AA:AA:AA:AA:AA

Router:

IP:
192.168.1.1

MAC:
BB:BB:BB:BB:BB:BB

最終目的地:

PC B

IP:
192.168.2.20

PC A 裡面的 IP Packet 會是:

Source IP      = 192.168.1.10
Destination IP = 192.168.2.20

外面的 Ethernet Frame 則會是:

Source MAC      = AA:AA:AA:AA:AA:AA
Destination MAC = BB:BB:BB:BB:BB:BB

也就是:

Destination IP
=
最終真正要去的地方

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

這是今天最重要的一組觀念。


第五步:Frame 離開 PC A,先進 Switch A

現在 PC A 已經把資料準備好了。

路徑是:

PC A
  ↓
Switch A
  ↓
Router

所以 Frame 從 PC A 離開之後,第一個碰到的設備其實是 Switch A。

Switch A 不需要判斷:

192.168.2.20 在哪?

它只要看 Ethernet Frame 裡的:

Destination MAC
=
BB:BB:BB:BB:BB:BB

然後查自己的 MAC Address Table。

例如:

MAC                       Port
AA:AA:AA:AA:AA:AA         Fa0/1
BB:BB:BB:BB:BB:BB         Fa0/24

Switch 一看就知道:

BB:BB:BB:BB:BB:BB
在 Fa0/24

所以它把 Frame 從 Fa0/24 送出去。

下一站就是 Router。


第六步:Router 收到 Frame

現在資料走到:

PC A
  ↓
Switch A
  ↓
Router

Router 收到的 Ethernet Frame 是:

Source MAC      = PC A 的 MAC
Destination MAC = Router 的 MAC

這表示:

這一跳的 Frame 的確是送給 Router 的。

Router 收到後,會先處理 Layer 2 的 Ethernet Header。

接著往裡面看 IP Packet:

Source IP      = 192.168.1.10
Destination IP = 192.168.2.20

這時 Router 才開始處理 Layer 3 的問題:

192.168.2.20 要往哪一邊送?

答案會來自:

Routing Table

Routing Table 怎麼看、Next Hop 是什麼,就留到 Day 05。


所以 Switch 和 Router 到底差在哪?

走完前面的流程後,這兩台設備的角色就比較清楚了。

Switch

Switch 主要看:

MAC Address

它處理的是目前這個 LAN 裡面:

這個 Frame 應該從哪個 Port 送出去?

所以剛剛 Switch A 做的事情只是:

看到 Router 的 MAC
        ↓
查 MAC Address Table
        ↓
送去 Router 所在的 Port

Router

Router 主要看:

IP Address

它要處理的是:

這個封包要前往哪一個 Network?

所以資料到了 Router 之後,才開始進入真正的路由問題。

可以先粗略記成:

Switch
→ 在同一個 LAN 裡送 Frame

Router
→ 在不同 Network 之間送 Packet

Router 不會把同一個 Frame 一路送到底

這裡再多看一步。

Router 收到 PC A 傳來的 Frame:

Source MAC      = PC A
Destination MAC = Router

不會把這個 Ethernet Frame 原封不動繼續往後送。

因為這組 MAC 只適用於:

PC A
↓
Router

Router 如果要往下一段網路送,就要重新建立新的 Layer 2 Header。

例如:

Router
↓
下一台設備

新的 Frame 可能變成:

Source MAC      = Router 出口介面的 MAC
Destination MAC = 下一跳設備的 MAC

所以可以先記:

IP
→ 描述端到端的目的地

MAC
→ 描述目前這一段 Layer 2 鏈路

先不考慮 NAT 等會改寫 IP 的特殊情況,Destination IP 仍然會指向:

192.168.2.20

但 MAC Address 會隨著不同的 Layer 2 鏈路重新建立。


把整段流程一次串起來

現在再把整條路看一次:

PC A
192.168.1.10
        │
        │ ① 發現 192.168.2.20 不同網段
        │
        │ ② ARP 找到 Gateway 的 MAC
        │
        ▼
     Switch A
        │
        │ ③ 看 Destination MAC
        │ ④ 找到 Router 所在 Port
        │
        ▼
      Router
        │
        │ ⑤ 拆掉這一段 Ethernet Header
        │ ⑥ 看 Destination IP
        │ ⑦ 查 Routing Table
        │
        ▼
    下一個 Network

所以 PC A 在送資料時,其實同時有兩個目的地概念:

最終目的地
=
192.168.2.20

這一跳的目的地
=
Default Gateway

對應到封包裡就是:

Destination IP
=
192.168.2.20

Destination MAC
=
Router 的 MAC

同網段和不同網段,差別到底在哪?

把 Day 03 和 Day 04 放在一起看:

同網段

PC A
想找 PC B
        ↓
判斷同網段
        ↓
ARP 找 PC B 的 MAC
        ↓
Switch
        ↓
PC B

不同網段

PC A
想找遠端主機
        ↓
判斷不同網段
        ↓
ARP 找 Default Gateway 的 MAC
        ↓
Switch
        ↓
Router
        ↓
其他 Network

真正的差異不是「有沒有 Switch」。

兩種情況都可能會經過 Switch。

差別在於:

PC A 最後決定要把這一跳的 Frame 交給誰?

同網段:

交給目的地主機

不同網段:

交給 Default Gateway

今天最大的 Why

以前看到:

IP Address
Subnet Mask
Default Gateway

很容易只把它們當成網路設定裡要填的三個欄位。

現在可以把它們串成一套真的會執行的判斷:

IP Address
→ 我是誰

Subnet Mask
→ 哪些 IP 算跟我同網段

Default Gateway
→ 如果目的地不在本地,先交給誰

接著:

ARP
→ 找到這一跳需要的 MAC

然後:

Switch
→ 根據 Destination MAC,把 Frame 送到正確 Port

最後:

Router
→ 根據 Destination IP,決定下一個 Network 怎麼走

這樣 Default Gateway、ARP、Switch、Router 就不再是四個分開背的名詞。

它們其實是在同一條資料傳輸流程裡,一個接一個出現。


Day 04 先記住這四句

今天先收斂成四句:

同網段 → ARP 找目的地主機

不同網段 → ARP 找 Default Gateway

Destination IP → 最終目的地

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

再加上一條設備分工:

Switch 看 MAC
Router 看 IP

當然真實網路設備還有更多功能,但先把這個主幹抓住,就已經可以把資料一路追到 Router。


上一篇
Day 03|都有 IP 了,為什麼同網段還需要 MAC?
下一篇
Day 05|Router 怎麼知道下一站?Routing Table、Static Route 到底是什麼?
系列文
網路為什麼筆記本:從一個封包開始,把 Router、Switch 與 Routing 串起來8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言