ICMP協(xié)議Ping命令的應(yīng)用
ICMP協(xié)議的使用,我們已經(jīng)講過不少的內(nèi)容了。這里我們主要學(xué)習(xí)的是Ping命令的應(yīng)用以及對ICMP回射請求的一些系統(tǒng)分析。希望對您能夠有所幫助。
Ping命令
Ping命令利用ICMP回射請求報文和回射應(yīng)答報文來測試目標系統(tǒng)是否可達。
ICMP回射請求和ICMP回射應(yīng)答報文是配合工作的。當源主機向目標主機發(fā)送了ICMP回射請求數(shù)據(jù)包后,它期待著目標主機的回答。目標主機在收到一個ICMP回射請求數(shù)據(jù)包后,它會交換源、目的主機的地址,然后將收到的ICMP回射請求數(shù)據(jù)包中的數(shù)據(jù)部分原封不動地封裝在自己的ICMP回射應(yīng)答數(shù)據(jù)包中,然后發(fā)回給發(fā)送ICMP回射請求的一方。如果校驗正確,發(fā)送者便認為目標主機的回射服務(wù)正常,也即物理連接暢通。
在Windows 9X、Windows 2000等操作系統(tǒng)的Ping命令中,ICMP包中的數(shù)據(jù)長度默認為32字節(jié),其內(nèi)容為英文小寫字母循環(huán)系列(abcdefg…wabcdefghi),如圖1所示。在Cisco路由器、交換機設(shè)備中,ICMP包的缺省內(nèi)容模式是0xabcd,如圖2所示。
圖1 Windows下的PING包內(nèi)容
圖2 Cisco設(shè)備中的PING包內(nèi)容
ICMP重定向
ICMP雖然不是路由協(xié)議,但是有時它也可以指導(dǎo)數(shù)據(jù)包的流向(使數(shù)據(jù)流向正確的網(wǎng)關(guān))。ICMP協(xié)議通過ICMP重定向數(shù)據(jù)包(類型5、代碼0:網(wǎng)絡(luò)重定向)達到這個目的。
圖3 ICMP重定向
如圖3所示,主機PC要ping路由器R2的loopback 0地址:192.168.3.1,主機將判斷出目標屬于不同的網(wǎng)段,因此它要將ICMP請求包發(fā)往自己的默認網(wǎng)關(guān)192.168.1.253(路由器R1的E0接口)。但是,這之前主機PC首先必須發(fā)送ARP請求,請求路由器R1的E0(192.168.1.253)的MAC地址。
當路由器R1收到此ARP請求包后,它首先用ARP應(yīng)答包回答主機PC的ARP請求(通知主機PC:路由器R1自己的E0接口的MAC地址)。然后,它(路由器R1)將此ICMP請求轉(zhuǎn)發(fā)到路由器R2的E0接口:192.168.1.254(要求路由器R1正確配置了到網(wǎng)絡(luò)192.168.3.0/24的路由)。此外,路由器R1還要發(fā)送一個ICMP重定向消息給主機PC,通知主機PC對于主機PC請求的地址的網(wǎng)關(guān)是:192.168.1.254。
路由器R2此時會發(fā)送一個ARP請求消息請求主機PC的MAC地址,而主機PC會發(fā)送ARP應(yīng)答消息給路由器R2。***路由器R2通過獲得的主機PC的MAC地址信息,將ICMP應(yīng)答消息發(fā)送給主機PC。
ICMP重定向包的內(nèi)容如圖4、圖5所示。注意圖4 ICMP包頭中的Type和Code字段的值和含義。
圖4 ICMP重定向包
圖5 ICMP重定向包-續(xù)
如果還有后續(xù)的ICMP請求包,則除了ARP消息,所有的事件序列和上面的敘述相同。如圖6所示。
圖6 ICMP重定向事件序列