您好,登錄后才能下訂單哦!
ICMP報文
ICMP報文封裝在IP數(shù)據(jù)報中,ICMP報文可分為兩大類:差錯報告報文和查詢報文。
ICMP報文首部的一般格式如圖1.11所示。
圖1.11 ICMP報文首部的一般格式
1.2.1 查詢報文
查詢報文有多種類型,比較常見的是類型(Type)8和類型(Type)0,它們是成對出現(xiàn)的。類型8表示回送請求(Echo),類型0表示回送應答(Echo Reply)。在《組建與維護企業(yè)網絡》課程中已經介紹過,這里不再贅述。
1.2.2 差錯報告報文
ICMP的主要責任之一就是報告差錯,當路由器或目的主機在處理IP數(shù)據(jù)報遇到問題時,就把差錯報文發(fā)送給數(shù)據(jù)報的源點。
差錯報告報文共有五種類型。
? 類型3 終點不可達
? 類型4 源點抑制
? 類型5 改變路由
? 類型11 超時
? 類型12 參數(shù)問題
本節(jié)將介紹三種類型:終點不可達、源點抑制和超時報文類型。
1.終點不可達報文
當中間路由器不能給數(shù)據(jù)報找到路由或目的主機不能交付數(shù)據(jù)報時,中間路由器或目的主機就丟棄這個數(shù)據(jù)報,然后向發(fā)出這個數(shù)據(jù)報的源點發(fā)送終點不可達報文。
終點不可達報文的首部格式如圖1.12所示。
圖1.12 ICMP終點不可達報文的首部格式
其中代碼字段指明了丟棄數(shù)據(jù)報的原因,一共有16種。下面將列舉并演示其中的兩種原因。
? 代碼1:Host unreachable(主機不可達)。
? 代碼3:Port unreachable(端口不可達)。
首先演示第1種原因,思路為:在Web主機上ping一臺未知網絡中的主機,然后通過Sniffer抓包分析返回的ICMP報文。
在Web主機上啟用Sniffer抓包,然后ping 1.1.1.1,在CMD窗口中運行的命令及結果為:
C:\> ping 1.1.1.1
Reply from 192.168.1.254: Destination host unreachable.
……
這是路由器返回的差錯報告:目的主機不可達,因為路由器找不到1.1.1.1的路由。
Sniffer抓包后的解碼如圖1.13所示。
可以看到,源IP:192.168.1.254(路由器)向目的IP:192.168.1.1(Web主機)返回了差錯報告報文,類型(Type)為3,代碼(Code)為1:Host unreachable(主機不可達)。
圖1.13 ICMP終點不可達報文演示(1)
接著演示第2種原因,思路為:在PC2主機上使用hping向Web主機的一個未開放的UDP端口發(fā)送1個UDP報文。因為該UDP端口未開放,那么Web主機將不能交付該UDP報文,就會返回ICMP差錯報告報文,可以在Web主機上通過Sniffer抓包分析返回的ICMP報文。
首先在Web主機上啟用Sniffer抓包,然后在PC2主機上使用hping向Web主機的UDP端口80(未開放)發(fā)送一個UDP報文,命令為:
[root@kkg sbin]# hping 192.168.1.1 -2 -p 80 -c 1
在Web主機上Sniffer抓包后的解碼如圖1.14所示。
圖1.14 ICMP終點不可達報文演示(2)
可以看到,源IP:192.168.1.1(Web主機)向目的IP:192.168.2.1(PC2主機)返回了差錯報告報文,類型(Type)為3,代碼(Code)為3:Port unreachable(端口不可達)。
2.源點抑制報文
在IP協(xié)議中沒有流量控制機制,這可能會導致在中間路由器或目的主機中產生擁塞現(xiàn)象。路由器或主機中的隊列長度(緩存)是有限的,如果數(shù)據(jù)報的接收速率比它們被轉發(fā)(對路由器而言)或處理(對主機而言)的速率快得多,隊列就會溢出。在這種情況下,路由器或主機只能把某些數(shù)據(jù)報丟棄。
為了給IP協(xié)議增加一種流量控制機制,ICMP的源點抑制報文被設計出來。當路由器或主機因為擁塞而丟棄數(shù)據(jù)報時,它就向數(shù)據(jù)報的發(fā)送端發(fā)送源點抑制報文,通知發(fā)送端必須放慢發(fā)送速率。要注意的是,對每一個因為擁塞而丟棄的數(shù)據(jù)報,路由器或主機都應當發(fā)送源點抑制報文。
源點抑制報文的首部格式如圖1.15所示。
圖1.15 ICMP源點抑制報文的首部格式
3.超時報文
超時報文的產生有兩種情況。
? 中間路由器收到數(shù)據(jù)報后發(fā)現(xiàn)其TTL字段的值為1或0。
? 目的主機在規(guī)定時間內沒有收到所有的分片。
當發(fā)生以上情況時,中間路由器或目的主機就丟棄這個數(shù)據(jù)報,然后向發(fā)出這個數(shù)據(jù)報的源點發(fā)送超時報文。
超時報文的首部格式如圖1.16所示。
圖1.16 ICMP超時報文的首部格式
其中代碼0只由路由器使用,代碼1只由目的主機使用。
下面將演示超時報文產生的兩種情況。
先演示第一種情況,思路為:在PC2主機上使用hping向Web主機發(fā)送一個TTL為1的ICMP報文,并偽造源IP為192.168.0.1(PC1主機),這樣在PC1主機上通過Sniffer可以捕獲到返回的超時報文。
首先在PC1主機上啟用Sniffer抓包,然后在PC2主機上使用hping向Web主機發(fā)送1個TTL為1的ICMP報文,并偽造源IP為192.168.0.1,命令為:
[root@kkg sbin]# hping 192.168.1.1 -1 -t 1 -c 1 –a 192.168.0.1
在PC1主機上Sniffer抓包后的解碼如圖1.17所示。
圖1.17 ICMP超時報文演示(1)
可以看到,源IP:192.168.2.254(路由器)向目的IP:192.168.0.1(PC1主機)返回了超時報文,類型(Type)為11,代碼(Code)為0。
接著演示第2種情況,思路為:在PC2主機上使用hping向Web主機只發(fā)送一個IP分片,經過一小段時間后,由于沒有收到后續(xù)的分片,Web主機將返回超時報文。
首先在Web主機上啟用Sniffer抓包,然后在PC2主機上使用hping向Web主機發(fā)送一個IP分片,命令為:
[root@kkg sbin]# hping 192.168.1.1 -1 -x -d 1000 -N 100 -c 1
等待60秒后,在Web主機上Sniffer抓包后的解碼如圖1.18所示。
圖1.18 ICMP超時報文演示(2)
可以看到,源IP:192.168.1.1(Web主機)向目的IP:192.168.2.1(PC2主機)返回了超時報文,類型(Type)為11,代碼(Code)為1。
意 啦 | 這里講的超時報文要與使用ping命令時產生的超時區(qū)分開來。例如,Windows 2003的ping命令在發(fā)出Echo請求后,如果在2秒(默認)內沒有收到Echo應答,就會顯示超時(Request timed out)。 |
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。