2026 年 05 月 07 日
CH10 — ARP · RARP · ICMP
📋 大綱
2ARP 機制 — IP→MAC 位址解析
3RARP 機制 — MAC→IP 位址解析
4ARP/RARP 標頭 — 9 欄位格式
5ICMP 協定 — 訊息類型總覽
6ICMP 標頭格式 — 查詢與錯誤訊息
7Echo 與 ping / tracert
8Destination Unreachable — Type 3
9其他 ICMP 訊息類型
📡 2|簡介
ARP
Address Resolution Protocol(位址解析協定)
將 IP 位址(邏輯位址)解析為 實體位址(MAC 位址)。
RARP
Reverse ARP(反向位址解析協定)
將 實體位址(MAC 位址)解析為 IP 位址(邏輯位址)。
ICMP
Internet Control Message Protocol(網際網路控制訊息協定)
用於錯誤回報、偵錯與控制,是網路層的輔助協定,需與 IP 標頭搭配使用。
密實體位址與邏輯位址
兩種位址的差異
| 實體位址(MAC) | 邏輯位址(IP) | |
|---|---|---|
| 持久性 | 燒錄在網卡,全域唯一 | 可由管理員或 DHCP 動態分配 |
| 管理單位 | IEEE | ICANN / 區域註冊機構 |
| 用途 | 資料連結層定址 | 網路層定址 |
📡 3|ARP 機制
傳送資料前,會先檢查 ARP Cache(ARP 對照表)。若找不到對應的 IP 位址,才廣播 ARP 請求。
運作流程
主機 A(140.134.36.56)要和主機 B(140.134.36.110)通訊
1
主機 A 查自己的 ARP Cache,找不到 140.134.36.110
↓
2
主機 A 廣播 ARP 請求(目標 MAC =
FF-FF-FF-FF-FF-FF)↓
3
所有主機收到,但只有 140.134.36.110 回覆 ARP 回應
↓
✓
主機 A 將
140.134.36.110 ↔ MAC 位址 寫入 ARP Cache,通訊開始訊息封裝結構
ARP 請求與回覆的三層封裝
| 資料連結層標頭 | 網路層標頭 | 訊息內容 |
|---|---|---|
| 含目標 MAC(廣播:FF-FF-FF...) | 含發送端 IP | ARP 請求/回覆資料 |
📡 4|RARP 機制
來源端知道自己 MAC 位址,但不知道 IP 位址。必須倚賴 RARP 伺服器執行查詢工作。
應用場景
常見
無磁碟機或終端機的場合
電腦沒有硬碟,無法儲存 IP 位址,開機時需向 RARP 伺服器查詢自己的 IP。
RARP 與 ARP 比較
ARP — 已知 IP,查 MAC
方向IP → MAC
已知IP 位址
目的得到 MAC 位址
伺服器不需要
用途一般主機通訊前解析
RARP — 已知 MAC,查 IP
方向MAC → IP
已知MAC 位址
目的得到 IP 位址
伺服器需要 RARP 伺服器
用途無碟主機開機取得 IP
📡 5|ARP/RARP 標頭
ARP 與 RARP 的標頭定義相同,共分 9 個欄位。
9 欄位格式
Hardware Type
Protocol Type
HLEN
PLEN
Operation
Sender HA
Sender IP
Target HA
Target IP
🔵 藍色 = 固定長度 🟢 綠色 = 可變長度 🟡 黃色 = Operation(操作碼)
Operation 欄位值
| 數值 | 操作 |
|---|---|
| 1 | ARP 請求(ARP Request) |
| 2 | ARP 回覆(ARP Reply) |
| 3 | RARP 請求(RARP Request) |
| 4 | RARP 回覆(RARP Reply) |
Target HA 特殊規則
ARP 請求時
- Target HA 欄位值為 00-00-00-00-00-00
- 資料連結層廣播目的端位址為 FF-FF-FF-FF-FF-FF
- 回覆時,Target HA 即為請求端真實 MAC 位址
📡 6|ICMP 協定
IP 協定主要在「盡力傳送」封包,但傳送過程中遭遇困難(網路擁塞、主機故障、主機未開機等),並非 IP 協定所能解決。ICMP 便是用來處理此項工作的機制。
常見應用
ping 與 traceroute
ping— 發送 ICMP Echo Request,偵測主機是否可達tracert(Windows)/traceroute(Linux)— 追蹤封包經過的路徑
訊息類型一覽
🔴 錯誤訊息(Error)
3目的端無法抵達
4來源端抑制
5路徑重新定向
11傳輸逾時
12參數問題
🟢 查詢訊息(Query)
0回聲回覆(Echo Reply)
8回聲請求(Echo Request)
13/14時戳請求/回覆
15/16網路位址資訊請求/回覆
17/18網路遮罩請求/回覆
📡 7|ICMP 標頭格式
無論哪種 ICMP 訊息類型,標頭前面 32 位元的格式都相同。
三大基本欄位
| 欄位 | 長度 | 說明 |
|---|---|---|
| Type | 8 位元 | ICMP 訊息類型(如 0、3、8、11 等) |
| Code | 8 位元 | 內容代碼,對類型發生原因做進一步說明 |
| Checksum | 16 位元 | 檢驗和,驗證訊息完整性 |
查詢訊息標頭格式
32 位元
Type (8) Code (8) Checksum (16)
Identifier (16) Sequence Number (16)
(附加資料,選擇性)
- Identifier 與 Sequence Number 各 16 位元
- 請求與回覆時這兩個欄位數值相同,以便相互辨識
錯誤訊息標頭格式
32 位元
Type (8) Code (8) Checksum (16)
未定義或其他 (32)
IP 標頭 + 64 位元的原始資料
- 有些類型有定義,有些未定義(以 0 填充)
- 攜帶原始 IP 標頭與 64 位元資料,以便知道錯誤訊息屬於哪個原始封包
📡 8|Echo 與 ping / tracert
Echo Request / Echo Reply
| 訊息 | ICMP Type | Code |
|---|---|---|
| Echo Request | 8 | 0 |
| Echo Reply | 0 | 0 |
Echo 訊息格式
32 位元
類型 (8) 代碼 (8) 檢驗和 (16)
識別碼 (16) 序列碼 (16)
附加資料(選擇性)
ping 輸出範例
Pinging 204.71.200.243 with 32 bytes of data: Reply from 204.71.200.243: bytes=32 time=945ms TTL=242 Reply from 204.71.200.243: bytes=32 time=964ms TTL=242 Request timed out. Reply from 204.71.200.243: bytes=32 time=840ms TTL=242 Ping statistics for 204.71.200.243: Packets: Sent = 4, Received = 3, Lost = 1 (25% loss) Minimum = 840ms
traceroute 輸出範例
Tracing route to yahoo.com [204.71.200.245] over a maximum of 30 hops: 1 4 ms 12 ms 8 ms 140.134.37.254 2 15 ms 18 ms 22 ms [不同閘道...] ... 4 98 ms 102 ms 95 ms 204.71.200.245 Trace complete.
時戳請求與回覆(Type 13/14)
32 位元
類型 (8) 代碼 (8) 檢驗和 (16)
識別碼 (16) 序列碼 (16)
原始時戳 (32)
接收時戳 (32)
傳送時戳 (32)
- 以 毫秒(ms)為單位,依格林威治時間為準
- 功能:測量主機間傳輸延遲、系統時間同步調整
- 單趟延遲 = (接收時間 - 原始時間 - 傳送延遲) / 2
📡 9|Destination Unreachable(Type 3)
屬於 ICMP 錯誤訊息,無法抵達目的節點的原因有 16 種情況(Code 0~15)。
Code 欄位說明
0目的端網路無法連接
1目的端主機無法連接
2指定的通訊協定不存在
3指定的連接埠不存在
4資料需被分割並設定不可分割位元
5來源選擇路徑失敗
6目的端網路無法辨識
7目的端主機無法辨識
8來源端主機被隔離
9禁止與目的端網路通訊
10禁止與目的端主機通訊
11拒絕此網路服務類型
12拒絕此主機服務類型
13被過濾禁止通訊
14違反主機優先權
15優先權實行中斷
📡 10|其他 ICMP 訊息類型
來源端抑制(Source Quench)— Type 4
錯誤訊息
對網路流通容量進行控制
- 功能:修正網路資料傳送量,有效控制網路傳輸
- Code 欄位值:0
類型 (8) 代碼 (8) 檢驗和 (16)
未定義 (32):0
IP 標頭 + 64 位元的原始資料
路徑重新定向(Redirect)— Type 5
錯誤訊息
類型 (8) 代碼 (8) 檢驗和 (16)
Gateway IP 位址 (32)
IP 標頭 + 64 位元的原始資料
| Code | 意義 |
|---|---|
| 0 | 因網路變動而更改傳輸路徑 |
| 1 | 因主機變動而更改傳輸路徑 |
| 2 | 因網路和服務類型的變動而更改傳輸路徑 |
| 3 | 因主機和服務類型的變動而更改傳輸路徑 |
傳輸逾時(Time Exceeded)— Type 11
錯誤訊息
可藉 IP 標頭 TTL 欄位值判斷
| Code | 意義 |
|---|---|
| 0 | 因迴圈問題造成逾時傳輸(TTL=0) |
| 1 | 因封包重組超過設定時間而造成逾時傳輸 |
參數問題(Parameter Problem)— Type 12
錯誤訊息
類型 (8) 代碼 (8) 檢驗和 (16)
指標 (8) 未定義 (24):0
IP 標頭 + 64 位元的原始資料
- Code = 0:某欄位值發生錯誤,發生位置由指標(Pointer)欄位說明(指向錯誤位元組)
- Code = 1:標頭缺少某資料選項,Pointer 欄位以 0 填充
網路遮罩請求/回覆(Address Mask)— Type 17/18
查詢訊息
向閘道查詢子網路遮罩位址(Subnet Mask)
類型 (8) 代碼 (8) 檢驗和 (16)
識別碼 (16) 序列碼 (16)
子網路遮罩位址 (32)
📝 問題與討論
關鍵字|填充題|選擇題|問答題