4-5 ICMP 協定與分析
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 訊息型態
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),由協定分析視窗比對出個欄位內容如下:
● Type:8 (Echo request) ● Code:0 ● Checksum:0x4d52 ● Identifier:(0x0001)(0x0009) ● Sequence number:(0x0009)(0x0900)
(2) Echo reply 封包 Echo reply(序號 4) 封包分析如下:
● Type:0 (Echo reply) ● Code:0 ● Checksum:0x5552 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 電腦,期望網路環境如下:
因此,我們需要在 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.254、DBS Server = 168.95.1.1、IP Address = 192.168.0.1、Subnet Mask = 255.255.255.0。 (D) 擷取封包步驟 (1) 步驟 1:Packet Tracer 採用 Simulation 模式,編輯 Edit Filters ,點選 ICMP,表示只擷取 ICMP 封包。 (2) 步驟 2:再由 PC0 上 ping 發送給 PC0如下:(點選 PC0 -> Desktop -> Command Prompt ->)
(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 = 0x00、ID = 0x0002、Seq = 1。 (3) 步驟 3:分析 Echo Reply 封包標頭,如下: ● Type = 0x00 (Echo Reply)、 ● Code = 0x00、ID = 0x0002、Seq = 1。
|
翻轉工作室:粘添壽
網路規劃與管理技術:
翻轉電子書系列:
|