電腦網路與 Internet 通訊

單元 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。

  1. 瀏覽器或作業系統需要把名稱解析成可用位址。
  2. DNS 查詢要送到 192.168.10.1。因它在同一網段,而筆電還不知道其 MAC,會先需要 ARP 鄰居解析。
  3. 得到名稱解析結果後,筆電查路由表。遠端位址不在本地 /24,資料交給預設閘道;步驟 2 已取得其 MAC,快取有效時不再做第二次 ARP。若 DNS 位於遠端網段,送 DNS 查詢時的 ARP 對象也通常是本地閘道。
  4. TCP 與遠端建立連線。承載 TCP 段的 IP 封包先放進訊框交給閘道;閘道取出封包後,由後續路由器逐跳轉送,每一跳都重新作鏈路封裝。
  5. TLS 協商與驗證建立受保護的通訊;客戶端驗證伺服器憑證及名稱。
  6. 瀏覽器送出 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 端點交換訊息,但仍需檢查內容及是否由中間服務回覆。

這門課反覆採用同一個方法:先畫路徑,寫下假設,取得證據,確認證據的範圍,再修正模型。

常見誤解

實驗與習題

完成 L01。本機實驗會觀察 TCP 端點、HTTP 請求與內容;它不經過家庭閘道、外部 DNS、NAT 或 TLS。

  1. 畫出你自己的網路拓樸,將家庭裝置中的角色分開標示。
  2. TCP 443 與 UDP 443 可以同時由不同服務使用嗎?說明理由。
  3. 在上述示例中,第一個 ARP 可能由哪個應用流程觸發?
  4. 為什麼封包的遠端 IP 與本地訊框的目的 MAC 可以指向不同裝置?
  5. 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。圖與例題為本教材自行建立的教學模型。