倍可親

回復: 0
列印 上一主題 下一主題

Ping命令的過程及返回信息分析

[複製鏈接]

1萬

主題

1萬

帖子

1萬

積分

八級貝殼核心

倍可親終生會員(廿一級)

Rank: 5Rank: 5

積分
18033
跳轉到指定樓層
樓主
kent 發表於 2007-6-21 07:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 「Ping」命令是我們在判斷網路故障常用的命令,但您真正明白這個命令運行後會發生什麼,以及出現的各種信息說明了什麼嗎?本人將平時工作中積累的經驗介紹給大家。
  「Ping」的幕後過程
  我們以下面一個網路為例:有A、B、C、D四台機子,一台路由RA,子網掩碼均為255.255.255.0,默認路由為192.168.0.1
  1.在同一網段內
  在主機A上運行「Ping 192.168.0.5」后,都發生了些什麼呢? 首先,Ping命令會構建一個固定格式的ICMP請求數據包,然後由ICMP協議將這個數據包連同地址「192.168.0.5」一起交給IP層協議(和ICMP一樣,實際上是一組後台運行的進程),IP層協議將以地址「192.168.0.5」作為目的地址,本機IP地址作為源地址,加上一些其他的控制信息,構建一個IP數據包,並想辦法得到192.168.0.5的MAC地址(物理地址,這是數據鏈路層協議構建數據鏈路層的傳輸單元——幀所必需的),以便交給數據鏈路層構建一個數據幀。關鍵就在這裡,IP層協議通過機器B的IP地址和自己的子網掩碼,發現它跟自己屬同一網路,就直接在本網路內查找這台機器的MAC,如果以前兩機有過通信,在A機的ARP緩存表應該有B機IP與其MAC的映射關係,如果沒有,就發一個ARP請求廣播,得到B機的MAC,一併交給數據鏈路層。後者構建一個數據幀,目的地址是IP層傳過來的物理地址,源地址則是本機的物理地址,還要附加上一些控制信息,依據乙太網的介質訪問規則,將它們傳送出去。
  主機B收到這個數據幀后,先檢查它的目的地址,並和本機的物理地址對比,如符合,則接收;否則丟棄。接收后檢查該數據幀,將IP數據包從幀中提取出來,交給本機的IP層協議。同樣,IP層檢查后,將有用的信息提取后交給ICMP協議,後者處理后,馬上構建一個ICMP應答包,發送給主機A,其過程和主機A發送ICMP請求包到主機B一模一樣。
  2.不在同一網段內
  在主機A上運行「Ping 192.168.1.4」后,開始跟上面一樣,到了怎樣得到MAC地址時,IP協議通過計算髮現D機與自己不在同一網段內,就直接將交由路由處理,也就是將路由的MAC取過來,至於怎樣得到路由的MAC,跟上面一樣,先在ARP緩存表找,找不到就廣播吧。路由得到這個數據幀后,再跟主機D進行聯繫,如果找不到,就向主機A返回一個超時的信息。
  對Ping后返回信息的分析
  1.Request timed out
  這是大家經常碰到的提示信息,很多文章中說這是對方機器置了過濾ICMP數據包,從上面工作過程來看,這是不完全正確的,至少有下幾種情況。

  (1) 對方已關機,或者網路上根本沒有這個地址:比如在上圖中主機A中PING 192.168.0.7 ,或者主機B關機了,在主機A中PING 192.168.0.5 都會得到超時的信息。
  (2)對方與自己不在同一網段內,通過路由也無法找到對方,但有時對方確實是存在的,當然不存在也是返回超時的信息。
  (3)對方確實存在,但設置了ICMP數據包過濾(比如防火牆設置)。
  怎樣知道對方是存在,還是不存在呢,可以用帶參數 -a 的Ping命令探測對方,如果能得到對方的NETBIOS名稱,則說明對方是存在的,是有防火牆設置,如果得不到,多半是對方不存在或關機,或不在同一網段內。

 (4)錯誤設置IP地址

  正常情況下,一台主機應該有一個網卡,一個IP地址,或多個網卡,多個IP地址(這些地址一定要處於不同的IP子網)。但如果一台電腦的「撥號網路適配器」(相當於一塊軟網卡)的TCP/IP設置中,設置了一個與網卡IP地址處於同一子網的IP地址,這樣,在IP層協議看來,這台主機就有兩個不同的介面處於同一網段內。當從這台主機Ping其他的機器時,會存在這樣的問題:

  A.主機不知道將數據包發到哪個網路介面,因為有兩個網路介面都連接在同一網段。

  B.主機不知道用哪個地址作為數據包的源地址。因此,從這台主機去Ping其他機器,IP層協議會無法處理,超時后,Ping 就會給出一個「超時無應答」的錯誤信息提示。但從其他主機Ping這台主機時,請求包從特定的網卡來,ICMP只須簡單地將目的、源地址互換,並更改一些標誌即可,ICMP應答包能順利發出,其他主機也就能成功Ping通這台機器了。

  2.Destination host Unreachable

  (1) 對方與自己不在同一網段內,而自己又未設置默認的路由,比如上例中A機中不設定默認的路由,運行Ping 192.168.0.1.4就會出現「Destination host Unreachable」。

  (2)網線出了故障

  這裡要說明一下「destination host unreachable」和 「time out」的區別,如果所經過的路由器的路由表中具有到達目標的路由,而目標因為其他原因不可到達,這時候會出現「time out」,如果路由表中連到達目標的路由都沒有,那就會出現「destination host unreachable」。

  3.Bad IP address

  這個信息表示您可能沒有連接到DNS伺服器,所以無法解析這個IP地址,也可能是IP地址不存在。

  4.Source quench received
 
  這個信息比較特殊,它出現的機率很少。它表示對方或中途的伺服器繁忙無法回應。

  5.Unknown host——不知名主機

  這種出錯信息的意思是,該遠程主機的名字不能被域名伺服器(DNS)轉換成IP地址。故障原因可能是域名伺服器有故障,或者其名字不正確,或者網路管理員的系統與遠程主機之間的通信線路有故障。

  6.No answer——無響應

  這種故障說明本地系統有一條通向中心主機的路由,但卻接收不到它發給該中心主機的任何信息。故障原因可能是下列之一:中心主機沒有工作;本地或中心主機網路配置不正確;本地或中心的路由器沒有工作;通信線路有故障;中心主機存在路由選擇問題。

  7.Ping 127.0.0.1:127.0.0.1是本地循環地址

  如果本地址無法Ping通,則表明本地機TCP/IP協議不能正常工作。

  8.no rout to host:網卡工作不正常。

  9.transmit failed,error code:10043網卡驅動不正常。

  10.unknown host name:DNS配置不正確。

  以上是我在「拼」(Ping)的過程中,得到一些經驗技巧,希望能對大家的工作和學習有所幫助。
您需要登錄后才可以回帖 登錄 | 註冊

本版積分規則

關於本站 | 隱私權政策 | 免責條款 | 版權聲明 | 聯絡我們

Copyright © 2001-2013 海外華人中文門戶:倍可親 (http://big5.backchina.com) All Rights Reserved.

程序系統基於 Discuz! X3.1 商業版 優化 Discuz! © 2001-2013 Comsenz Inc.

本站時間採用京港台時間 GMT+8, 2025-7-20 10:28

快速回復 返回頂部 返回列表