TCP/IP 模型是一個四層網絡架構,每一層在數據傳輸時都會對數據進行封裝,添加相應的頭部(和尾部)信息。以下是各層的封裝格式及關鍵字段說明:
1. 應用層(Application Layer)
-
封裝格式:取決于具體應用協議(如 HTTP、FTP、DNS、SMTP 等)。
-
示例:
- HTTP 請求:
GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0
- DNS 查詢:
包含查詢域名、記錄類型(A、AAAA、MX 等)和事務 ID。
- HTTP 請求:
-
作用:定義數據內容和應用交互規則。
2. 傳輸層(Transport Layer)
- 協議:TCP 或 UDP。
- 封裝格式:
- TCP 段(Segment):
| 源端口 (16 bits) | 目的端口 (16 bits) | | 序列號 (32 bits) | | 確認號 (32 bits) | | 頭部長度 | 保留 | 控制標志 (SYN/ACK/FIN等) | 窗口大小 (16 bits) | | 校驗和 (16 bits) | 緊急指針 (16 bits) | | 選項 (可選) | | 數據 (應用層數據) |
- UDP 數據報(Datagram):
| 源端口 (16 bits) | 目的端口 (16 bits) | | 長度 (16 bits) | 校驗和 (16 bits) | | 數據 (應用層數據) |
- TCP 段(Segment):
- 關鍵字段:
- 端口號:標識應用進程(如 80 用于 HTTP)。
- TCP 特有:序列號、確認號、控制標志(可靠傳輸)。
- UDP 更簡單,無連接和可靠性保證。
3. 網絡層(Internet Layer)
- 協議:IP(IPv4 或 IPv6)。
- 封裝格式(IPv4 數據包):
| 版本 (4 bits) | 頭部長度 (4 bits) | 服務類型 (8 bits) | 總長度 (16 bits) | | 標識 (16 bits) | 標志 (3 bits) | 片偏移 (13 bits) | | 生存時間 TTL (8 bits) | 協議 (8 bits, e.g., TCP=6, UDP=17) | 頭部校驗和 (16 bits) | | 源 IP 地址 (32 bits) | | 目的 IP 地址 (32 bits) | | 選項 (可選) | | 數據 (傳輸層段) |
- 關鍵字段:
- 源/目的 IP 地址:標識主機。
- 協議字段:指示上層協議(TCP/UDP)。
- TTL:防止數據包無限循環。
4. 網絡接口層(Link Layer)
- 協議:以太網(Ethernet)、Wi-Fi(802.11)、PPP 等。
- 封裝格式(以太網幀):
| 前導碼 (7 bytes) | 幀開始符 (1 byte) | | 目的 MAC 地址 (6 bytes) | 源 MAC 地址 (6 bytes) | | 類型 (2 bytes, e.g., IPv4=0x0800, ARP=0x0806) | | 數據 (IP 數據包) | | 幀校驗序列 FCS (4 bytes, CRC校驗) |
- 關鍵字段:
- MAC 地址:標識本地網絡中的設備。
- 類型字段:指示上層協議(如 IPv4 或 ARP)。
- FCS:錯誤檢測。
完整封裝流程示例(HTTP over TCP/IP)
- 應用層:HTTP 請求 → 添加 HTTP 頭部。
- 傳輸層:將 HTTP 數據封裝為 TCP 段 → 添加源/目的端口、序列號等。
- 網絡層:將 TCP 段封裝為 IP 數據包 → 添加源/目的 IP 地址。
- 鏈路層:將 IP 數據包封裝為以太網幀 → 添加源/目的 MAC 地址和 FCS。
最終數據通過物理介質(如網線)傳輸,接收方逐層解封裝。
關鍵點總結
- 分層封裝:每層添加自己的頭部,形成“洋蔥式”結構。
- 協議標識:
- 鏈路層通過類型字段標識網絡層協議(如 IPv4)。
- 網絡層通過協議字段標識傳輸層協議(如 TCP)。
- 傳輸層通過端口號標識應用層協議(如 HTTP 的 80 端口)。
- MTU 限制:鏈路層幀大小有限(如以太網默認 1500 字節),超長的 IP 數據包會被分片。