2026 年 05 月 07 日

CH10 — ARP · RARP · ICMP

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 動態分配
管理單位IEEEICANN / 區域註冊機構
用途資料連結層定址網路層定址

📡 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...)含發送端 IPARP 請求/回覆資料

📡 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
16 位元 · Ethernet = 1
Protocol Type
16 位元 · IP = 0800ₕ
HLEN
8 位元 · Ethernet = 6
PLEN
8 位元 · IP = 4
Operation
16 位元 · 1~4(見下表)
Sender HA
發送端 MAC(可變)
Sender IP
發送端 IP(可變)
Target HA
目的端 MAC(可變)
Target IP
目的端 IP(可變)

🔵 藍色 = 固定長度 🟢 綠色 = 可變長度 🟡 黃色 = Operation(操作碼)

Operation 欄位值

數值操作
1ARP 請求(ARP Request)
2ARP 回覆(ARP Reply)
3RARP 請求(RARP Request)
4RARP 回覆(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 位元的格式都相同

三大基本欄位

欄位長度說明
Type8 位元ICMP 訊息類型(如 0、3、8、11 等)
Code8 位元內容代碼,對類型發生原因做進一步說明
Checksum16 位元檢驗和,驗證訊息完整性

查詢訊息標頭格式

32 位元
Type (8) Code (8) Checksum (16) Identifier (16)   Sequence Number (16) (附加資料,選擇性)
  • IdentifierSequence Number 各 16 位元
  • 請求與回覆時這兩個欄位數值相同,以便相互辨識

錯誤訊息標頭格式

32 位元
Type (8) Code (8) Checksum (16) 未定義或其他 (32) IP 標頭 + 64 位元的原始資料
  • 有些類型有定義,有些未定義(以 0 填充)
  • 攜帶原始 IP 標頭與 64 位元資料,以便知道錯誤訊息屬於哪個原始封包

📡 8|Echo 與 ping / tracert

Echo Request / Echo Reply

訊息ICMP TypeCode
Echo Request80
Echo Reply00

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)

📝 問題與討論

關鍵字|填充題|選擇題|問答題