ping命令執行過程詳解


ping命令執行過程詳解

機器A ping 機器B

同一網段

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

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

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

  4. 獲取機器B的MAC地址

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

      • 若兩台機器之前有過通信,在機器A的ARP緩存表應該有B機IP與其MAC的映射關系

      • 若沒有,則發送ARP請求廣播,得到機器B的MAC地址,一並交給數據鏈路層

    • 數據鏈路層構建一個數據幀,目的地址是IP層傳過來的MAC地址,源地址是本機的MAC地址,再附加一些控制信息,依據以太網的介質訪問規則,將他們傳送出去

    • 機器B收到這個數據幀后,先檢查目的地址,和本機MAC地址對比

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

      • 不符合,丟棄

不同網段

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

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

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

  4. 獲取主機B的MAC地址

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

對ping后返回信息的分析

  1. Request timed out

    • 對方已關機,或者網絡上沒有這個地址

    • 對方與自己不在同一網段內,通過路由也無法到達

    • 對方存在,不過設置了ICMP數據包過濾(比如防火牆設置)

    • 錯誤設置IP地址

    正常情況下,一台主機一張網卡,一個IP地址或多個網卡,多個IP地址。但如果一台電腦的“撥號網絡適配器”(相當於一塊軟網卡)的TCO/IP設置中,設置了一個與網卡IP地址處於同一子網的IP地址,這樣,在IP層協議看來,這台主機就有兩個不同的接口處於同一網段內。當從這台主機ping其他機器時,會存在這樣的問題:

    ** 主機不知道將數據包發到哪個網絡接口,因為有兩個網絡接口都連接在同一網段。
    ** 主機不知道用哪個地址作為數據包的源地址。因此,從這台主機去ping其他機器,IP層協議會無法處理,超時后,ping就會給出一個“超時無應答”的錯誤信息提示。但從其他主機ping這台主機時,請求包從特定網卡來,ICMP只須簡單的將目的、源地址互換,並更改一些標志即可,ICMP應答包能順利發出,其他主機就能成功ping通這台主機了。

  2. Destination host Unreachable

    • 自己未設定默認路由,對方跟自己不在同已網段

    • 網線有問題

    備注
    Request timed out 與 Destination host Unreachable 的區別
    所經過的路由器的路由表具有到達目標的路由,而目標因為原因不可到達,這時出現前者。如果路由表中連到達目標的路由都沒有,就會出現后者。

  3. Bad ip address

    • 沒有連接到DNS服務器,無法解析IP,也可能是IP不存在
  4. Source quench received

    • 對方或中途服務器繁忙而無法應答
  5. Unkonw host

    • 遠程主機的名字不能被域名服務器轉換成IP地址,故障原因可能是DNS服務器有故障,或者名字不正確,或者網絡管理員的系統與遠程主機之間的通信線路故障。
  6. No answer

    • 無響應。說明本地系統有一條通向中心主機的路由,但卻接收不到它發給該中心主機的人呢和信息。故障原因可能是:中心主機沒有工作;本地或中心主機網絡配置不正確;本地或中心的路由器沒有工作;通信線路有故障;中心主機存在路由選擇問題。
  7. Ping 127.0.0.1

    • 如果ping不通,則表明本地址TCP/IP協議不能正常工作
  8. no rout to host

    • 網卡工作不正常
  9. transmit failed。error code

    • 10043網卡驅動不正常
  10. unknown host name

    • DNS配置不正確


免責聲明!

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



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