想要獲取icmp封包我們可以直接使用ping指令來獲取,例如:ping www.hinet.net
。
接著到wireshark擷取封包,而由於ping指令是使用Internet Control Message Protocol協議,所以我們可在filter輸入icmp來過濾與ping指令相關的封包
發送ping時主要會有以下封包
可看到分別為DNS和ICMP,主要是因為ping指令主機會先去DNS獲取www.hinet.net
網域的IP接著再利用ICMP進行request和reply的關係。
Frame和Ethernet II以及IPv4的部分就不再說明了,與前面幾天的內容大致上一樣。讓我們直接進到Internet Control Message Protocol(ICMP)的說明
上述圖中可看到以下相關資訊:
- 類型 (Type): 8 (Echo (ping) request),這表示該封包是一個ping請求。
- 代碼 (Code): 0,這是與封包類型相關的附加信息。在這裡,代碼0與ping請求相關。
- 校驗和 (Checksum): 0x3602,這是用於檢查封包是否在傳輸過程中出現錯誤的校驗和。在這裡,校驗和的狀態是正確的。
- 識別碼 (Identifier): 這是用於識別每個ICMP請求的唯一ID。在這裡,識別碼有兩種表示方式,分別是大端(BE)和小端(LE)。
- 序列號 (Sequence Number): 這是用於識別每個ICMP請求的序列號。在這裡,序列號有兩種表示方式,分別是大端(BE)和小端(LE)。
- 時間戳 (Timestamp from icmp data): 這是封包的時間戳,表示封包的發送時間。
- 數據 (Data): 這是封包的數據部分,長度為40個字節。
而回應封包也是類同的
同樣有:
- 類型 (Type): 0 (Echo (ping) reply),這表示該封包是一個ping回應。
- 代碼 (Code): 0,這是與封包類型相關的附加信息。在這裡,代碼0與ping回應相關。
- 校驗和 (Checksum): 0x3e02,這是用於檢查封包是否在傳輸過程中出現錯誤的校驗和。在這裡,校驗和的狀態是正確的。
- 識別碼 (Identifier): 這是用於識別每個ICMP請求的唯一ID。在這裡,識別碼有兩種表示方式,分別是大端(BE)和小端(LE)。
- 序列號 (Sequence Number): 這是用於識別每個ICMP請求的序列號。在這裡,序列號有兩種表示方式,分別是大端(BE)和小端(LE)。
- 回應時間 (Response time): 7.279 ms,這是從發送ping請求到收到ping回應的時間。
- 時間戳 (Timestamp from icmp data): 這是封包的時間戳,表示封包的發送時間。
- 數據 (Data): 這是封包的數據部分,長度為40個字節。
接著明天就是做後一天了,我們會再進行一次整體的過程分析,讓大家更了解封包的作用。