OSI 七層模型完全解析:從實體層到應用層 | Networking
OSI 七層模型 是理解網路通訊的基礎框架,由 ISO 國際標準化組織於 1984 年制定。它將複雜的網路通訊過程拆解為七個各司其職的層級,從最底層的電信號傳輸到最上層的應用程式互動,每一層都有明確的分工。不論是排查網路故障、設計網路架構,還是準備 CCNA 等網路認證考試,OSI 模型都是你必須掌握的核心知識。
七層架構總覽
OSI(Open Systems Interconnection)模型由下而上分為七層,每一層為上一層提供服務,並使用下一層的服務:
┌─────────────────────────────────────────────────────┐
│ 第七層 │ 應用層(Application Layer) │ L7
├─────────────────────────────────────────────────────┤
│ 第六層 │ 表現層(Presentation Layer) │ L6
├─────────────────────────────────────────────────────┤
│ 第五層 │ 會議層(Session Layer) │ L5
├─────────────────────────────────────────────────────┤
│ 第四層 │ 傳輸層(Transport Layer) │ L4
├─────────────────────────────────────────────────────┤
│ 第三層 │ 網路層(Network Layer) │ L3
├─────────────────────────────────────────────────────┤
│ 第二層 │ 資料鏈結層(Data Link Layer) │ L2
├─────────────────────────────────────────────────────┤
│ 第一層 │ 實體層(Physical Layer) │ L1
└─────────────────────────────────────────────────────┘
記憶口訣:All People Seem To Need Data Processing(由上而下,取每層英文首字母)。
接下來逐層解析每一層的功能、PDU(Protocol Data Unit,協定資料單元)、常見協定與設備。
第一層:實體層(Physical Layer)
實體層(Physical Layer)是 OSI 模型的最底層,負責在物理介質上傳輸原始的 位元(Bit) 信號。這一層定義了電壓、電流、連接器規格、傳輸速率等物理特性。
| 項目 | 說明 |
|---|---|
| PDU | 位元(Bit) |
| 定義內容 | 電氣信號、光信號、無線電波、連接器規格 |
| 代表標準 | RS-232、RJ-45、IEEE 802.3、光纖標準 |
| 代表設備 | 集線器(Hub)、中繼器(Repeater)、數據機(Modem)、網路線纜 |
生活比喻:實體層就像是「公路本身」——柏油路面、車道寬度、紅綠燈的電壓規格。它不管車上裝了什麼貨物,只負責讓車子能在路上跑。
常見的傳輸介質包括雙絞線(UTP/STP)、同軸電纜、光纖(單模/多模)、無線電波。傳輸模式分為單工(Simplex)、半雙工(Half-Duplex)和全雙工(Full-Duplex)。
第二層:資料鏈結層(Data Link Layer)
資料鏈結層(Data Link Layer)負責在相鄰節點之間建立可靠的資料傳輸連結。它將位元組合成 框架(Frame),並使用 MAC 位址(Media Access Control Address)進行實體定址。
| 項目 | 說明 |
|---|---|
| PDU | 框架(Frame) |
| 定址方式 | MAC 位址(48 bit) |
| 代表協定 | Ethernet(IEEE 802.3)、Wi-Fi(IEEE 802.11)、PPP |
| 代表設備 | 交換器(Switch)、橋接器(Bridge)、NIC(網路介面卡) |
資料鏈結層又細分為兩個子層:
- LLC(Logical Link Control):負責多工、流量控制與錯誤處理
- MAC(Media Access Control):負責 MAC 位址管理、碰撞處理與框架封裝
Ethernet Frame 結構:
┌──────────┬──────────┬──────────┬──────┬──────────┬─────┐
│ Preamble │ Dest MAC │ Src MAC │ Type │ Payload │ FCS │
│ 8 bytes │ 6 bytes │ 6 bytes │ 2 B │46-1500 B │ 4 B │
└──────────┴──────────┴──────────┴──────┴──────────┴─────┘
其中 FCS(Frame Check Sequence)使用 CRC-32 進行錯誤偵測。交換器會學習來源 MAC 位址,建立 MAC 位址表來進行精確轉發。
生活比喻:資料鏈結層就像「同一棟大樓裡的信件收發室」——它知道大樓裡每個房間的門牌號碼(MAC 位址),負責把信件準確送到同一棟樓裡的收件人手上。
第三層:網路層(Network Layer)
網路層(Network Layer)負責邏輯定址與路由選擇。它使用 IP 位址 來識別設備,並透過路由演算法決定封包從來源到目的地的最佳路徑。
| 項目 | 說明 |
|---|---|
| PDU | 封包(Packet) |
| 定址方式 | IP 位址(IPv4: 32 bit / IPv6: 128 bit) |
| 代表協定 | IP、ICMP、ARP、OSPF、BGP |
| 代表設備 | 路由器(Router)、L3 交換器 |
網路層的關鍵概念包括:
- 路由演算法:距離向量(RIP)、鏈路狀態(OSPF)、路徑向量(BGP)
- TTL(Time to Live):防止封包無限迴圈,每經一個路由器減 1
- NAT(Network Address Translation):私有位址與公共位址轉換
- ARP(Address Resolution Protocol):將 IP 位址解析為 MAC 位址
生活比喻:網路層就像「郵局的分揀系統」——它根據收件人的地址(IP 位址),決定這封信要走哪條路線、經過哪些中轉站,才能送到正確的城市與街區。
第四層:傳輸層(Transport Layer)
傳輸層(Transport Layer)提供端對端(End-to-End)的資料傳輸服務,負責分段(Segmentation)、流量控制和錯誤修復。這一層最重要的兩個協定是 TCP 和 UDP。
| 項目 | 說明 |
|---|---|
| PDU | 區段(Segment, TCP)/ 資料報(Datagram, UDP) |
| 定址方式 | 埠號(Port Number, 0-65535) |
| 代表協定 | TCP、UDP、SCTP、QUIC |
| 代表設備 | 防火牆(L4)、負載平衡器(L4) |
TCP vs UDP 比較
| 特性 | TCP | UDP |
|---|---|---|
| 連線方式 | 連線導向(三次握手) | 無連線 |
| 可靠性 | 可靠(ACK / 重傳) | 不可靠 |
| 順序保證 | 有 | 無 |
| 流量控制 | 有(滑動視窗) | 無 |
| 開銷 | 較大(20 bytes header) | 較小(8 bytes header) |
| 適用場景 | HTTP/HTTPS、FTP、SSH | DNS、VoIP、串流、遊戲 |
TCP 三次握手(Three-Way Handshake) 是建立連線的核心流程:
客戶端 伺服器
| |
| ─── SYN (seq=x) ──────────────> | 第一次:客戶端發送連線請求
| |
| <── SYN-ACK (seq=y, ack=x+1) ── | 第二次:伺服器確認並回應
| |
| ─── ACK (ack=y+1) ────────────> | 第三次:客戶端確認
| |
| ═══ 連線建立,開始傳輸 ═══════════ |
常見埠號速查
| 埠號 | 協定 | 服務 |
|---|---|---|
| 22 | TCP | SSH |
| 53 | TCP/UDP | DNS |
| 80 | TCP | HTTP |
| 443 | TCP | HTTPS |
| 3306 | TCP | MySQL |
| 5432 | TCP | PostgreSQL |
生活比喻:傳輸層就像「快遞服務的選擇」——TCP 像掛號信,有簽收確認、遺失會重寄;UDP 像投遞廣告傳單,速度快但不保證送達。埠號則像是收件人的「部門編號」,確保封包送到正確的應用程式。
第五層:會議層(Session Layer)
會議層(Session Layer)負責建立、管理和終止兩端應用程式之間的會議(Session)。
| 項目 | 說明 |
|---|---|
| PDU | 資料(Data) |
| 核心功能 | 會議建立 / 維護 / 終止、同步點(Checkpoint) |
| 代表協定 | NetBIOS、RPC(Remote Procedure Call)、PPTP |
會議層的一個重要機制是 同步點(Checkpoint):在長時間資料傳輸中設定檢查點,若傳輸中斷可從最近的檢查點恢復,無需從頭開始。
生活比喻:會議層就像「電話總機」——它負責接通、維持和掛斷通話,還能在通話中斷時幫你重新接上,從上次講到的地方繼續。
第六層:表現層(Presentation Layer)
表現層(Presentation Layer)處理資料的格式化、編碼轉換、加密解密與壓縮解壓,確保不同系統間的資料表示一致。
| 項目 | 說明 |
|---|---|
| PDU | 資料(Data) |
| 核心功能 | 資料格式轉換、加密 / 解密、壓縮 / 解壓 |
| 代表標準 | SSL/TLS、JPEG/PNG、MPEG、ASCII/Unicode |
資料處理流程如下:
發送端:應用資料 → 字元編碼(UTF-8)→ 壓縮(gzip)→ 加密(TLS)→ 傳輸層
接收端:傳輸層 → 解密(TLS)→ 解壓(gzip)→ 字元解碼(UTF-8)→ 應用資料
生活比喻:表現層就像「翻譯員」——把一方說的法語翻譯成另一方能理解的英語,同時負責把文件加密封存(加密)或把壓縮包解開(解壓)。
第七層:應用層(Application Layer)
應用層(Application Layer)是最接近使用者的一層,為應用程式提供網路服務介面。
| 項目 | 說明 |
|---|---|
| PDU | 資料(Data) |
| 核心功能 | 提供網路服務(網頁瀏覽、檔案傳輸、電子郵件等) |
| 代表協定 | HTTP/HTTPS、FTP、SMTP/POP3/IMAP、DNS、DHCP、SSH |
| 實務對應 | Web 瀏覽器、電子郵件客戶端、FTP 客戶端 |
生活比喻:應用層就像「你在手機上操作的 App」——你點開瀏覽器看網頁、用 LINE 傳訊息、用 Gmail 寄信,這些都是應用層提供的服務。你不需要知道底下六層做了什麼,只要操作介面就好。
資料封裝與解封裝(Encapsulation / Decapsulation)
當資料從應用層向下傳送時,每一層會加上自己的標頭(Header),這個過程稱為 封裝(Encapsulation);接收端則反向移除標頭,稱為 解封裝(Decapsulation)。
發送端(封裝過程) 接收端(解封裝過程)
┌─────────────────┐ ┌─────────────────┐
│ L7 應用層 │ Data │ L7 應用層 │
├─────────────────┤ ├─────────────────┤
│ L6 表現層 │ Data │ L6 表現層 │
├─────────────────┤ ├─────────────────┤
│ L5 會議層 │ Data │ L5 會議層 │
├─────────────────┤ ├─────────────────┤
│ L4 傳輸層 │ [L4 Hdr] + Data │ L4 傳輸層 │
│ │ = Segment │ │
├─────────────────┤ ├─────────────────┤
│ L3 網路層 │ [L3 Hdr] + Segment │ L3 網路層 │
│ │ = Packet │ │
├─────────────────┤ ├─────────────────┤
│ L2 資料鏈結層 │ [L2 Hdr]+Packet+[FCS] │ L2 資料鏈結層 │
│ │ = Frame │ │
├─────────────────┤ ├─────────────────┤
│ L1 實體層 │ Bits (010110...) │ L1 實體層 │
└────────┬────────┘ └────────┬────────┘
│ │
└──────── 實體介質(銅線/光纖/無線) ─────────┘
PDU 對照表:
| 層級 | PDU 名稱 | 加上的資訊 |
|---|---|---|
| L7-L5 | Data(資料) | 應用資料 |
| L4 | Segment / Datagram | 來源 / 目的埠號、序號 |
| L3 | Packet(封包) | 來源 / 目的 IP 位址、TTL |
| L2 | Frame(框架) | 來源 / 目的 MAC 位址、FCS |
| L1 | Bit(位元) | 電信號 / 光信號 / 無線信號 |
重要觀念:IP 位址在整個傳輸過程中保持不變(除非經過 NAT),但 MAC 位址每經過一個路由器就會改變。這是因為 MAC 位址只在同一個區域網路內有效。
OSI 模型 vs TCP/IP 模型
OSI 模型是理論參考模型,而實際網路通訊以 TCP/IP 模型為主。兩者的對應關係如下:
| OSI 層級 | TCP/IP 對應層 | 說明 |
|---|---|---|
| L7 + L6 + L5 | 應用層(Application) | TCP/IP 將上三層合併,由應用程式自行處理 |
| L4 | 傳輸層(Transport) | 完全對應,TCP / UDP |
| L3 | 網際網路層(Internet) | 完全對應,IP / ICMP |
| L2 + L1 | 網路存取層(Network Access) | TCP/IP 將下兩層合併 |
為什麼實務中使用 TCP/IP 而非 OSI?
- TCP/IP 先於 OSI 被實作並廣泛部署,它是 Internet 的基礎
- OSI 的 L5 / L6 在實務中很少獨立存在,功能通常整合在應用層
- TCP/IP 的四層模型更簡潔,更貼近實際實作
- 幾乎所有現代網路設備和作業系統都基於 TCP/IP 協定棧
不過 OSI 模型仍然是最好的 教學與排錯框架——當你遇到網路問題時,按照七層架構逐層排查,可以快速定位問題所在。
使用 OSI 模型排查網路問題
掌握 OSI 七層模型最大的實務價值,就是 系統性地排查網路故障。從 L1 實體層開始逐層向上排查,可以避免漫無目的的猜測。
各層常見問題與排錯工具
| 問題類型 | 對應層級 | 排錯工具 |
|---|---|---|
| 網路線鬆脫、無燈號 | L1 實體層 | 觀察指示燈、測線器 |
| MAC 位址衝突、VLAN 錯誤 | L2 資料鏈結層 | ip link show、交換器管理介面 |
| 無法 ping 通、路由問題 | L3 網路層 | ping、traceroute、ip route |
| 連線逾時、埠被擋 | L4 傳輸層 | ss、netstat、telnet |
| 憑證錯誤、TLS 問題 | L5/L6 | openssl s_client、curl -v |
| 404、500 錯誤、API 異常 | L7 應用層 | curl、瀏覽器開發者工具、日誌 |
常用排錯指令
L3 網路層 — 測試連通性:
# 測試目標主機是否可達(ICMP 協定,L3)
ping 8.8.8.8
# 預期輸出
# PING 8.8.8.8 (8.8.8.8): 56 data bytes
# 64 bytes from 8.8.8.8: icmp_seq=0 ttl=118 time=3.245 ms
# 64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=3.112 ms
# 追蹤封包經過的路由路徑(L3)
traceroute 8.8.8.8
# 預期輸出
# traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
# 1 192.168.1.1 (192.168.1.1) 1.234 ms 1.122 ms 1.056 ms ← 你的 Gateway
# 2 10.0.0.1 (10.0.0.1) 5.678 ms 5.432 ms 5.321 ms ← ISP 路由器
# 3 ... ← 中繼路由器
# 查看路由表
ip route show
# 預期輸出
# default via 192.168.1.1 dev eth0 ← 預設閘道
# 192.168.1.0/24 dev eth0 scope link ← 本地網段
L4 傳輸層 — 檢查埠與連線狀態:
# 查看正在監聽的埠與程式(L4)
ss -tulnp
# 預期輸出
# Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
# tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234))
# tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=5678))
# udp UNCONN 0 0 127.0.0.53:53 0.0.0.0:* users:(("systemd-resolve",...))
L7 應用層 — DNS 查詢與 HTTP 測試:
# DNS 查詢(L7,測試域名解析是否正常)
nslookup example.com
# 預期輸出
# Server: 127.0.0.53
# Address: 127.0.0.53#53
#
# Non-authoritative answer:
# Name: example.com
# Address: 93.184.216.34
# 使用 curl 測試 HTTP 連線(含詳細資訊)
curl -v https://example.com
# 預期輸出(部分)
# * Trying 93.184.216.34:443...
# * Connected to example.com (93.184.216.34) port 443 (#0)
# * SSL connection using TLSv1.3
# > GET / HTTP/2
# < HTTP/2 200
# 擷取封包進行深度分析(需要 root 權限)
sudo tcpdump -i eth0 -c 10 port 80
# 預期輸出
# listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
# 12:00:01.123456 IP 192.168.1.100.52341 > 93.184.216.34.80: Flags [S], seq 123456
# 12:00:01.156789 IP 93.184.216.34.80 > 192.168.1.100.52341: Flags [S.], seq 654321, ack 123457
排錯實戰口訣
遇到網路問題時,建議按照以下順序逐層排查:
- L1:網路線有沒有插好?燈號是否正常?
- L2:
ip link show看介面是否 UP? - L3:
pingGateway 通不通?ping外部 IP(如8.8.8.8)通不通? - L4:目標埠有沒有開?用
ss或telnet確認 - L7:DNS 解析正常嗎?用
nslookup確認。HTTP 回應正常嗎?用curl -v確認
如果 ping 8.8.8.8 成功但 ping google.com 失敗,問題通常出在 DNS(L7)而不是網路連通性。這就是分層排查的威力。
總結
OSI 七層模型 是理解網路通訊最重要的參考框架。讓我們回顧每一層的核心職責:
| 層級 | 名稱 | 一句話說明 | PDU |
|---|---|---|---|
| L7 | 應用層 | 為使用者提供網路服務介面 | Data |
| L6 | 表現層 | 資料格式化、加密、壓縮 | Data |
| L5 | 會議層 | 管理通訊會議的建立與終止 | Data |
| L4 | 傳輸層 | 端對端傳輸,TCP / UDP | Segment |
| L3 | 網路層 | IP 定址與路由選擇 | Packet |
| L2 | 資料鏈結層 | MAC 定址與框架傳輸 | Frame |
| L1 | 實體層 | 位元信號在物理介質上傳輸 | Bit |
雖然實務中我們使用的是 TCP/IP 四層模型,但 OSI 的七層框架提供了更細緻的分層思維。掌握 OSI 模型最大的價值在於:當你遇到網路問題時,能夠 從 L1 到 L7 系統性地逐層排查,快速定位問題出在哪一層,而不是盲目地亂試。
下次遇到「網路怎麼連不上」的時候,不妨從「網路線有沒有插好」開始,一層一層往上查,你會發現大多數問題其實都能在前四層找到答案。