網路要回答兩件事:資料該送去哪裡(where)、收到的是什麼(what)。答案由一疊網路層分工完成——應用層講協定、傳輸層管 port 與可靠性、網路層管定址與路由、實體層負責真的把 bit 送出去。搞懂這疊,排網路問題才知道該看哪一層。
🧠 Intuition
TIP
四層由上而下:應用層(HTTP/TLS/DNS,在 user space)→ 傳輸層(TCP/UDP + port,主要在 kernel)→ 網路層(IP 定址與路由)→ 實體層(Ethernet、MAC、frame)。資料下行逐層加標頭,上行逐層拆解。
- IP 與子網路:IPv4 是 dotted-quad(如 10.23.2.37),子網路用 CIDR 表示(
/24最常見);network prefix 標出「同網段」的共同部分。 - 路由:kernel 靠 routing table 決定封包去向,找不到匹配就送 default gateway;選路用最長前綴匹配(longest prefix match),越精確的規則優先。
- TCP vs UDP:TCP 像打電話——連線導向、保證順序與重傳;UDP 像寄明信片——無連線、快但不保證,適合 NTP、視訊等重速度的場景。
- 位址解析與擴展:同網段靠 ARP(IPv6 用 NDP)把 IP 對到 MAC;私有網段透過 **NAT(IP masquerading)**共享單一公開 IP 出外網。
⚖️ Tradeoffs
手動設定介面與路由 — 靈活但易錯
- 用
ip addr add/ip route add手動指派位址與路由,完全可控。 - 但手動路由通常比想像中複雜、容易設錯;一般建議保持簡單,讓 router 負責 subnet 間的路由。
- 現代機器多半沒有靜態 IP,還要處理無線、斷線重連——超出開機腳本能力。
交給設定管理器 + DHCP — 動態環境的預設
- DHCP 讓主機連上網就自動取得 IP、子網遮罩、default gateway 與 DNS;IPv6 另有無狀態自動設定。
- NetworkManager / systemd-networkd 這類 daemon 統一管理連線、委派
dhclient等工具,處理有線優先、無線重連等情境。 - 代價:多一層抽象與 daemon;但在動態、無線、多介面的真實環境幾乎必要。
🔑 Takeaways
- 網路靠四層堆疊分工:應用 / 傳輸(TCP·UDP + port)/ 網路(IP·路由)/ 實體(Ethernet·MAC)。
- 路由核心是 routing table + default gateway + 最長前綴匹配;同網段定址靠 ARP/NDP,出外網靠 NAT。
- 手動設定可控但易錯,動態環境交給 DHCP + NetworkManager/systemd-networkd,讓 router 專心路由。
No notes yet — jot your takeaways or Q&A here.