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