01-3. TCP/IP 四層模型

⏱️ 閱讀時間: 10 分鐘 🎯 難度: ⭐⭐ (簡單)


🎯 本篇重點

理解 TCP/IP 四層模型,知道它和 OSI 七層的差異,以及為什麼實際上我們更常用 TCP/IP 模型。


🤔 什麼是 TCP/IP 模型?

TCP/IP Model = 實際運作的網路架構

一句話解釋: TCP/IP 是實際運作在網路上的模型,把 OSI 的七層簡化成四層,更實用、更容易理解。


🏢 理論 vs 實務的比喻

OSI 七層 = 理想的組織架構圖

總經理(應用層)
    ↓
副總經理(表現層)
    ↓
部門經理(會話層)
    ↓
組長(傳輸層)
    ↓
主任(網路層)
    ↓
專員(資料鏈結層)
    ↓
助理(實體層)

看起來很完整,但太複雜!

TCP/IP 四層 = 實際運作的組織

老闆(應用層)
  ↓
經理(傳輸層)
  ↓
主管(網路層)
  ↓
員工(網路介面層)

簡單、實用、容易管理!

📊 TCP/IP 四層架構

完整架構圖

┌─────────────────────────────────┐
│    第 4 層:應用層                │
│   (Application Layer)           │
│                                 │
│   HTTP, HTTPS, FTP, SMTP,       │
│   DNS, SSH, Telnet              │
└─────────────────────────────────┘
            ↕
┌─────────────────────────────────┐
│    第 3 層:傳輸層                │
│   (Transport Layer)             │
│                                 │
│   TCP, UDP                      │
└─────────────────────────────────┘
            ↕
┌─────────────────────────────────┐
│    第 2 層:網路層                │
│   (Internet Layer)              │
│                                 │
│   IP, ICMP, ARP                 │
└─────────────────────────────────┘
            ↕
┌─────────────────────────────────┐
│   第 1 層:網路介面層              │
│   (Network Interface Layer)     │
│                                 │
│   Ethernet, Wi-Fi, PPP          │
└─────────────────────────────────┘

🔍 TCP/IP 四層詳解

第 4 層:應用層(Application Layer)

功能: 提供各種網路應用服務

比喻: 你用的各種 App(結合了 OSI 的第 5、6、7 層)

常見應用:
├─ 瀏覽網頁 → HTTP/HTTPS
├─ 傳檔案 → FTP
├─ 收發郵件 → SMTP/POP3/IMAP
├─ 遠端登入 → SSH/Telnet
├─ 查詢網址 → DNS
└─ 即時通訊 → WebSocket

就像:
- 你用 Chrome 瀏覽網頁
- 你用 FileZilla 上傳檔案
- 你用 Outlook 收發郵件

實際例子:

# 應用層:使用 HTTP 協定
import requests

response = requests.get('https://www.google.com')
print(response.status_code)  # 200

# 你只需要知道用 HTTP,不用管底層怎麼傳輸

第 3 層:傳輸層(Transport Layer)

功能: 負責端對端的資料傳輸

比喻: 快遞公司的寄送服務

兩種服務方式:

TCP(Transmission Control Protocol):
├─ 掛號快遞(可靠)
├─ 確認送達(三次握手)
├─ 保證順序(編號)
├─ 重新傳送(遺失補寄)
└─ 適合:網頁、郵件、檔案下載

UDP(User Datagram Protocol):
├─ 一般快遞(不保證)
├─ 不確認送達
├─ 不保證順序
├─ 不重新傳送
└─ 適合:視訊、直播、線上遊戲

實際例子:

# TCP:下載檔案(必須完整)
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # TCP
sock.connect(('example.com', 80))
sock.send(b'GET / HTTP/1.1\r\n\r\n')
data = sock.recv(1024)  # 確保收到資料

# UDP:視訊通話(即時性重要)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  # UDP
sock.sendto(b'video frame', ('receiver.com', 5000))
# 不等確認,直接送下一幀

第 2 層:網路層(Internet Layer)

功能: 負責路由和定址

比喻: GPS 導航系統

核心協定:

IP(Internet Protocol):
├─ IPv4:192.168.1.1(32 位元)
├─ IPv6:2001:0db8:85a3::(128 位元)
└─ 定址、路由

ICMP(Internet Control Message Protocol):
├─ ping(測試連線)
├─ traceroute(追蹤路徑)
└─ 錯誤回報

ARP(Address Resolution Protocol):
└─ IP 地址 → MAC 地址轉換

實際例子:

# ping:測試連線(使用 ICMP)
$ ping google.com
64 bytes from 142.250.185.46: icmp_seq=1 ttl=118 time=5.2 ms

# traceroute:追蹤路徑(使用 ICMP)
$ traceroute google.com
1  192.168.1.1 (192.168.1.1)  1.234 ms
2  10.0.0.1 (10.0.0.1)  5.678 ms
3  ...

# 網路層決定封包如何從台北到美國

第 1 層:網路介面層(Network Interface Layer)

功能: 實際的硬體傳輸(結合了 OSI 的第 1、2 層)

比喻: 實際的道路和交通工具

負責的工作:
├─ 實體傳輸(網路線、Wi-Fi、光纖)
├─ MAC 地址
├─ 幀(Frame)封裝
└─ 錯誤偵測

技術:
├─ Ethernet(有線網路)
├─ Wi-Fi(無線網路)
├─ PPP(點對點協定)
└─ 光纖

實際例子:

你的電腦連到 Wi-Fi 路由器:

網路介面層做的事:
1. 把資料包成 Wi-Fi 訊號
2. 加上 MAC 地址
   來源:你電腦的 MAC(aa:bb:cc:dd:ee:ff)
   目的:路由器的 MAC(11:22:33:44:55:66)
3. 透過天線發送無線電波
4. 路由器接收並轉發

🆚 OSI vs TCP/IP 對比

層級對應關係

OSI 七層                    TCP/IP 四層
─────────────────────────────────────────
第 7 層:應用層    ┐
第 6 層:表現層    ├──→   第 4 層:應用層
第 5 層:會話層    ┘

第 4 層:傳輸層    ───→   第 3 層:傳輸層

第 3 層:網路層    ───→   第 2 層:網路層

第 2 層:資料鏈結層 ┐
第 1 層:實體層    ┘─→   第 1 層:網路介面層

詳細對比表

特性OSI 七層TCP/IP 四層
層數7 層4 層
目的理論標準實際實作
發展1984 年(較晚)1970 年代(較早)
使用教學、概念實際網路運作
彈性嚴格分層較靈活
複雜度複雜簡單

為什麼實務用 TCP/IP?

原因 1:歷史因素
├─ TCP/IP 先發展(1970 年代)
├─ Internet 建立在 TCP/IP 上
└─ OSI 太晚(1984 年)

原因 2:實用性
├─ TCP/IP 更簡單
├─ 容易實作
└─ 效能更好

原因 3:普及性
├─ 所有作業系統支援 TCP/IP
├─ 所有網路設備使用 TCP/IP
└─ 已成為事實標準

就像:
- VHS vs Betamax(錄影帶格式戰爭)
- TCP/IP 贏了,成為標準

🌐 實際範例:瀏覽網頁

完整流程(TCP/IP 四層視角)

你在瀏覽器輸入 www.google.com

【第 4 層:應用層】
瀏覽器(應用程式):
├─ 使用 HTTP 協定
├─ 發送請求:GET / HTTP/1.1
└─ Host: www.google.com

資料:
GET / HTTP/1.1
Host: www.google.com
User-Agent: Chrome

↓ 交給下一層

【第 3 層:傳輸層】
TCP:
├─ 建立連線(三次握手)
├─ 將資料切成小片段(Segment)
├─ 加上序號(保證順序)
├─ 加上 Port 號
   - 來源 Port:52341(隨機)
   - 目的 Port:80(HTTP)
└─ 確保可靠傳輸

資料變成:
[TCP Header: Port 52341→80] + HTTP 資料

↓ 交給下一層

【第 2 層:網路層】
IP:
├─ 加上 IP 地址
   - 來源 IP:192.168.1.100(你的電腦)
   - 目的 IP:142.250.185.46(Google)
├─ 決定路由(從台北到美國)
└─ 封包(Packet)

資料變成:
[IP Header: 192.168.1.100→142.250.185.46]
+ [TCP Header] + HTTP 資料

↓ 交給下一層

【第 1 層:網路介面層】
Wi-Fi / Ethernet:
├─ 加上 MAC 地址
   - 來源 MAC:你電腦的網卡
   - 目的 MAC:路由器的網卡
├─ 包成訊框(Frame)
└─ 轉成無線電波/電子訊號傳送

資料變成:
[Ethernet Header: MAC] + [IP Header]
+ [TCP Header] + HTTP 資料

↓ 實際傳送

透過 Wi-Fi → 路由器 → ISP → 網路骨幹
→ Google 資料中心

↓ 到達 Google 伺服器

【Google 伺服器接收】
反向解封裝:
第 1 層:收到無線電波,還原成資料
第 2 層:檢查 MAC,移除 Ethernet Header
第 3 層:檢查 IP,移除 IP Header
第 4 層:檢查 TCP,重組資料
第 5 層:解析 HTTP 請求,回傳網頁

↓ 回傳過程重複上述步驟

Google 伺服器 → 你的電腦
你的瀏覽器顯示 Google 首頁!

🛠️ 實戰工具

查看每一層的資訊

# 第 4 層(應用層):測試 HTTP
$ curl -I https://www.google.com
HTTP/2 200
content-type: text/html

# 第 3 層(傳輸層):查看 TCP 連線
$ netstat -an | grep 80
tcp4  0  0  192.168.1.100.52341  142.250.185.46.80  ESTABLISHED

# 第 2 層(網路層):查看路由
$ ip route
default via 192.168.1.1 dev wlan0

$ traceroute google.com
1  192.168.1.1 (192.168.1.1)  1.234 ms
2  10.0.0.1 (10.0.0.1)  5.678 ms
...

# 第 1 層(網路介面層):查看網卡資訊
$ ifconfig
wlan0: flags=8863<UP,BROADCAST,RUNNING>
    inet 192.168.1.100 netmask 0xffffff00
    ether aa:bb:cc:dd:ee:ff

Wireshark 抓包分析

當你訪問網站時,Wireshark 顯示:

【第 1 層:網路介面層】
Frame 1: 74 bytes on wire
    Ethernet II
    來源: aa:bb:cc:dd:ee:ff
    目的: 11:22:33:44:55:66

【第 2 層:網路層】
Internet Protocol Version 4
    來源: 192.168.1.100
    目的: 142.250.185.46

【第 3 層:傳輸層】
Transmission Control Protocol
    來源 Port: 52341
    目的 Port: 80 (HTTP)
    Seq: 1
    Flags: SYN

【第 4 層:應用層】
Hypertext Transfer Protocol
    GET / HTTP/1.1
    Host: www.google.com

📝 每層的核心協定

TCP/IP 協定族

第 4 層(應用層):
├─ HTTP/HTTPS(網頁)
├─ FTP(檔案傳輸)
├─ SMTP/POP3/IMAP(郵件)
├─ DNS(域名解析)
├─ SSH(安全遠端登入)
├─ Telnet(遠端登入)
└─ DHCP(動態 IP 分配)

第 3 層(傳輸層):
├─ TCP(可靠傳輸)
└─ UDP(快速傳輸)

第 2 層(網路層):
├─ IP(定址、路由)
├─ ICMP(ping、錯誤回報)
├─ ARP(IP → MAC)
└─ RARP(MAC → IP)

第 1 層(網路介面層):
├─ Ethernet(有線)
├─ Wi-Fi(無線)
├─ PPP(點對點)
└─ Token Ring(舊技術)

🎯 面試常見問題

Q1: OSI 和 TCP/IP 有什麼差別?

答案:
1. 層數不同:OSI 7 層,TCP/IP 4 層
2. 用途不同:OSI 是理論模型,TCP/IP 是實際運作
3. 發展不同:TCP/IP 更早,已成為標準
4. OSI 用於教學,TCP/IP 用於實作

比喻:
OSI = 教科書上的理想流程
TCP/IP = 實際公司運作的流程

Q2: 為什麼 TCP/IP 只有四層?

答案:
1. 更簡單、更實用
2. OSI 的第 5、6、7 層合併成應用層
3. OSI 的第 1、2 層合併成網路介面層
4. 減少複雜度,提高效率

比喻:
就像簡化公司組織架構
不需要那麼多層級
扁平化管理更有效率

Q3: TCP/IP 模型中最重要的是哪一層?

答案:
每一層都重要,但:
- 應用層:使用者直接接觸(最容易理解)
- 傳輸層:TCP/UDP 決定可靠性(核心)
- 網路層:IP 定址,Internet 的基礎
- 網路介面層:實際傳輸(基礎設施)

比喻:
就像蓋房子
- 地基(網路介面層)
- 樑柱(網路層)
- 管線(傳輸層)
- 裝潢(應用層)
都不能少!

✅ 重點回顧

TCP/IP 四層模型:

第 4 層:應用層(HTTP、FTP、DNS)
第 3 層:傳輸層(TCP、UDP)
第 2 層:網路層(IP、ICMP)
第 1 層:網路介面層(Ethernet、Wi-Fi)

與 OSI 的關係:

  • ✅ OSI 是理論標準(教學用)
  • ✅ TCP/IP 是實際運作(實務用)
  • ✅ TCP/IP 更簡單(4 層 vs 7 層)
  • ✅ Internet 建立在 TCP/IP 上

每層重點:

  • 應用層 - 你用的 App(HTTP、Email)
  • 傳輸層 - 可靠傳輸(TCP)或快速傳輸(UDP)
  • 網路層 - 路由、IP 定址
  • 網路介面層 - 實體傳輸(Wi-Fi、網路線)

封裝過程:

發送:
應用層資料
→ 加 TCP Header
→ 加 IP Header
→ 加 Ethernet Header
→ 傳送

接收:
收到訊號
→ 移除 Ethernet Header
→ 移除 IP Header
→ 移除 TCP Header
→ 取得應用層資料

實務應用:

  • ✅ 網路除錯時知道在哪一層出問題
  • ✅ 選擇協定時理解各層的功能
  • ✅ 面試時能清楚說明網路架構

上一篇: 01-2. OSI 七層模型 下一篇: 01-4. TCP vs UDP


最後更新:2025-01-06

0%