ARP 位址解析協定
核心功能
動態映射 IP 位址 → MAC 位址。系統自動完成:廣播 ARP Request「誰擁有此 IP?」→ 目標單播 ARP Reply「我是,我的 MAC 是 xx:xx:xx:xx:xx:xx」。
ARP 封包格式 (乙太網 + IPv4)
乙太網標頭 (14 bytes) | ARP 承載 (28 bytes)
目的 MAC(6) | 來源 MAC(6) | 類型 0x0806
硬體類型(2)=1 | 協定類型(2)=0x0800 | 硬體長度(1)=6 | 協定長度(1)=4
操作碼(2) | 發送者 MAC(6) | 發送者 IP(4) | 目標 MAC(6) | 目標 IP(4)
關鍵欄位
| 欄位 | 值/說明 |
| 硬體類型 | 1 = 乙太網 |
| 協定類型 | 0x0800 = IPv4 |
| 操作碼 | 1=ARP Request, 2=ARP Reply, 3=RARP Request, 4=RARP Reply |
| 目標 MAC (Request) | 全 0 (未知) |
| 目標 MAC (Reply) | 填入請求者 MAC |
ARP 快取與管理
- 動態項目:有生存時間 (通常 20 分鐘完全、5 分鐘未使用)
- 靜態項目:手工添加、永久有效
arp -a 查看、`arp -d` 刪除、`arp -s` 添加靜態對應
ARP 進階機制
ARP Proxy (委託 ARP)
- 路由器代表其他網段主機回應 ARP Request
- 欺騙發送者:以為路由器就是目標主機
- 用途:子網劃分透明化、無路由協定主機跨網段通訊
免費 ARP (Gratuitous ARP)
- 主機啟動時查詢自己的 IP (目標 IP = 發送者 IP)
- 雙重用途:
- 偵測 IP 衝突 (收到回應 = 衝突)
- 更新其他主機 ARP 快取 (如換網卡、IP 漂移)
- 不期望回應,純宣告性質
RARP 逆向位址解析協定
- 功能:MAC → IP,無盤工作站開機取得 IP
- 封包格式與 ARP 相同,操作碼 3/4
- 缺陷:僅回傳 IP、連結層廣播不跨路由器
- 已被 BOOTP/DHCP 取代
ICMP 網際網路控制訊息協定
定位與特性
- 視為 IP 層組成部分 (協定號 1)
- 封裝於 IP 資料報內 (IP 標頭協定欄位 = 1)
- 兩大類:錯誤報文、查詢報文
- 檢驗和算法同 IP 標頭 (僅覆蓋 ICMP 部分)
不產生 ICMP 錯誤的 5 種情況
- ICMP 錯誤報文本身 (防止風暴)
- 目的為廣播/多播位址
- 連結層廣播幀
- 非第一片分片
- 來源非單一主機 (0.0.0.0、環回、廣播、多播)
ICMP 錯誤報文通用格式
類型 | 代碼 | 檢驗和 | 參數 (視類型而定) | 原始 IP 標頭 + 前 8 bytes 資料
(包含原始傳輸層標頭:來源/目的埠、序號等)
關鍵 ICMP 訊息類型詳細解析
位址遮罩請求/回應 (Type 17/18)
- 無盤系統開機取得子網遮罩
- 廣播請求,授權代理單播回應
- 識別符/序號配對請求回應
- RFC 規定:非授權代理不得回應
時間戳請求/回應 (Type 13/14)
- 查詢遠端主機當前時間 (午夜起毫秒數)
- 三個時間戳:發起、接收、傳送
- 多數實作:接收=傳送 (無處理延遲)
- 不提供日期,需配合其他方式
連接埠不可達 (Type 3 Code 3)
- UDP 封包到達無監聽埠 → 回送此錯誤
- 路徑 MTU 發現:Code 4 (需分片但 DF=1),低 16 bits 填下一跳 MTU
- 承載原始 IP 標頭 + 前 8 bytes (含 UDP 標頭)
其他重要類型
| 類型 | 代碼 | 名稱 | 用途 |
| 0 | 0 | Echo Reply | Ping 回應 |
| 3 | 0-15 | Destination Unreachable | 網路/主機/埠/協定不可達、需分片、來源路由失敗等 |
| 4 | 0 | Source Quench | 擁塞控制 (已棄用) |
| 5 | 0-3 | Redirect | 路由優化 |
| 8 | 0 | Echo Request | Ping 請求 |
| 11 | 0/1 | Time Exceeded | TTL=0 / 重組超時 |
| 12 | 0 | Parameter Problem | IP 標頭參數錯誤 |
- 上一篇文章: ICMP 診斷工具、IP 選路與 RIP 路由協定深度實戰解析
- 下一篇文章: TCP/IP 協定族基礎架構與 IP 協定核心機制完整指南
Copyright ©
程式碼之家 All Rights Reserved