網路規劃與管理技術第 四章 TCP/IP 協定與分析  上一頁    下一頁

4-5 ICMP 協定與分析

內容:

  • 4-5-1 ICMP 協定功能

  • 4-5-2 ICMP 封包格式

  • 4-5-3 ICMP 擷取與分析 - Wireshark

  • 4-5-4 ICMP 擷取與分析 - Packet Tracer

4-5-1 ICMP 協定功能

根據我們的瞭解 IP 網路是一種不可靠的傳輸方式,傳送中的封包必須經過多層路由器的轉送才能到達目的地,因此,在發送封包之前,我們很難預測該封包是否可以安全到達目的地。我們也很迫切地想知道目前網路的狀況,尤其在傳送失敗時,更想瞭解問題出在什麼地方。TCP/IP 網路中提供一種稱之為『網際控制訊息協定』(Internet Control Message Protocol, ICMP的通訊軟體,用來偵測網路的狀況。在 IP 網路上,任何一部主機或路由器皆設置有 ICMP 協定,它們之間就可以利用 ICMP 來互相交換網路目前的狀況訊息,例如,主機不存在、網路斷線等等狀況。ICMP 訊息的產生有下列兩種情況:

(1) 障礙通知: IP 封包傳送當中,在某一網路上發生問題而無法繼續傳送,則會回應 ICMP 訊息給原封包傳送端。如圖 4-14 所示,訊號_1是由 Router_A 回應;或是由 Router_B 回應訊號_2;也有可能是由主機 B 回應訊號_3

(2) 狀況查詢:可以發送 ICMP 來查詢目前網路的情況。如圖 4-15 中,主機 A 發送 ICMP 查詢訊息,有可能由路由器回應(訊號_1 訊號_2),或由主機 B 回應訊號_3

4-14 ICMP 障礙通知

4-15 ICMP 網路狀況查詢

4-5-2 ICMP 封包格式

ICMP 封包無法直接傳送到網路上,必須如同 TCP 封包一樣被嵌入 IP 封包內(如表 4-1),以 IP 方式傳送,包裝在 IP 內的封包格式,如圖 4-16 所示。

4-16 ICMP 封包嵌入 IP 封包內傳送

        ICMP 封包的長度並不固定,隨著各種訊息型態而有不同的長度,圖 5-28 ICMP 封包格式,其各欄位功能如下:

訊息型態(Message Type):表示該 ICMP 所欲控制之訊息型態,共有 13 種型態,訊息型態之型態代表值如表 4-2 所示。

編碼(Code):對各種訊息型態進一步說明工作內容。

檢查集檢查碼(Checksum):對該封包檢查集錯誤偵測。

訊息說明(Message description):依照不同的控制訊息,而有不同的說明方式。

訊息資料(Message Data):依照不同的控制訊息,而有不同的資料表示。

4-17 ICMP 封包格式

4-2 ICMP 訊息型態

Message Type

ICMP 訊息功能

0

Echo Reply(回應答覆)

3

Destination Unreachable(目的地無法到達)

4

Source Quench(來源抑制)

5

Redirect(改變傳輸路徑)

8

Echo Request(回應要求)

9

Router Advertisement(路由器宣傳)

10

Router Solicitation(路由器懇請)

11

Time Exceeded for a Datagram(溢時傳輸)

12

Parameter Problem on a Datagram(參數問題)

13

Timestamp Request(時間標籤要求)

14

Timestamp Reply(時間標籤回覆)

15

Information Request(資訊要求)(停用)

16

Information Reply(資訊回覆)(停用)

17

Address Mask Request(位址遮罩要求)

18

Address Mask Reply(位址遮罩回覆)

4-5-3 ICMP 擷取 與分析 - Wireshark

(A) 系統分析

ICMP 訊息封包有許多型態,我們以最常見的 Echo Request Echo Reply 兩訊訊息來驗證,此兩訊息主要構成 Ping 命令。Ping 命令功能是測試網路連線是否正常,譬如,某主機執行 ping 192.168.1.1 命令,則由主機發送 ICMP Echo Request 192.168.1.1 主機,該主機如收到此封包,則會應 ICMP Echo Reply 訊息給發送者,如此連續測試若干次,如果正常回應多次表示網路狀況良好;如果正常回應次數不多,則表示網路雖然可連線,但線路狀況不甚理想,必須尋找其他途徑解決問題;甚至都沒有回應,則表示網路不通。

4-18 擷取 ICMP 封包網路

我們利用 IP 封包標頭的 Protocol 欄位來辨識是否是 ICMP 封包,如 ip.pro = 0x01,則表示訊息內所乘載的 ICMP 封包。又利用 ICMP 標頭內的 Message Type 欄位來辨識訊息型態,如 MT=8 則是 Echo Request; MT=0 則是 Echo Reply

 (B) 擷取工具

我們需要用到下列工具:

Wireshark 網路封包分析器(安裝於 Windows 7)

Windows 命令提示字元(192.168.1.102):執行 ping 192.168.1.1 命令。

(D) 擷取封包步驟

(1) 開啟Wireshark

擷取條件:host 192.168.1.102

顯示篩選條件:ip.proto == 0x01(ICMP 封包)

再選擇介面卡,如下:

(2) 開啟Windows 命令提示字元,執行 > ping 192.168.1.1

(3) Wireshark 視窗按暫停

(E) ICMP 協定分析

(1) Echo Request 封包分析

首先觀察 Echo request 封包格式 (序號 3),由協定分析視窗比對出個欄位內容如下:

 

Type8 (Echo request)

Code0

Checksum0x4d52

Identifier(0x0001)(0x0009)

Sequence number(0x0009)(0x0900)

 

(2) Echo reply 封包

Echo reply(序號 4) 封包分析如下:

 

Type0 (Echo reply)

Code0

Checksum0x5552

4-5-4 ICMP 擷取與分析 – Packet Tracer

(A) 系統分析

ICMP 訊息封包有許多型態,我們以最常見的 Echo Request Echo Reply 兩訊訊息來驗證,此兩訊息主要構成 Ping 命令。Ping 命令功能是測試網路連線是否正常,譬如,某主機執行 ping 192.168.1.1 命令,則由主機發送 ICMP Echo Request 192.168.1.1 主機,該主機如收到此封包,則會應 ICMP Echo Reply 訊息給發送者,如此連續測試若干次,如果正常回應多次表示網路狀況良好;如果正常回應次數不多,則表示網路雖然可連線,但線路狀況不甚理想,必須尋找其他途徑解決問題;甚至都沒有回應,則表示網路不通。

我們利用 IP 封包標頭的 Protocol 欄位來辨識是否是 ICMP 封包,如 ip.pro = 0x01,則表示訊息內所乘載的 ICMP 封包。又利用 ICMP 標頭內的 Message Type 欄位來辨識訊息型態,如 MT=8 則是 Echo Request; MT=0 則是 Echo Reply

(B) 網路規劃

吾人利用 Packet Tracer 設計一個簡單網路,包含有三個 PC 電腦,期望網路環境如下:

網路區段

Gateway/DNS

  名稱

  IP 位址

   連接埠口

192.168.0.0/

255.255.255.0

192.168.0.254/

168.95.1.1

PC0

192.168.0.1

HUB(Fa0)

PC1

192.168.0.2

HUB(Fa1)

PC2

192.168.0.3

HUB(Fa2)

因此,我們需要在 Packet Tracer 上選擇下列裝置:

(1) Hub-PT:模擬集線器 (Hub) 一只。提供 PC 電腦之間連線。

(2) PC-PT:模擬 PC 主機三只。PC0 ~ PC2 主機使用。

(3) 規劃網路如下:(請下載 ICMP 封包擷取.pkt)

 (C) 網路設定

集線器 Hub 不需任何設定。

PC0 ~ PC3 須設定相關網路參數,如下( PC0)Gateway = 192.168.0.254DBS Server = 168.95.1.1IP Address = 192.168.0.1Subnet Mask = 255.255.255.0

(D) 擷取封包步驟

(1) 步驟 1Packet Tracer 採用 Simulation 模式,編輯 Edit Filters ,點選 ICMP,表示只擷取 ICMP 封包。

(2) 步驟 2再由 PC0 ping 發送給 PC0如下:(點選 PC0 -> Desktop -> Command Prompt ->)

Packet Tracer PC Command Line 1.0

C:\>ping 192.168.0.2   

Pinging 192.168.0.2 with 32 bytes of data:

(3) 步驟 3 packet Tracer 上按『Auto Capture/Play』暫停。

(E) ICMP 協定分析

(1) 步驟 1 Packet Tracer Auto Capture/Play』,則可觀察到擷取到 ARP 的封包,其中包含 Echo Request Echo Reply 兩封包。

(2) 步驟 2分析 Echo Request 封包標頭,如下:

Type = 0x08 (Echo Request)

Code = 0x00ID = 0x0002Seq = 1

(3) 步驟 3分析 Echo Reply 封包標頭,如下:

Type = 0x00 (Echo Reply)

Code = 0x00ID = 0x0002Seq = 1

 

翻轉工作室:粘添壽

 

網路規劃與管理技術:

 

 

翻轉電子書系列: