ping 是基於 icmp 協議工作的,icmp 全稱是 internet control message protocol,也就是網際網路控制報文協議.
icmp 主要的功能包括:確認 ip 包是否成功送達目標位址、報告傳送過程中 ip 包被廢棄的原因和改善網路設定等。
在 ip 通訊中如果某個 ip 包因為某種原因未能達到目標位址,那麼這個具體的原因將由 icmp 負責通知。
如上圖例子,
主機 a 向主機 b 傳送了資料報,由於某種原因,途中的路由器 2 未能發現主機 b 的存在,這時,路由器 2 就會向主機 a 傳送乙個 icmp 目標不可達資料報,說明發往主機 b 的包未能成功。
icmp 的這種通知訊息會使用 ip 進行傳送 。icmp 報文是封裝在 ip 包裡面,它工作在網路層,是 ip 協議的助手。
因此,從路由器 2 返回的 icmp 包會按照往常的路由控制先經過路由器 1 再**給主機 a 。
收到該 icmp 包的主機 a 則分解 icmp 的首部和資料域以後得知具體發生問題的原因。
icmp 包頭的型別字段,大致可以分為兩大類:
一類是用於診斷的查詢訊息,也就是「查詢報文型別」
另一類是通知出錯原因的錯誤訊息,也就是「差錯報文型別」
查詢報文型別
回送訊息 —— 型別 0 和 8,回送訊息用於進行通訊的主機或路由器之間,判斷所傳送的資料報是否已經成功到達對端的一種訊息,ping 命令就是利用這個訊息實現的.
可以向對端主機傳送回送請求的訊息(icmp echo request message,型別 8),也可以接收對端主機發回來的回送應答訊息(icmp echo reply message,型別 0)。
相比原生的 icmp,這裡多了兩個字段:
識別符號:用以區分是哪個應用程式發 icmp 包,比如用程序 pid 作為識別符號;
序號:序列號從 0 開始,每傳送一次新的回送請求就會加 1, 可以用來確認網路包是否有丟失。
1. ping命令執行時,源主機首先會構建乙個icmp回送請求訊息資料報
ping 命令執行的時候,源主機首先會構建乙個 icmp 回送請求訊息資料報。
icmp 資料報內包含多個字段,最重要的是兩個:
1.第乙個是型別,對於回送請求訊息而言該字段為 8;
2.另外乙個是序號,主要用於區分連續 ping 的時候發出的多個資料報。
每發出乙個請求資料報,序號會自動加 1。為了能夠計算往返時間 rtt,它會在報文的資料部分插入傳送時間。
2.然後,由 icmp 協議將這個資料報連同位址 192.168.1.2 一起交給 ip 層。ip 層將以 192.168.1.2 作為目的位址,本機 ip 位址作為源位址,協議字段設定為 1 表示是 icmp 協議,在加上一些其他控制資訊,構建乙個 ip 資料報。
3.接下來,需要加入 mac 頭。如果在本地 arp 對映表中查詢出 ip 位址 192.168.1.2 所對應的 mac 位址,則可以直接使用;如果沒有,則需要傳送 arp 協議查詢 mac 位址,獲得 mac 位址後,由資料鏈路層構建乙個資料幀,目的位址是 ip 層傳過來的 mac 位址,源位址則是本機的 mac 位址;還要附加上一些控制資訊,依據乙太網的介質訪問規則,將它們傳送出去。
4.主機 b 收到這個資料幀後,先檢查它的目的 mac 位址,並和本機的 mac 位址對比,如符合,則接收,否則就丟棄。
接收後檢查該資料幀,將 ip 資料報從幀中提取出來,交給本機的 ip 層。同樣,ip 層檢查後,將有用的資訊提取後交給 icmp 協議。
主機 b 會構建乙個icmp 回送響應訊息資料報,回送響應資料報的型別欄位為 0,序號為接收到的請求資料報中的序號,然後再傳送出去給主機 a
在規定的時候間內,源主機如果沒有接到 icmp 的應答包,則說明目標主機不可達;如果接收到了 icmp 回送響應訊息,則說明目標主機可達。
此時,源主機會檢查,用當前時刻減去該資料報最初從源主機上發出的時刻,就是 icmp 資料報的時間延遲。
針對上面的傳送的事情,總結成了如下圖:
本文整理自僅為自己學習使用,侵刪
ping命令如何工作
1 ping 是基於icmp協議工作的,也就是網際網路控制報文協議。3 icmp 報文是封裝在 ip 包裡面,它工作在網路層,是 ip 協議的助手。4 icmp 包頭的型別字段,大致可以分為兩大類 回送訊息用於進行通訊的主機或路由器之間,判斷所傳送的資料報是否已經成功到達對端的一種訊息,ping命令...
ping命令的工作原理
我們先來看乙個例子,假如在windows的cmd下輸入ping www.baidu.com會出現如下圖所示的結果 從上圖可以看到這一過程。其實ping命令是分組網間探測,即packet internet groper,用來測試兩個主機之間的連通性。ping使用了icmp internet contr...
ping命令知識 Ping命令工作原理詳解
在網路應用中,ping網速與ip位址等都是非常常用的命令,但大家知道ping命令的工作原理嗎?要知道這其中的奧秘,我們有必要來看看ping命令的工作過程到底是怎麼樣的。下面介紹下ping命令的詳細知識。ping命令的應用與原理 假定主機a的ip位址是192.168.1.1,主機b的ip位址是192....