ping命令的作用和原理簡述

chenfeng發表於2018-12-26

簡單來說,「ping」是用來探測本機與網路中另一主機之間是否可達的命令,如果兩臺主機之間ping不通,則表明這兩臺主機不能建立起連線。ping是定位網路通不通的一個重要手段。

ping 命令是基於 ICMP 協議來工作的,「 ICMP 」全稱為 Internet 控制報文協議( Internet Control Message Protocol)。ping 命令會傳送一份ICMP回顯請求報文給目標主機,並等待目標主機返回ICMP回顯應答。因為ICMP協議會要求目標主機在收到訊息之後,必須返回ICMP應答訊息給源主機,如果源主機在一定時間內收到了目標主機的應答,則表明兩臺主機之間網路是可達的。

舉一個例子來描述「ping」命令的工作過程:

假設有兩個主機,主機A(192.168.0.1)和主機B(192.168.0.2),現在我們要監測主機A和主機B之間網路是否可達,那麼我們在主機A上輸入命令:ping 192.168.0.2

此時,ping命令會在主機A上構建一個 ICMP的請求資料包(資料包裡的內容後面再詳述),然後 ICMP協議會將這個資料包以及目標IP(192.168.0.2)等資訊一同交給IP層協議。

IP層協議得到這些資訊後,將源地址(即本機IP)、目標地址(即目標IP:192.168.0.2)、再加上一些其它的控制資訊,構建成一個IP資料包。

IP資料包構建完成後,還不夠,還需要加上MAC地址,因此,還需要透過ARP對映表找出目標IP所對應的MAC地址。當拿到了目標主機的MAC地址和本機MAC後,一併交給資料鏈路層,組裝成一個資料幀,依據乙太網的介質訪問規則,將它們傳送出出去。

當主機B收到這個資料幀之後,會首先檢查它的目標MAC地址是不是本機,如果是就接收下來處理,接收之後會檢查這個資料幀,將資料幀中的IP資料包取出來,交給本機的IP層協議,然後IP層協議檢查完之後,再將ICMP資料包取出來交給ICMP協議處理,當這一步也處理完成之後,就會構建一個ICMP應答資料包,回發給主機A,

在一定的時間內,如果主機A收到了應答包,則說明它與主機B之間網路可達,如果沒有收到,則說明網路不可達。除了監測是否可達以外,還可以利用應答時間和發起時間之間的差值,計算出資料包的延遲耗時。

透過ping的流程可以發現,ICMP協議是這個過程的基礎,是非常重要的.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2286521/,如需轉載,請註明出處,否則將追究法律責任。

相關文章