Wireshark-ICMP数据报分析
ICMP:Internet控制報文協議
ICMP是TCP/IP協議族的一個子協議,用于在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。
ICMP協議通過IP協議發送的,IP協議是一種無連接的,不可靠的數據包協議,屬于網絡層協議。
ICMP報文是在IP數據報內被傳輸的。在實際傳輸中的數據包結構:20字節IP首部 + 8字節ICMP首部+ 1472字節<數據大小>38字節。
ICMP報文格式:IP首部(20字節)+8位類型+8位代碼+16位校驗和+(不同的類型和代碼,格式也有所不同)。下面即為ICMP報文格式:
ICMP報文的類型
不同類型由報文中的類型字段和代碼字段來共同決定,簡單的可以分為兩種:即ICMP差錯報告報文和ICMP詢問報文。
ICMP請求與應答報文 ping
通過ping程序可以發送請求報文,在ping的服務器收到報文后會返回應答報文。
下面是請求應答的報文格式:
讓wireshark開始抓包,用icmp過濾,打開cmd窗口,輸入ping www.youku.com,就會發現wireshark開始抓取報文,ping默認發4個請求報文,所有這里會抓取到8個報文(請求和應答各4個)。下面查看一個請求報文結構:
再來看一看實際的數據域:
Traceroute工具
Traceroute程序可以讓我們看到 I P數據報從一臺主機傳到另一臺主機所經過的路由,它是用來偵測主機到目的主機之間所經路由情況的重要工具,也是最便利的工具。
Traceroute基本原理:這個程序利用報文的TTL信息實現路由的獲取。首先主機向目的主機發送一個TTL=1的數據報,當數據報到達第一個路由器時,TTL=0,這時路由器會發送一個ICMP報文返回給主機,說明數據報超時。由此得到第一個路由地址,然后令TTL=2,再次發送一個數據報,會得到第二個路由返回的ICMP,由此一次次增加TTL就可以得到主機到目的主機之間所經過的路由信息。
windows cmd中運行結果
在linux中traceroute是可以選則數據包的類型(-I,-U,-T)分別代表ICMP,UDP,TCP數據包類型。而在windows的cmd中tracert用的是ICMP數據包。實際測試中可能會出現一些問題。具體參考:
http://blog.csdn.net/lhq9220/article/details/6436984
總結
以上是生活随笔為你收集整理的Wireshark-ICMP数据报分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用CSS3制作50个超棒动画效果教程
- 下一篇: ejb2.0详细开发过程