ICMP協議Ping命令的應用
ICMP協議的使用,我們已經講過不少的內容了。這里我們主要學習的是Ping命令的應用以及對ICMP回射請求的一些系統分析。希望對您能夠有所幫助。
Ping命令
Ping命令利用ICMP回射請求報文和回射應答報文來測試目標系統是否可達。
ICMP回射請求和ICMP回射應答報文是配合工作的。當源主機向目標主機發送了ICMP回射請求數據包后,它期待著目標主機的回答。目標主機在收到一個ICMP回射請求數據包后,它會交換源、目的主機的地址,然后將收到的ICMP回射請求數據包中的數據部分原封不動地封裝在自己的ICMP回射應答數據包中,然后發回給發送ICMP回射請求的一方。如果校驗正確,發送者便認為目標主機的回射服務正常,也即物理連接暢通。
在Windows 9X、Windows 2000等操作系統的Ping命令中,ICMP包中的數據長度默認為32字節,其內容為英文小寫字母循環系列(abcdefg…wabcdefghi),如圖1所示。在Cisco路由器、交換機設備中,ICMP包的缺省內容模式是0xabcd,如圖2所示。
圖1 Windows下的PING包內容
圖2 Cisco設備中的PING包內容
ICMP重定向
ICMP雖然不是路由協議,但是有時它也可以指導數據包的流向(使數據流向正確的網關)。ICMP協議通過ICMP重定向數據包(類型5、代碼0:網絡重定向)達到這個目的。
圖3 ICMP重定向
如圖3所示,主機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重定向包的內容如圖4、圖5所示。注意圖4 ICMP包頭中的Type和Code字段的值和含義。
圖4 ICMP重定向包
圖5 ICMP重定向包-續
如果還有后續的ICMP請求包,則除了ARP消息,所有的事件序列和上面的敘述相同。如圖6所示。
圖6 ICMP重定向事件序列