Ping 命令的執行過程和應用協議


1.  ICMP是“Internet Control Message Ptotocol”的縮寫。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。

   控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然並不傳輸用戶數據,但是對於用戶數據的傳遞起着重要的作用。在網絡中經常會使用到ICMP協議。例如經常用於檢查網絡不通的ping命令,這個ping的過程實際上就是ICMP協議工作的過程。還有跟蹤路由的trancert命令也是基於ICMP協議的。

2.  ping.exe的原理:向指定的IP地址發送一定長度的數據包,按照約定,若指定IP地址存在的話,會返回同樣大小的數據包,當然,若在特定時間內沒有返回,就是“超時”,會被認為指定的IP地址不存在。由於ping使用的是ICMP協議,有些防火牆軟件會屏蔽ICMP協議,所以有時候ping的結果只能作為參考,ping不通並不一定說明對方IP不存在。

3.  ping命令執行過程詳解:

   機器A ping 機器B

   同一網段

   1.ping通知系統建立一個固定格式的ICMP請求數據包

   2.ICMP協議打包這個數據包和機器B的IP地址轉交給IP協議層(一組后台運行的進程,與ICMP類似)

   3.IP層協議將以機器B的IP地址為目的地址,本機IP地址為源地址,加上一些其他的控制信息,構建一個IP數據包

   4.獲取機器B的MAC地址

 

  1. IP層協議通過機器B的IP地址和自己的子網掩碼,發現它跟自己屬同一網絡,就直接在本網絡查找這台機器的MAC。

  2. 若兩台機器之前有過通信,在機器A的ARP緩存表應該有B機IP與其MAC的映射關系;若沒有,則發送ARP請求廣播,得到機器B的MAC地址,一並交給數據鏈路層

  3. 數據鏈路層構建一個數據幀,目的地址是IP層傳過來的MAC地址,源地址是本機的MAC地址,再附加一些控制信息,依據以太網的介質訪問規則,將他們傳送出去
  4. 機器B收到這個數據幀后,先檢查目的地址,和本機MAC地址對比

  5. 符合,接收。接收后檢查該數據幀,將IP數據包從幀中提取出來,交給本機的IP協議層協議。IP層檢查后,將有用的信息提取交給ICMP協議,后者處理后,馬上構建一個ICMP應答包,發送給主機A,其過程和主機A發送ICMP請求包到主機B類似(這時候主機B已經知道了主機A的MAC地址,不需再發ARP請求);不符合,丟棄。

  6. 不同網段

  7. 1.ping通知系統建立一個固定格式的ICMP請求數據包

  8. 2.ICMP協議打包這個數據包和機器B的IP地址轉交給IP協議層(一組后台運行的進程,與ICMP類似)

  9. 3.IP層協議將以機器B的IP地址為目的地址,本機IP地址為源地址,加上一些其他的控制信息,構建一個IP數據包

  10. 4.獲取主機B的MAC地址

    IP協議通過計算發現主機B與自己不在同一網段內,就直接交給路由處理,就是將路由的MAC取過來,至於怎么得到路由的MAC地址,和之前一樣,先在ARP緩存表中尋找,找不到可以利用廣播。路由得到這個數據幀之后,再跟主機B聯系,若找不到,就向主機A返回一個超時信息。

4.  ping的結果:

   1.Request timed out:對方與自己不在同一網段內,通過路由也無法到達;對方已關機,或者網絡上沒有這個地址;對方存在,不過設置了ICMP數據包過濾;錯誤設置IP地址

   2.Destination host Unreachable:自己未設定默認路由,對方跟自己不在同已網段。

   3.Bad ip address:沒有連接到DNS服務器,無法解析IP,也可能是IP不存在

   4.Source quench received:對方或中途服務器繁忙而無法應答

   5.Ping 127.0.0.1:如果ping不通,則表明本地址TCP/IP協議不能正常工作

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM