複製鏈接
請複製以下鏈接發送給好友

ping

(網絡診斷工具)

鎖定
ping (Packet Internet Groper)是一種因特網包探索器,用於測試網絡連接量的程序 [1]  。Ping是工作在 TCP/IP網絡體系結構中應用層的一個服務命令, 主要是向特定的目的主機發送 ICMP(Internet Control Message Protocol 因特網報文控制協議)Echo 請求報文,測試目的站是否可達及瞭解其有關狀態 [2] 
中文名
因特網包探索器
外文名
Packet Internet Groper
簡    稱
PING
作    用
測試網絡連接量

ping基本信息

ping用於確定本地主機是否能與另一台主機成功交換(發送與接收)數據包,再根據返回的信息,就可以推斷TCP/IP參數是否設置正確,以及運行是否正常、網絡是否通暢等。Ping命令可以進行以下操作 [3]  :
①通過將ICMP(Internet控制消息協議)回顯數據包發送到計算機並偵聽回顯回覆數據包來驗證與一台或多台遠程計算機的連接。
②每個發送的數據包最多等待一秒。
③打印已傳輸和接收的數據包數。
需要注意的是,Ping成功並不一定就代表TCP/IP配置正確,有可能還要執行大量的本地主機與遠程主機的數據包交換,才能確信TCP/IP配置的正確性。如果執行ping成功而網絡仍無法使用,那麼問題很可能出在網絡系統的軟件配置方面,ping成功只保證當前主機與目的主機間存在一條連通的物理路徑 [3] 

ping實現方式

ICMPPing
ICMP是一種將差錯與控制集於一體的協議,不僅用於傳輸差錯報文,還用於消息控制報文。它與IP協議相互依賴:IP在發送一個差錯或控制報文時要用到ICMP,而ICMP利用IP來傳遞報文 [4] 
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
TCP/IP協議組中,用户數據報協議(UDP)提供應用進程之間數據報傳送的基本機制。每個UDP報文不僅傳送用户數據,而且還包括髮送方和接收方的協議端口號 [4] 
UDPPing與TCPPing的原理類似,通過RAWSocket定製UDP包,主要是格式化UDP包中的目的端口號,一般指定一個數量值很大的目的端口號(比如31558),很少應用程序用到數量值入的端口號,也就是説該端口很有可能是處於關閉狀態。首先構建好UDP報文,然後遞交給IP實體發送。如果目標主機不可達(網絡不通或主機未打開),則路由器將發送一個目的不可達ICMP報文。而如果目標主機可達,在其接收數據時,其UDP實體首先判斷接收到的目的端口號是否與當前使用的某端口號匹配,如果匹配,則將數據報放入到對應的接收隊列,否則如果目的端口號對應的端口關閉則丟棄該數據報,並回送一個“端口不可達”的ICMP報文,因此,只要目標主機可達,UDPPing程序將收到一個UDP迴應包(也可能沒有)或者“端口不可達”的ICMP報文而目標主機不可達,將收到“目的不可達’’的ICMP報文 [4] 

ping命令用法

Windowsping
在Windows系列的操作系統中,我們都可以使用ping命令來解決網絡中出現的路由問題,方法如下 [5] 
①檢查當前的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]  。下面就給出一個典型的檢測次序及對應的可能故障:
ping127.0.0.1——這個Ping命令被送到本地計算機的IP軟件,該命令永不退出該計算機。如果沒有做到這一點,就表示TCP/IP的安裝或運行存在某些最基本的問題 [3] 
ping本機IP——這個命令被送到你計算機所配置的IP地址,你的計算機始終都應該對該Ping命令做出應答,如果沒有,則表示本地配置或安裝存在問題。出現此問題時,局域網用户請斷開網絡電纜,然後重新發送該命令。如果網線斷開後,本命令正確,則表示另一台計算機可能配置了相同的IP地址 [3] 
ping局域網內其他IP——這個命令應該離開你的計算機,經過網卡及網絡電纜到達其他計算機,再返回。收到回送應答表明本地網絡中的網卡和載體運行正確。但如果收到0個回送應答,那麼表示子網掩碼(進行子網分割時,將IP地址的網絡部分與主機部分分開的代碼)不正確或網卡配置錯誤或電纜系統有問題 [3] 
ping網關IP——這個命令如果應答正確,表示局域網中的網關路由器正在運行並能夠作出應答 [3] 
ping遠程IP——如果收到4個應答,表示成功的使用了缺省網關。對於撥號上網用户則表示能夠成功的訪問Internet(但不排除ISP的DNS會有問題) [3] 
pinglocalhost——localhost是個操作系統的網絡保留名,它是127.0.0.1的別名,每台計算機都應該能夠將該名字轉換成該地址。如果沒有做到這一條,則表示主機文件(/Windows/host)中存在問題 [3] 
pingwww.baidu.com——對這個域名執行Ping命令,你的計算機必須先將域名轉換成IP地址,通常是通過DNS服務器。如果這裏出現故障,則表示DNS服務器的IP地址配置不正確或DNS服務器有故障 [3] 
如果上面所列出的所有Ping命令都能正常運行,那麼計算機可以進行本地和遠程通信。但是,這些命令的成功並不表示所有的網絡配置都沒有問題,例如,某些子網掩碼錯誤就可能無法用這些方法檢測到 [3] 

ping影響因素

在物理鏈路連通和路由設置正確的情況下,使用Ping命令仍然屏不通,可能有以下幾個問題:
(1)網線剛插到交換機上就Ping通網關,忽略了生成樹的收斂時間。當然,較新的交換機都支持快速生成樹,或者有的管理員乾脆把用户端口(accessport)的生成樹協議關掉,問題就解決了 [5] 
(2)不管中間經過了多少個節點,只要有節點(包括端節點)對ICMP信息包進行了過濾,Ping不通是正常的。最常見的就是防火牆的行為 [5] 
(3)某些路由器端口是不允許用户Ping的 [5] 
(4)網絡因設備間的超時,造成ICMP報文無法在缺省時間(2秒)內收到。超時的原因有:主機沒有足夠的時間和資源來響應;路徑太長,沒到達目的地時TTL的值為0,最後一個路由器將發回ICMP超時信息;使用擴展Ping,增加應答等待時間間隔等 [5] 
(5)引入NAT的場合會造成單向Ping通。NAT可以起到隱蔽內部地址的作用,當由內Ping外時,可以Ping通是因為NAT表的映射關係存在,當由外發起Ping內網主機時,就無從查找邊界路由器的NAT訪問列表了 [5] 
參考資料
  • 1.    陳迎東. 一種基於EPON網管的設備掃描方法, CN102932187A[P]. 2013.
  • 2.    慄喧. Ping命令參數詳解[J]. 計算機光盤軟件與應用, 2010(3):52-53.
  • 3.    胡一凡. 淺談ping實用程序的用法[J]. 網管員世界, 2006(8):154-155.
  • 4.    傅佳芳,趙保華. Ping技術研究[J]. 微型電腦應用(6):47-50.
  • 5.    陶福貴, 王鋭. Ping命令的使用方法詳解綜述[J]. 科技創新導報, 2007(6):18-18.