-
ping
(網絡診斷工具)
鎖定
- 中文名
- 因特網包探索器
- 外文名
- Packet Internet Groper
- 簡 稱
- PING
- 作 用
- 測試網絡連接量
ping基本信息
ping用於確定本地主機是否能與另一台主機成功交換(發送與接收)數據包,再根據返回的信息,就可以推斷TCP/IP參數是否設置正確,以及運行是否正常、網絡是否通暢等。Ping命令可以進行以下操作
[3]
:
②每個發送的數據包最多等待一秒。
③打印已傳輸和接收的數據包數。
需要注意的是,Ping成功並不一定就代表TCP/IP配置正確,有可能還要執行大量的本地主機與遠程主機的數據包交換,才能確信TCP/IP配置的正確性。如果執行ping成功而網絡仍無法使用,那麼問題很可能出在網絡系統的軟件配置方面,ping成功只保證當前主機與目的主機間存在一條連通的物理路徑
[3]
。
ping實現方式
ICMPPing
ICMP報文分為信息報文、差錯報文、控制報文。信息報文一般由客户端發出,例如用於測試目的地址可達性的迴應請求/應答報文;而差錯報文一般由服務器或是路由器發出,表示網絡或主機不能完成要求的服務。當發送一份ICMP差錯報文時,文始終包含了IP首部和產生ICMP差錯報文的IP數據報的前8個字節
[4]
。
ICMP Ping就是向目標主機發送ICMP信息報文,目標主機(有時是路由器)迴應ICMP信息報文或差錯報文,Ping程序根據這些收到的ICMP報文,以知道目標主機的可達性。可用於Ping的信息報文有:迴應請求與響應報文、時間戳請求與響應報文和掩碼請求與響應報文
[4]
。
TCPPing
在進行ICMPPing的時候,如果在目標主機的網絡網關過濾了ICMP Ping包,ICMPPing的結果就不準確了。此時,應該考慮其他方式,如TCPPing、LIDPPing。TCP的功能是在一對ULP(UpperLayerProtocol,高層協議)之間提供的數據報服務基礎上,建立可靠的端對端連接,並提供虛電路服務和麪向數據流的傳輸服務。TCP中的基本傳輸單元是段(Segment),一個TCP段由段頭和數據流兩部分組成
[4]
。
在TCP協議中,SYN包用來表示建立連接請求。如果對方端口處在listening狀態,就會回送ACK包,並附上自己的ISN。但是如果對方端口是關閉的,它會發回一個RST包,表示應該馬上斷開連接(少數情況下會發回一個同時置SYN和ACK位的包)。如果我們向一個端口發送ACK包,而事先沒有與此端口建立連接,那麼,無論端口是否打開,它都會回送一個RST包。所以可以看出,無論這個端口是否打開,總會有某一種數據包返回,以此可以判定目標主機可達。而目標主機如果不可達,路由器就會向掃描主機發送目的地不可達的ICMP報文。這樣,通過向目標主機發送TCPSYN包或TCPACK包就可以準確判斷目標主機是否可達,而且根據RFC793(TCP),目標主機(或路由器)都無法屏蔽TCPSYN包和TCPACK包,因此,TCPPing的準確性比ICMPPing的準確性要高。在實現的時候,需要利用RAW Socket,定製TCP包並封裝在IP包中。在Linux系統下,非root用户是沒有此項權利的,同樣Windows的非.Administrator組用户也不能直接填寫TCP包頭和IP包頭
[4]
。
UDPPing
UDPPing與TCPPing的原理類似,通過RAWSocket定製UDP包,主要是格式化UDP包中的目的端口號,一般指定一個數量值很大的目的端口號(比如31558),很少應用程序用到數量值入的端口號,也就是説該端口很有可能是處於關閉狀態。首先構建好UDP報文,然後遞交給IP實體發送。如果目標主機不可達(網絡不通或主機未打開),則路由器將發送一個目的不可達ICMP報文。而如果目標主機可達,在其接收數據時,其UDP實體首先判斷接收到的目的端口號是否與當前使用的某端口號匹配,如果匹配,則將數據報放入到對應的接收隊列,否則如果目的端口號對應的端口關閉則丟棄該數據報,並回送一個“端口不可達”的ICMP報文,因此,只要目標主機可達,UDPPing程序將收到一個UDP迴應包(也可能沒有)或者“端口不可達”的ICMP報文而目標主機不可達,將收到“目的不可達’’的ICMP報文
[4]
。
ping命令用法
Windowsping
①檢查當前的IP配置。在Windows系統中使用ipconfig.exe檢查IP配置。
②在Windows系統中,ping命令允許在命令行中輸入選項,命令形式如下:
C:\>ping169.254.104.10此時使用的是IP協議。
用户Ping
在路由器的用户模式下,也可以使用ping命令,它是一個簡單的全局命令,用法同Windows下相同,只是返回代碼不同。其形式是:Router>ping169.254.104.10路由器缺省使用IP協議
[5]
。
擴展Ping
在路由器的特權模式下,可以使用其他幾個選項,這就是所謂的擴展ping,它是交互形式工作的。擴展ping的可用其他選項包括:使用不同大小的數據包;增加應答等待時間間隔;一次發送多於5個數據包;在IP報頭設置“不分段”位;在其他協議中使用ping,例如IPX和AppleTalk。方法是:在enable模式下輸入ping並按回車鍵即可啓動擴展ping,ping工具將提示輸入各種變量值。其形式是:
[5]
Router#ping
Protocol[ip]:***
TargetIPaddress:****
…………
ping檢查網絡故障
正常情況下,當你使用Ping命令來查找問題所在或檢驗網絡運行情況時,你需要使用許多Ping命令,如果所有都運行正確,你就可以相信基本的連通性和配置參數沒有問題;如果某些Ping命令出現運行故障,它也可以指明到何處去查找問題
[3]
。下面就給出一個典型的檢測次序及對應的可能故障:
ping本機IP——這個命令被送到你計算機所配置的IP地址,你的計算機始終都應該對該Ping命令做出應答,如果沒有,則表示本地配置或安裝存在問題。出現此問題時,局域網用户請斷開網絡電纜,然後重新發送該命令。如果網線斷開後,本命令正確,則表示另一台計算機可能配置了相同的IP地址
[3]
。
ping局域網內其他IP——這個命令應該離開你的計算機,經過網卡及網絡電纜到達其他計算機,再返回。收到回送應答表明本地網絡中的網卡和載體運行正確。但如果收到0個回送應答,那麼表示子網掩碼(進行子網分割時,將IP地址的網絡部分與主機部分分開的代碼)不正確或網卡配置錯誤或電纜系統有問題
[3]
。
pinglocalhost——localhost是個操作系統的網絡保留名,它是127.0.0.1的別名,每台計算機都應該能夠將該名字轉換成該地址。如果沒有做到這一條,則表示主機文件(/Windows/host)中存在問題
[3]
。
pingwww.baidu.com——對這個域名執行Ping命令,你的計算機必須先將域名轉換成IP地址,通常是通過DNS服務器。如果這裏出現故障,則表示DNS服務器的IP地址配置不正確或DNS服務器有故障
[3]
。
ping影響因素
在物理鏈路連通和路由設置正確的情況下,使用Ping命令仍然屏不通,可能有以下幾個問題:
(4)網絡因設備間的超時,造成ICMP報文無法在缺省時間(2秒)內收到。超時的原因有:主機沒有足夠的時間和資源來響應;路徑太長,沒到達目的地時TTL的值為0,最後一個路由器將發回ICMP超時信息;使用擴展Ping,增加應答等待時間間隔等
[5]
。