1 ICMP協議協議概述
IP
協議是一種不可靠的協議,沒法進行差錯控制。但IP協議能夠藉助其餘協議來實現這一功能,如ICMP。
ICMP(Internet Control Messages Protocol, 網間控制報文協議)容許主機或
路由器報告差錯狀況和提供有關異常狀況的報告。
通常來講,ICMP報文提供針對網絡層的錯誤診斷、擁塞控制、路徑控制和查詢服務四項大的功能。如,當一個分組沒法到達目的站點或TTL超時後,路由器就會丟棄此分組,並向源站點返回一個目的站點不可到達的ICMP報文。
2 ICMP報文類型
2.1 ICMP報文類型
ICMP報文大致能夠分爲兩種類型,即ICMP差錯報文和ICMP詢問報文。但細分又可分爲不少類型,如表1所示。
表1 ICMP報文類型
2.2 ICMP回射請求和應答報文頭部格式
ICMP報文被封裝在IP數據報內部傳輸。如圖1所示,是ICMP回射請求和應答報文頭部格式。
圖1 ICMP回射請求和應答報文頭部格式
各類ICMP報文的前32bits都同樣,它們是:
8bits類型和8bits代碼字段:一塊兒決定了ICMP報文的類型。常見的有:
類型八、代碼0:回射請求。
類型0、代碼0:回射應答。
類型十一、代碼0:超時。
16bits校驗和字段:包括數據在內的整個ICMP數據包的校驗和,其計算方法和IP頭部校驗和的計算方法是同樣的。
對於ICMP回射請求和應答報文來講,接下來是16bits標識符字段:用於標識本ICMP進程。
最後是16bits序列號字段:用於判斷回射應答數據報。
2.3 ICMP目標不可達報文
如圖2所示,是ICMP目標不可達報文頭部格式。
圖2 ICMP目標不可達報文頭部格式
其中代碼字段的不一樣值又表明不一樣的含義,如,0表明網絡不可達、1表明主機不可達等,見表1。
2.4 ICMP超時報文頭部格式
如圖3所示,是ICMP超時報文頭部格式。
圖3 ICMP超時報文頭部格式
其中:
類型11+代碼0:表示傳輸期間生存時間爲0。
類型11+代碼1:表示數據報組裝期間生存時間爲0。
因爲篇幅有限,這裏再也不分析其餘類型ICMP協議數據包的格式。
3 Ping命令
Ping命令利用ICMP回射請求報文和回射應答報文來
測試目標系統是否可達。
ICMP回射請求和ICMP回射應答報文是配合工做的。當源主機向目標主機發送了ICMP回射請求數據包後,它期待着目標主機的回答。目標主機在收到一個ICMP回射請求數據包後,它會
交換源、目的主機的地址,而後將收到的ICMP回射請求數據包中的數據部分原封不動地封裝在本身的ICMP回射應答數據包中,而後發回給發送ICMP回射請求的一方。若是校驗正確,發送者便認爲目標主機的回射服務正常,也即物理鏈接暢通。
在
Windows 9X、
Windows 2000等操做系統的Ping命令中,ICMP包中的數據長度默認爲32字節,其內容爲英文小寫字母循環系列(abcdefg…wabcdefghi),如圖4所示。在
Cisco路由器、
交換機設備中,ICMP包的缺省內容模式是0xabcd,如圖5所示。
圖4 Windows下的PING包內容
圖5
Cisco設備中的PING包內容
4 ICMP應用分析-ICMP重定向
ICMP雖然不是路由協議,可是有時它也能夠指導數據包的流向(使數據流向正確的網關)。ICMP協議經過ICMP重定向數據包(類型五、代碼0:網絡重定向)達到這個目的。
圖6 ICMP重定向
如圖6所示,主機PC要ping路由器R2的loopback 0地址:192.168.3.1,主機將判斷出目標屬於不一樣的網段,所以它要將ICMP請求包發往本身的默認網關192.168.1.253(路由器R1的E0接口)。可是,這以前主機PC首先必須發送ARP請求,請求路由器R1的E0(192.168.1.253)的MAC地址。
當路由器R1收到此ARP請求包後,它首先用ARP應答包回答主機PC的ARP請求(通知主機PC:路由器R1本身的E0接口的MAC地址)。而後,它(路由器R1)將此ICMP請求轉發到路由器R2的E0接口:192.168.1.254(要求路由器R1正確配置了到網絡192.168.3.0/24的路由)。此外,路由器R1還要發送一個ICMP重定向消息給主機PC,通知主機PC對於主機PC請求的地址的網關是:192.168.1.254。
路由器R2此時會發送一個ARP請求消息請求主機PC的MAC地址,而主機PC會發送ARP應答消息給路由器R2。最後路由器R2經過得到的主機PC的MAC地址信息,將ICMP應答消息發送給主機PC。
ICMP重定向包的內容如圖七、圖8所示。注意圖7 ICMP包頭中的Type和Code字段的值和含義。
圖7 ICMP重定向包
圖8 ICMP重定向包-續
若是還有後續的ICMP請求包,則除了ARP消息,全部的事件序列和上面的敘述相同。如圖9所示。
圖9 ICMP重定向事件序列