我本來以為自己至少還記得一些網路基礎。
Router 是路由器、Switch 是交換器、LAN 是區網,這些詞以前都看過,也不是第一次碰到。
但最近重新把這些概念攤開來看時,我發現一個很尷尬的問題:
如果現在叫我把「我家的 MacBook 打開網站後,資料到底怎麼走出去」完整講一次,我其實講不太順。
甚至 ISP 是什麼,也只剩下「名字很熟」的感覺。
後來發現,問題可能不是名詞完全沒看過,而是以前比較像一個一個記,沒有真的把它們串成同一條路。
所以這次先不要急著背設備型號,也不要先衝 OSI 七層。
我想先把一件最基本的事情弄懂:
家裡的網路、Router、Switch、ISP 和 Internet,到底是怎麼串在一起的?
如果問我 Internet 是什麼,我現在會先回答:
很多不同的網路彼此連起來,最後形成一個更大的網路。
這句看起來很簡單,但其實會直接影響後面對 Router 的理解。
Internet 不是某一家公司的一台超級 Server,也不是「外面有一朵雲,所有資料都丟進去」。
比較接近:
我家的網路
│
▼
ISP 的網路
│
▼
其他 ISP / 其他組織的網路
│
▼
網站所在的網路
中間可能還會經過很多 Router、很多不同業者和不同自治網路。
Day 1 先不用追這些細節。
我現在只先抓一件事:
Internet 本身就是「很多網路互相連接」的結果。
所以如果 Router 的工作跟「不同網路之間怎麼走」有關,它自然會是 Internet 很核心的角色。
ISP 全名是:
Internet Service Provider
也就是提供 Internet 連線服務的業者。
所以家裡的裝置要出去,可以先很粗略地畫成:
MacBook / 手機 / NAS
↓
家裡 LAN
↓
Router
↓
ISP
↓
Internet
這張圖現在故意畫得很簡單。
真實世界裡可能還有 ONT、數據機、Firewall、NAT、更多 Router 等等,但 Day 1 先不要把所有名詞一次塞進來。
我現在比較想先知道:
哪一段是我家的網路?哪一段開始是別人的網路?
LAN 是 Local Area Network,通常翻成區域網路。
我現在不想把它背成一句「小範圍內的網路」。
我比較喜歡直接放回家裡看:
MacBook
手機
NAS
電視
印表機
如果這些設備都連進家裡自己的網路,它們就在一個 LAN 的場景裡。
也就是說:
Internet 是很多網路互相連起來;LAN 則是其中一個比較靠近我的本地網路。
所以「連上家裡 Wi-Fi」和「連上 Internet」其實不是同一件事。
這也是我以前很容易混在一起的地方。
假設:
MacBook ─┐
├── 家裡 LAN ── Router ── ISP ── Internet
NAS ──┘
如果 ISP 那一段斷掉:
MacBook ─┐
├── 家裡 LAN ── Router X Internet
NAS ──┘
只要家裡 LAN 本身還正常,MacBook 和 NAS 還是可能彼此通訊。
所以這兩句不能畫等號:
連上 Wi-Fi
≠
Internet 一定正常
Wi-Fi 可能只是讓裝置連進家裡自己的 LAN。
至於資料能不能再從家裡 LAN 往外走到 ISP、最後到 Internet,是另一件事。
這一拆開之後,我才開始覺得 Router 和 Switch 的角色比較有畫面。
假設家裡現在有兩台有線設備:
PC A ─┐
├── Switch
NAS ──┘
Switch 可以先理解成:
幫同一個 Layer 2 網路裡的設備,把資料轉送到正確的連接埠。
Day 1 先不用追它到底怎麼知道「正確的 Port」在哪裡。
後面會再拆 MAC Address、MAC Address Table、Flooding。
目前只要先知道:
Switch 主要處理的是本地網路裡的 Ethernet 轉送。
所以如果 PC A 和 NAS 本來就在同一個 subnet,資料不需要為了「找 NAS」先跑去 Router 再繞回來。
這裡的「直接」也不是說資料會憑空飛到 NAS。
實際上 Ethernet 還是需要知道 Destination MAC,Switch 也還是要決定 Frame 從哪個 Port 送出去。
只是這些問題先留到後面的 MAC、ARP 再拆。
我以前最容易背成:
Router 就是拿來上網的。
但這句其實會害我後面很多東西都混在一起。
Router 更核心的工作是:
在不同的 IP 網路之間轉送封包。
所以我現在先把 Switch 和 Router 分成:
Switch
→ 比較常處理同一個本地網路裡的 Layer 2 轉送
Router
→ 負責把封包從一個 IP 網路送往另一個 IP 網路
例如:
192.168.1.0/24
│
Router
│
10.0.0.0/24
左右是兩個不同的 IP 網路。
Router 就站在中間,讓這兩邊可以互相到達。
至於 Router 到底怎麼決定「下一步往哪裡走」,後面會再進 Routing Table。
這是我覺得很值得先拆開的一個地方。
因為家裡常見的那台盒子,看起來就是:
插上網路線
↓
它發 Wi-Fi
↓
電腦可以上網
久了很容易形成:
Router = 發 Wi-Fi 的機器
但其實不是。
一台家用「無線路由器」通常把很多功能塞在同一個盒子裡,例如:
Router
+
Ethernet Switch
+
Wireless Access Point
+
DHCP Server
+
NAT
+
部分 Firewall 功能
所以我們平常看到的是「一台設備」,裡面其實同時做了好幾種工作。
如果把它概念上拆開,可以想成:
┌── Wi-Fi AP ── 手機
Internet ─ Router
└── Switch ──── PC
└──── NAS
這樣就比較容易理解:
Wi-Fi 不是 Router 的定義;只是家用產品常常把 AP、Switch、Router 做在同一台機器裡。
這也是為什麼到了公司、機房或比較正式的網路環境,Router、Switch、AP 很可能真的就是不同設備。
現在開始把前面的角色放進一個具體例子。
假設 MacBook 是:
IP:192.168.1.10
Default Gateway:192.168.1.1
NAS 是:
IP:192.168.1.20
先假設它們是在同一個 subnet。
MacBook 要傳資料給 NAS 時,概念上會是:
目的地:192.168.1.20
↓
這是本地 subnet
↓
不需要先把 Packet 交給 Default Gateway
↓
在本地 LAN 裡找得到 NAS 的 Layer 2 送法
↓
Switch 幫忙轉送
這裡我故意沒有往下講「到底怎麼找到 NAS 的 MAC」。
因為那是後面 ARP 的問題。
現在目的地換成:
8.8.8.8
MacBook 判斷它不在自己的本地 subnet。
那它不會期待家裡的 Switch 直接找到 8.8.8.8 那台設備。
它會先把這一跳交給:
Default Gateway:192.168.1.1
也就是:
MacBook
192.168.1.10
│
│ 目的地不在本地網路
▼
Default Gateway
192.168.1.1
│
▼
Router 再決定下一步
│
▼
ISP
│
▼
Internet
所以 Default Gateway 可以先理解成:
當目的地不在自己的本地網路時,主機先把封包交出去的出口。
這比「Gateway 就是 Router 的 IP」多了一點真正的用途。
到這裡其實出現一個我沒辦法再逃避的問題。
前面一直說:
如果同網段……
如果不同網段……
可是電腦到底怎麼判斷?
它不可能看到:
192.168.1.10
192.168.1.20
就憑感覺說:
「看起來很像,應該同一區吧。」
這裡就需要另一個資訊:
Subnet Mask
例如我以前看過很多次:
255.255.255.0
或:
/24
但以前比較像在背答案。
真正的問題應該是:
Subnet Mask 到底在 mask 什麼?它怎麼讓電腦算出「誰跟我是同一個網路」?
這就留給 Day 02。
Internet
= 很多不同的網路互相連接
LAN
= 我身邊的本地網路
Switch
= 本地 Layer 2 網路裡轉送 Ethernet Frame
Router
= 在不同 IP 網路之間轉送 Packet
Default Gateway
= 目的地不在本地網路時,我先交給的出口
資料要送出去時,目前可以先想成:
我要送資料
↓
目的地是不是在本地 subnet?
↓
┌───────────────┴───────────────┐
↓ ↓
是 否
↓ ↓
留在本地 LAN 先交給 Default Gateway
↓ ↓
Switch 參與本地轉送 Router 往其他網路送
現在最大的洞只剩:
到底怎麼判斷「是不是同一個 subnet」?
下一篇開始拆 Subnet Mask。
如果不看上面的內容,我希望自己至少能回答這幾題:
1. Wi-Fi 連上,為什麼不代表 Internet 一定正常?
2. Switch 和 Router 解決的問題有什麼不同?
3. 家用 Wi-Fi Router 為什麼會讓人以為「Router 就是發 Wi-Fi」?
4. 如果目的地不在本地 subnet,電腦第一個會把資料交給誰?
目前我的答案是:
1. 因為 Wi-Fi 可以只代表我已經連進本地 LAN,ISP / Internet 那段仍然可能故障。
2. Switch 主要處理本地 Layer 2 轉送;Router 負責跨不同 IP 網路。
3. 因為家用設備常把 Router、Switch、AP、DHCP、NAT 等功能做在同一台盒子裡。
4. Default Gateway。
如果這四題真的能自己講出來,我才算開始把「Router 就是拿來上網的盒子」這種模糊印象拆掉。