單元 01 網路全貌:從一臺電腦到遠端服務
學習目標
讀完本章,你應能畫出主機、交換器、無線基地臺、路由器與服務端的位置;區分 MAC 位址、IP 位址、埠與網域名稱;把一次網站存取拆成可驗證的步驟。本章不需要程式先備。
1.1 先問「誰要與誰通訊」
假設筆電中的瀏覽器要取得一個網站的頁面。真正交換資料的是瀏覽器與伺服器上的程式。它們所在的主機需要網路介面、位址與可用路徑,程式需要知道遠端服務的端點,雙方還需要對訊息格式與處理方式有共同約定。
「網路通了」不是單一狀態。無線介面已連上基地臺、取得位址、找得到閘道、能解析名稱、能建立連線、能完成 TLS 驗證、能取得正確 HTTP 回應,分別是不同的檢核點。某一步成功,不能替其他步驟作證。
服務也不一定對應一臺固定機器。一個名稱可以解析到多個位址;反向代理可以代表後端服務接收請求;內容可能由 CDN 快取回覆。初學時先採用「一個客戶端、一個服務端」的模型,之後再逐步放寬假設。
1.2 圖上的裝置各做什麼
主機產生及消費資料。交換器通常根據鏈路層資訊轉送訊框,讓同一個區域網路的介面互通。路由器根據目的 IP 與路由表選擇下一跳,連線不同網段。無線基地臺(AP)提供無線接入,常把無線流量橋接到有線網路。ISP 提供對外連線及更大範圍的路由。
家庭中俗稱的「路由器」常同時包含 AP、交換器、IP 路由、NAT、防火牆、DHCP 伺服器與 DNS 轉送等功能。一個外殼包含多個角色,所以分析時要寫角色,而不只寫產品名稱。獨立 AP 不一定做 NAT;能交換訊框也不代表正在做 IP 路由。

圖中的對外位址使用文件示例網段,僅供推理,不作為實驗連線目標。本機實驗使用 127.0.0.1。
1.3 四種容易混淆的識別資訊
| 資訊 | 主要用途 | 例子 | 分析時要問 |
|---|---|---|---|
| 網域名稱 | 在名稱系統中識別服務或其他資源 | course.example | 誰解析?回應是否來自快取? |
| IP 位址 | 在 IP 網路中描述介面/端點;私有位址可在管理的私有網路路由,不直接在 Internet 全域路由 | 192.168.10.23 | 目的地是否在同一網段? |
| MAC 位址 | 在 Ethernet 等鏈路中識別介面 | 02:00:00:00:00:23 | 本次訊框要交給誰? |
| 埠號 | 供 TCP/UDP 等傳輸協定區分端點 | TCP 443 | 哪個程式在接收?協定是什麼? |
一個 TCP 連線通常以來源 IP、來源埠、目的 IP、目的埠區分,並處在 TCP 的協定脈絡中。分析 TCP 與 UDP 混合流量時,需要把傳輸協定也列出。相同數字的 TCP 埠與 UDP 埠不是同一個端點。
IP 位址可以改變;主機可以有多個介面與多個位址;MAC 也可能隨機化或由軟體設定。因此,不能把其中任何一個識別資訊當作永遠固定的「人的身分」。埠的慣例也不保證實際服務,例如 TCP 443 上不必然是你想像的那個網站。
1.4 一次網站存取的依賴關係
採用下列明確假設:筆電已有 IPv4 位址 192.168.10.23/24;預設閘道及 DNS 轉送器是 192.168.10.1;目標名稱與鄰居位址尚未快取;使用 HTTP/1.1、TCP 與 TLS;沒有應用代理;僅走 IPv4,瀏覽器使用系統解析器,不啟用 DoH/DoT;閘道執行 NAPT。目標的示例位址為 203.0.113.80。
- 瀏覽器或作業系統需要把名稱解析成可用位址。
- DNS 查詢要送到 192.168.10.1。因它在同一網段,而筆電還不知道其 MAC,會先需要 ARP 鄰居解析。
- 得到名稱解析結果後,筆電查路由表。遠端位址不在本地 /24,資料交給預設閘道;步驟 2 已取得其 MAC,快取有效時不再做第二次 ARP。若 DNS 位於遠端網段,送 DNS 查詢時的 ARP 對象也通常是本地閘道。
- TCP 與遠端建立連線。承載 TCP 段的 IP 封包先放進訊框交給閘道;閘道取出封包後,由後續路由器逐跳轉送,每一跳都重新作鏈路封裝。
- TLS 協商與驗證建立受保護的通訊;客戶端驗證伺服器憑證及名稱。
- 瀏覽器送出 HTTP 請求,接收狀態、標頭及內容。
這是一個受假設約束的流程,不是所有網站存取的固定時間表。DNS 快取可以略去網路查詢;IPv6 使用不同的鄰居解析;HTTP/3 使用 QUIC 而不是 TCP。ARP 是鏈路送出訊框時的依賴,可能由 DNS 流量先觸發,不能一律排在 DNS 解析之後。
若筆電連網時連位址都沒有,還要先處理鏈路接入與位址設定,可能包含 Wi-Fi 關聯及 DHCP。後續章節會逐項建立這些模型。
1.5 完整例題:下一個訊框送給誰
筆電向遠端服務送資料,來源 IP 是 192.168.10.23,目的 IP 是 203.0.113.80。本地訊框的來源 MAC 是筆電介面,目的 MAC 是閘道的本地介面,而不是遠端伺服器的 MAC。
原因是 Ethernet 訊框只負責這一段鏈路交付。閘道收到訊框後取出 IP 封包,選擇新的出口,再建立適合下一段鏈路的訊框。普通路由轉送通常保留來源/目的 IP,更新 TTL 等欄位;若經過 NAT,位址或埠還可能被改寫。因此「MAC 逐跳改變」與「IP 絕對不變」不能被綁成一條無條件口訣。
| 觀察位置 | 鏈路目的地 | IP 目的地 | 能直接推論的事 |
|---|---|---|---|
| 筆電的區域網路出口 | 閘道的本地 MAC | 遠端服務 IP | 此訊框先交給閘道 |
| 路由器下一段出口 | 下一跳鏈路位址 | 遠端服務 IP | 路由器已作下一跳決策 |
| NAT 外側 | 依外側鏈路而定 | 遠端服務 IP | 來源可能已換成 NAT 對映 |
在 point-to-point 或 loopback 等介面,鏈路格式與可見欄位可能不同。不能把 Ethernet 的圖直接套在每個介面。
1.6 用證據逐步排錯
先描述症狀:是所有名稱失敗、只有一個服務失敗,還是內容讀取很慢?再提出最小假設:例如「名稱解析失敗」,然後選擇能支持或反駁該假設的觀察。
能 ping 一個位址只表示有某種 ICMP 回應,不保證 TCP 服務存在。ping 沒回應也不一定代表主機不可達,因為防火牆或裝置政策可能不回覆。HTTP 狀態碼表示已與某個 HTTP 端點交換訊息,但仍需檢查內容及是否由中間服務回覆。
這門課反覆採用同一個方法:先畫路徑,寫下假設,取得證據,確認證據的範圍,再修正模型。
常見誤解
- 「同一臺裝置只有一個 IP」:多介面、多位址與虛擬介面都很常見。
- 「交換器和路由器只是速度不同」:它們的轉送依據及角色不同。
- 「知道遠端 MAC 才能上網」:通常只需知道本地下一跳的鏈路位址。
- 「連上 Wi-Fi 就能取得網站內容」:接入只是完整流程的一個環節。
實驗與習題
完成 L01。本機實驗會觀察 TCP 端點、HTTP 請求與內容;它不經過家庭閘道、外部 DNS、NAT 或 TLS。
- 畫出你自己的網路拓樸,將家庭裝置中的角色分開標示。
- TCP 443 與 UDP 443 可以同時由不同服務使用嗎?說明理由。
- 在上述示例中,第一個 ARP 可能由哪個應用流程觸發?
- 為什麼封包的遠端 IP 與本地訊框的目的 MAC 可以指向不同裝置?
- HTTP 200、ping 成功、Wi-Fi 已連線,各能支持什麼結論?
章末檢核
不用背流程清單,試著逐項回答:誰產生資料?名稱如何解析?下一跳是誰?哪個服務端點接收?每種觀察最多能支持什麼結論?
來源
RFC 826(ARP)、RFC 791(IPv4)、RFC 9293(TCP)、RFC 9110/9112(HTTP)、RFC 1034/1035(DNS)、RFC 9846(TLS 1.3)、RFC 5737(文件位址)、RFC 2606(保留域名)。規範連結及版本註記見 references/source-notes.md。圖與例題為本教材自行建立的教學模型。