ICMP協(xié)議Ping命令的應(yīng)用是什么
ping是一種電腦網(wǎng)絡(luò)工具,用來測試數(shù)據(jù)包能否通過IP協(xié)議到達(dá)特定主機(jī)。ping的運(yùn)作原理是向目標(biāo)主機(jī)傳出一個(gè)ICMP echo@要求數(shù)據(jù)包,并等待接收echo回應(yīng)數(shù)據(jù)包。程序會按時(shí)間和成功響應(yīng)的次數(shù)估算丟失數(shù)據(jù)包率(丟包率)和數(shù)據(jù)包往返時(shí)間(網(wǎng)絡(luò)時(shí)延,Round-trip delay TIme)。
ping是使用TCP/IP協(xié)議中的什么協(xié)議?ping使用的是ICMP協(xié)議,英文全稱是:Internet Control Message Protocol(internet報(bào)文控制協(xié)議)。
它是TCP/IP協(xié)議族的一個(gè)子協(xié)議,用于在IP主機(jī)、路由器之間傳遞控制消息。控制消息是指網(wǎng)絡(luò)通不通、主機(jī)是否可達(dá)、路由是否可用等網(wǎng)絡(luò)本身的消息。這些控制消息雖然并不傳輸用戶數(shù)據(jù),但是對于用戶數(shù)據(jù)的傳遞起著重要的作用。
所以,ICMP協(xié)議是一種面向無連接的協(xié)議,用于傳輸出錯(cuò)報(bào)告控制信息。它是一個(gè)非常重要的協(xié)議,它對于網(wǎng)絡(luò)安全具有極其重要的意義。
ICMP協(xié)議Ping命令的應(yīng)用ICMP的全稱是 Internet Control Message Protocol ,它是TCP/IP協(xié)議族的一個(gè)子協(xié)議,屬于網(wǎng)絡(luò)層協(xié)議,用于在IP主機(jī)、路由器之間傳遞控制消息。從技術(shù)角度來講,就是讓我們能夠判斷網(wǎng)絡(luò)通不通、主機(jī)是否可達(dá)、路由是否可用等等。
在網(wǎng)絡(luò)中,ICMP協(xié)議的應(yīng)用隨處可見,比如我們經(jīng)常使用的用于檢查網(wǎng)絡(luò)通不通的Ping命令,這個(gè)“Ping”的過程實(shí)際上就是ICMP協(xié)議工作的過程。那么當(dāng)你“Ping”時(shí),具體的ICMP協(xié)議是怎么工作的呢?
Ping命令
Ping命令利用ICMP回射請求報(bào)文和回射應(yīng)答報(bào)文來測試目標(biāo)系統(tǒng)是否可達(dá)。ICMP回射請求和ICMP回射應(yīng)答報(bào)文是配合工作的?當(dāng)源主機(jī)向目標(biāo)主機(jī)發(fā)送了ICMP回射請求數(shù)據(jù)包后,它期待著目標(biāo)主機(jī)的回答?目標(biāo)主機(jī)在收到一個(gè)ICMP回射請求數(shù)據(jù)包后,它會交換源?目的主機(jī)的地址,然后將收到的ICMP回射請求數(shù)據(jù)包中的數(shù)據(jù)部分原封不動(dòng)地封裝在自己的ICMP回射應(yīng)答數(shù)據(jù)包中,然后發(fā)回給發(fā)送ICMP回射請求的一方?如果校驗(yàn)正確,發(fā)送者便認(rèn)為目標(biāo)主機(jī)的回射服務(wù)正常,也即物理連接暢通?如果校驗(yàn)錯(cuò)誤,源主機(jī)隨后可根據(jù)ICMP報(bào)文確定發(fā)生錯(cuò)誤的類型,并確定如何才能更好地重發(fā)失敗的數(shù)據(jù)包。注意,ICMP唯一的功能是報(bào)告問題而不是糾正錯(cuò)誤,糾正錯(cuò)誤的任務(wù)由源主機(jī)完成。
ICMP 重定向
ICMP雖然不是路由協(xié)議,但是有時(shí)它也可以指導(dǎo)數(shù)據(jù)包的流向(使數(shù)據(jù)流向正確的網(wǎng)關(guān))?ICMP協(xié)議通過ICMP重定向數(shù)據(jù)包達(dá)到這個(gè)目的?
如圖所示,主機(jī)PC要ping路由器R2的loopback 0地址:192.168.3.1,主機(jī)將判斷出目標(biāo)屬于不同的網(wǎng)段,因此它要將ICMP請求包發(fā)往自己的默認(rèn)網(wǎng)關(guān)192.168.1.253(路由器R1的E0接口)?但是,這之前主機(jī)PC首先必須發(fā)送ARP請求,請求路由器R1的E0(192.168.1.253)的MAC地址。
當(dāng)路由器R1收到此ARP請求包后,它首先用ARP應(yīng)答包回答主機(jī)PC的ARP請求(通知主機(jī)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ā)送一個(gè)ICMP重定向消息給主機(jī)PC,通知主機(jī)PC對于主機(jī)PC請求的地址的網(wǎng)關(guān)是:192.168.1.254?
路由器R2此時(shí)會發(fā)送一個(gè)ARP請求消息請求主機(jī)PC的MAC地址,而主機(jī)PC會發(fā)送ARP應(yīng)答消息給路由器R2?最后路由器R2通過獲得的主機(jī)PC的MAC地址信息,將ICMP應(yīng)答消息發(fā)送給主機(jī)PC。如果校驗(yàn)正確,就實(shí)現(xiàn)了暢通的物理連接。