網路通訊基礎概念與協定原理
本文介紹電腦網路通訊的核心觀念,包含網路分層模型、TCP/IP 相關協定、常見網路設備,以及 HTTPS / TLS 如何保護資料傳輸。
1. 什麼是網路通訊?
網路通訊是指多個裝置,例如電腦、伺服器、手機或 IoT 裝置,透過共同遵守的規則交換資料。
這些規則稱為 通訊協定 (Protocol)。
舉例來說:
- 瀏覽器與網站伺服器之間常使用 HTTP / HTTPS。
- 應用程式之間的可靠傳輸常使用 TCP。
- 即時語音、遊戲或串流場景常使用 UDP。
- 不同網路之間的路由主要依賴 IP。
為了讓不同廠商、作業系統與網路設備可以互相溝通,網路系統通常會採用分層設計。
2. 網路分層模型
常見的分層模型有兩種:
- OSI 七層模型:偏理論與教學用途。
- TCP/IP 四層模型:偏實務網際網路架構。
分層設計的好處,是讓每一層專注處理特定問題,並透過清楚的介面與上下層協作。
2.1 OSI 與 TCP/IP 對照
| OSI 七層模型 | TCP/IP 四層模型 | 核心職責 | 常見協定與元件 |
|---|---|---|---|
| 7. 應用層 (Application) | 應用層 (Application) | 提供應用程式使用的網路服務 | HTTP、HTTPS、FTP、DNS、SMTP |
| 6. 表達層 (Presentation) | 應用層 (Application) | 資料格式、編碼、壓縮與加密處理 | TLS、JSON、XML |
| 5. 會議層 (Session) | 應用層 (Application) | 會話建立、維持與結束 | RPC、NetBIOS |
| 4. 傳輸層 (Transport) | 傳輸層 (Transport) | 端對端資料傳輸、可靠性、流量控制 | TCP、UDP |
| 3. 網路層 (Network) | 網際網路層 (Internet) | IP 定址與路由選擇 | IPv4、IPv6、ICMP、Router |
| 2. 資料連結層 (Data Link) | 網路存取層 (Network Access) | 相鄰節點間的訊框傳輸、MAC 定址與錯誤檢測 | Ethernet、Wi-Fi、Switch |
| 1. 實體層 (Physical) | 網路存取層 (Network Access) | 位元流與實體媒介傳輸 | 雙絞線、光纖、無線電波、RJ-45 |
實務上,TCP/IP 模型的應用層通常涵蓋 OSI 第 5、6、7 層的功能。
2.2 資料封裝與解封裝
當應用程式送出資料時,資料會由上往下通過各層,每一層加入自己的控制資訊,這稱為 封裝 (Encapsulation)。
接收端收到資料後,再由下往上逐層解析,移除各層標頭,這稱為 解封裝 (Decapsulation)。
flowchart LR
subgraph SenderBox ["傳送端:封裝"]
direction TB
Data["應用資料 Data"] --> Segment["傳輸層加上 TCP / UDP 標頭:Segment / Datagram"]
Segment --> Packet["網路層加上 IP 標頭:Packet"]
Packet --> Frame["資料連結層加上 Frame Header / Trailer:Frame"]
end
Medium["實體媒介傳輸<br/>電氣訊號 / 光訊號 / 無線訊號"]
subgraph ReceiverBox ["接收端:解封裝"]
direction BT
FrameIn["讀取 Frame"]
FrameIn --> PacketIn["解析資料連結層資訊,取出 IP 封包"]
PacketIn --> SegmentIn["解析 IP 標頭,取出 Segment / Datagram"]
SegmentIn --> DataIn["解析 TCP / UDP 標頭,交給應用程式"]
end
SenderBox -->|Frame 送出| Medium
Medium -->|Frame 接收| ReceiverBox
3. IP 協定:定址與路由
IP (Internet Protocol) 位於網路層,負責將封包從來源端送往目的端。
3.1 IP 位址
IP 位址是裝置在網路上的邏輯地址,常見有:
- IPv4:32-bit,例如
192.168.1.1 - IPv6:128-bit,用來解決 IPv4 位址不足等問題
IP 位址可能會隨著裝置連到不同網路而改變。
3.2 IP 的特性
IP 是:
- 不需先建立連線 (Connectionless)
- 不可靠 (Unreliable)
- 盡力傳送 (Best-effort Delivery)
也就是說,IP 只負責盡力把封包送往目的地,但不保證:
- 一定送達
- 不重複
- 不遺失
- 依照原順序抵達
這些可靠性通常由上層協定,例如 TCP,來處理。
3.3 IP 位址 vs. MAC 位址
| 類型 | 所在層級 | 作用 |
|---|---|---|
| IP 位址 | 網路層 | 跨網路定位與路由 |
| MAC 位址 | 資料連結層 | 區域網路內的節點識別與訊框傳送 |
MAC 位址通常由網卡廠商配置,理論上應具唯一性;但實務上可能被作業系統隨機化、虛擬化或手動修改。
4. TCP vs. UDP
傳輸層負責處理應用程式之間的資料傳輸。最常見的兩個傳輸層協定是:
- TCP
- UDP
4.1 TCP:可靠且有順序的連線傳輸
TCP (Transmission Control Protocol) 是連線導向的可靠傳輸協定。
特性
- 連線導向
- 可靠傳輸
- 有序傳輸
- 流量控制
- 擁塞控制
- 以連續資料流的形式提供資料給應用程式
三向交握
在正式傳輸資料前,TCP 會透過三向交握建立連線:
sequenceDiagram
participant Client as 用戶端
participant Server as 伺服器
Client->>Server: SYN
Server->>Client: SYN-ACK
Client->>Server: ACK
TCP 是否保證 100% 送達?
TCP 會透過 ACK、重傳、排序與流量控制提高可靠性,但不代表資料在任何情況下都能送達。
若網路中斷、對方主機關機、連線逾時或系統發生錯誤,TCP 仍可能無法完成傳輸。此時應用程式會收到錯誤,或連線會被中斷。
比較準確的說法是:
TCP 會盡力提供可靠且有順序的連線傳輸;若無法完成傳輸,會透過錯誤或連線中斷讓應用程式得知。
4.2 UDP:低延遲、不需先建立連線的傳輸協定
UDP (User Datagram Protocol) 是傳輸層協定,傳送資料前不需要先建立連線。
特性
- 傳送前不需要先建立連線。
- 不保證送達。
- 不保證順序。
- 不內建重傳。
- 協定開銷小,延遲低。
常見應用
- 線上遊戲
- 即時語音 / 視訊
- 串流媒體
- DNS 查詢
- QUIC(HTTP/3 使用的傳輸協定)
UDP 常用於可以容忍少量封包遺失,但對延遲敏感的場景。若需要可靠性,通常會由應用層或建立在 UDP 之上的協定自行處理,例如 QUIC。
QUIC 是建立在 UDP 之上的傳輸協定,HTTP/3 會使用 QUIC。它會在 UDP 之上處理加密、連線管理、重傳與多路傳輸,所以不是 UDP 本身提供可靠傳輸。
5. 常見網路設備
5.1 交換器
交換器主要工作在資料連結層,負責區域網路內的訊框轉送。
它會學習連接裝置的 MAC 位址,建立 MAC 位址表 (MAC address table),並依目標 MAC 位址轉送資料,而不是像傳統集線器那樣單純廣播到所有連接埠。
5.2 路由器
路由器主要工作在網路層,負責在不同網路或子網路之間轉送 IP 封包。
它會根據封包中的目的 IP 位址與路由表,決定下一跳 (Next Hop)。
5.3 閘道器
閘道器是通往其他網路的出口。一般家用網路中的預設閘道器,通常就是家中的路由器 IP。
當電腦要連線到區域網路以外的 IP 時,封包會先送到預設閘道器,再由它轉送到外部網路。
6. 網路通訊安全:HTTPS 與 TLS
HTTP 本身是明文協定,傳輸內容可能被中間節點觀察或竄改。現代網站通常使用 HTTPS,也就是在 HTTP 與下層傳輸之間加入 TLS 安全層。
現代通訊主要使用 TLS。SSL 是早期前身,已不建議使用;不過日常仍常聽到「SSL 憑證」或「SSL/TLS」這類慣用說法。
6.1 TLS 提供什麼保護?
TLS 主要提供:
- 機密性:避免內容被未授權者讀取。
- 完整性:避免內容在傳輸途中被竄改而不被發現。
- 身分驗證:透過憑證與簽章驗證伺服器身分。
6.2 TLS 如何建立安全通道?
簡化來說,TLS 會做兩件重要的事:
-
驗證伺服器身分
伺服器會提供數位憑證,瀏覽器會檢查憑證是否可信、是否過期、網域是否符合。 -
協商對稱金鑰
用戶端與伺服器透過 ECDHE / DHE 等金鑰協商機制產生共享祕密,並衍生出後續傳輸使用的對稱加密金鑰。
安全通道建立後,HTTP request / response 的大部分內容都會在 TLS record 中被加密與完整性保護,例如:
- HTTP method
- path
- headers
- body
- status code
但仍有部分資訊可能被外部觀察到,例如:
- 目的 IP 位址
- TCP / UDP 連接埠
- 部分 TLS 握手資訊
- 未加密 DNS 查詢
- 未使用 ECH 時的 SNI
相關概念延伸閱讀
- 程式設計基礎概念與運作原理:理解網路協定與應用程式背後的程式邏輯。