Wireshark協議分析之ICMP

一:ICMP頭

ICMP是TCP/IP協議簇中的一個功能協議,負責提供在TCP/IP網絡上的設備、服務以及路由器可用性的消息

大多數網絡檢修技巧和工具都是基於常用的ICMP消息類型

類型(Type):ICMP消息基於RFC規範的類型或分類

代碼(Code):ICMP消息基於RFC規範的子類型

校驗和(Checksum):用來保證ICMP頭和數據在抵達目的地時的完整性

可變域(Variable):依賴於 Type 和 Code

二:ICMP類型和消息

ICMP數據部分的結構取決於由Type和Code域中的值所定義的用途

ICMP類型域可以作爲數據包的分類,Code域作爲它的子類。Type域的值爲3 意味着“目標不可達”。但只有這個信息可能不足以發現問題,當數據包在Code域中指明值爲3,也就是“端口不可達”時,可以知道是通信端口的問題

三:Echo的請求與響應

ICMP因爲ping工具而廣爲人知,ping用來檢測一個設備的可連接性

ping命令每次向一個設備發送一個數據包,並等待回覆,ping命令只包含兩步,請求與響應

echo和ping經常混用:ping是一個工具的名字,ping工具用來發送ICMP的echo請求數據包

可以看出上圖是192.168.100.138給192.168.100.1發出的echo請求,這是一個簡單的ICMP數據包,包含了很少的數據。

Sequence number用來匹配請求和響應

在ICMP數據包可變域還有一串隨機文本字符 

第二個數據包是echo響應數據包,對應上一個請求包,Sequence number一致,當這個數據包被192.168.100.138成功接收到之後,ping就會報告成功

還可以使用ping的選項來增加它的數據填充,這樣在檢測不同類型的網絡時,就可以強制將數據包分片,在檢測具有較小分片大小的網絡時會用到。

四:路由跟蹤

路由跟蹤功能用來識別一個設備都另一個設備的通路。在一個簡單的網絡中,這個通路可能只經過一個路由器,甚至一個不經過。在複雜的網絡中可能要經過數十個路由器才能到達目的地。確定數據包從一個目的地到另一個目的地的實際路徑,對於通信檢修非常重要。

通過使用ICMP,路由跟蹤可以畫出數據包的路徑

上圖中的TTL設置爲1,這個數據包再遇到第一個路由器會被丟棄掉。因爲目標地址爲4.2.2.1 ,故源設備和目的設備之間至少會有一個路由器,所以這個數據包不會到達目的地。

上圖是第一個數據包的響應的數據包,類型11 代碼爲0 指數據包TTL在傳輸過程中超時,因此目的不可達

這個ICMP響應數據包有時候被叫做雙頭包,因爲這個ICMP的結尾部分還包含了原先echo請求的IP頭和ICMP數據副本,在網絡檢修是十分有用 

上圖中的TTL設置爲2, 一直持續TTL長到9得到了響應

上圖的src來自 4.2.2.1 ,type爲0 code 爲0  ,根據每一次的src即可得到傳輸路徑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章