關(guān)于Ping命令以及Ping命令的用法
Ping概述:
Ping 是Windows系列自帶的一個(gè)可執(zhí)行命令。利用它可以檢查網(wǎng)絡(luò)是否能夠連通,可以很好地幫助我們分析判定網(wǎng)絡(luò)故障。該命令只有在安裝了 TCP/IP 協(xié)議后才可以使用。Ping命令的主要作用是通過發(fā)送數(shù)據(jù)包并接收應(yīng)答信息來檢測(cè)兩臺(tái)計(jì)算機(jī)之間的網(wǎng)絡(luò)是否連通。當(dāng)網(wǎng)絡(luò)出現(xiàn)故障的時(shí)候,可以用這個(gè)命令來預(yù)測(cè)故障和確定故障地點(diǎn)。Ping命令成功只是說明當(dāng)前主機(jī)與目的主機(jī)之間存在一條連通的路徑。如果不成功,則考慮:網(wǎng)線是否連通、網(wǎng)卡設(shè)置是否正確、IP地址是否可用等。
需要注意的是:成功地與另一臺(tái)主機(jī)進(jìn)行一次或兩次數(shù)據(jù)報(bào)交換并不表示TCP/IP配置就是正確的,你必須執(zhí)行大量的本地主機(jī)與遠(yuǎn)程主機(jī)的數(shù)據(jù)報(bào)交換,才能確信TCP/IP的正確性。
按照缺省設(shè)置,Windows上運(yùn)行的Ping命令發(fā)送4個(gè)ICMP(網(wǎng)間控制報(bào)文協(xié)議)回送請(qǐng)求,每個(gè)32字節(jié)數(shù)據(jù),如果一切正常,你應(yīng)能得到4個(gè)回送應(yīng)答。
Ping能夠以毫秒為單位顯示發(fā)送回送請(qǐng)求到返回回送應(yīng)答之間的時(shí)間量。如果應(yīng)答時(shí)間短,表示數(shù)據(jù)報(bào)不必通過太多的路由器或網(wǎng)絡(luò)連接速度比較快。Ping還能顯示TTL(Time To Live存在時(shí)間)值,你可以通過TTL值推算一下數(shù)據(jù)包已經(jīng)通過了多少個(gè)路由器:源地點(diǎn)TTL起始值(就是比返回TTL略大的一個(gè)2的乘方數(shù))-返回時(shí)TTL值。例如,返回TTL值為119,那么可以推算數(shù)據(jù)報(bào)離開源地址的TTL起始值為128,而源地點(diǎn)到目標(biāo)地點(diǎn)要通過9個(gè)路由器網(wǎng)段(128-119);如果返回TTL值為246,TTL起始值就是256,源地點(diǎn)到目標(biāo)地點(diǎn)要通過9個(gè)路由器網(wǎng)段。
PING命令參數(shù)詳解
1、-a 解析計(jì)算機(jī)NetBios名。
示例:
C:\>ping -a 192.168.1.21
Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data:
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Ping statistics for 192.168.1.21:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
從上面就可以知道IP為192.168.1.21的計(jì)算機(jī)NetBios名為iceblood.yofor.com。
2、n count 發(fā)送count指定的Echo數(shù)據(jù)包數(shù)。
在默認(rèn)情況下,一般都只發(fā)送四個(gè)數(shù)據(jù)包,通過這個(gè)命令可以自己定義發(fā)送的個(gè)數(shù),對(duì)衡量網(wǎng)絡(luò)速度很有幫助,比如我想測(cè)試發(fā)送50個(gè)數(shù)據(jù)包的返回的平均時(shí)間為多少,最快時(shí)間為多少,最慢時(shí)間為多少就可以通過以下獲知:
C:\>ping -n 50 202.103.96.68
Pinging 202.103.96.68 with 32 bytes of data:
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Request timed out.
………………
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Ping statistics for 202.103.96.68:
Packets: Sent = 50, Received = 48, Lost = 2 (4% loss),Approximate round trip times in milli-seconds:
Minimum = 40ms, Maximum = 51ms, Average = 46ms
從以上我就可以知道在給202.103.96.68發(fā)送50個(gè)數(shù)據(jù)包的過程當(dāng)中,返回了48個(gè),其中有兩個(gè)由于未知原因丟失,這48個(gè)數(shù)據(jù)包當(dāng)中返回速度最快為40ms,最慢為51ms,平均速度為46ms。
3、-l size . 定義echo數(shù)據(jù)包大小。
在默認(rèn)的情況下windows的ping發(fā)送的數(shù)據(jù)包大小為32byt,我們也可以自己定義它的大小,但有一個(gè)大小的限制,就是最大只能發(fā)送65500byt,也許有人會(huì)問為什么要限制到65500byt,因?yàn)閃indows系列的系統(tǒng)都有一個(gè)安全漏洞(也許還包括其他系統(tǒng))就是當(dāng)向?qū)Ψ揭淮伟l(fā)送的數(shù)據(jù)包大于或等于65532時(shí),對(duì)方就很有可能當(dāng)機(jī),所以微軟公司為了解決這一安全漏洞于是限制了ping的數(shù)據(jù)包大小。雖然微軟公司已經(jīng)做了此限制,但這個(gè)參數(shù)配合其他參數(shù)以后危害依然非常強(qiáng)大,比如我們就可以通過配合-t參數(shù)來實(shí)現(xiàn)一個(gè)帶有攻擊性的命令:(以下介紹帶有危險(xiǎn)性,僅用于試驗(yàn),請(qǐng)勿輕易施于別人機(jī)器上,否則后果自負(fù))
C:\>ping -l 65500 -t 192.168.1.21
Pinging 192.168.1.21 with 65500 bytes of data:
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
………………
這樣它就會(huì)不停的向192.168.1.21計(jì)算機(jī)發(fā)送大小為65500byt的數(shù)據(jù)包,如果你只有一臺(tái)計(jì)算機(jī)也許沒有什么效果,但如果有很多計(jì)算機(jī)那么就可以使對(duì)方完全癱瘓,曾做過這樣的試驗(yàn),當(dāng)同時(shí)使用10臺(tái)以上計(jì)算機(jī)ping一臺(tái)Win2000Pro系統(tǒng)的計(jì)算機(jī)時(shí),不到5分鐘對(duì)方的網(wǎng)絡(luò)就已經(jīng)完全癱瘓,網(wǎng)絡(luò)嚴(yán)重堵塞,HTTP和FTP服務(wù)完全停止,由此可見威力非同小可。
4、-f在數(shù)據(jù)包中發(fā)送“不要分段”標(biāo)志。
在一般你所發(fā)送的數(shù)據(jù)包都會(huì)通過路由分段再發(fā)送給對(duì)方,加上此參數(shù)以后路由就不會(huì)再分段處理。
5、-i TTL 指定TTL值在對(duì)方的系統(tǒng)里停留的時(shí)間。
此參數(shù)同樣是幫助你檢查網(wǎng)絡(luò)運(yùn)轉(zhuǎn)情況的。
6、-v TOS 將“服務(wù)類型”字段設(shè)置為 tos 指定的值。
7、-r count在“記錄路由”字段中記錄傳出和返回?cái)?shù)據(jù)包的路由。在一般情況下你發(fā)送的數(shù)據(jù)包是通過一個(gè)個(gè)路由才到達(dá)對(duì)方的,但到底是經(jīng)過了哪些路由呢?通過此參數(shù)就可以設(shè)定你想探測(cè)經(jīng)過的路由的個(gè)數(shù),不過限制在了9個(gè),也就是說你只能跟蹤到9個(gè)路由,如果想探測(cè)更多,可以通過其他命令實(shí)現(xiàn)。
C:\>ping -n 1 -r 9 202.96.105.101 (發(fā)送一個(gè)數(shù)據(jù)包,最多記錄9個(gè)路由)
Pinging 202.96.105.101 with 32 bytes of data:
Reply from 202.96.105.101: bytes=32 time=10ms TTL=249
Route: 202.107.208.187 ->
202.107.210.214 ->
61.153.112.70 ->
61.153.112.89 ->
202.96.105.149 ->
202.96.105.97 ->
202.96.105.101 ->
202.96.105.150 ->
61.153.112.90
Ping statistics for 202.96.105.101:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 10ms, Maximum = 10ms, Average = 10ms
從上面我就可以知道從我的計(jì)算機(jī)到202.96.105.101一共通過了202.107.208.187 ,202.107.210.214 , 61.153.112.70 , 61.153.112.89 , 202.96.105.149 , 202.96.105.97這幾個(gè)路由。
8、-s count指定 count 指定的躍點(diǎn)數(shù)的時(shí)間戳。
此參數(shù)和-r差不多,只是這個(gè)參數(shù)不記錄數(shù)據(jù)包返回所經(jīng)過的路由,最多也只記錄4個(gè)。
9、-j host-list利用 computer-list 指定的計(jì)算機(jī)列表路由數(shù)據(jù)包。連續(xù)計(jì)算機(jī)可以被中間網(wǎng)關(guān)分隔(路由稀疏源)IP 允許的最大數(shù)量為 9。
10、-k host-list 利用 computer-list 指定的計(jì)算機(jī)列表路由數(shù)據(jù)包。連續(xù)計(jì)算機(jī)不能被中間網(wǎng)關(guān)分隔(路由嚴(yán)格源)IP 允許的最大數(shù)量為 9。
11、-w timeout指定超時(shí)間隔,單位為毫秒。
12、-t--連續(xù)對(duì)IP地址執(zhí)行Ping命令,直到被用戶以Ctrl+C中斷。
ping命令的其他技巧:
在一般情況下還可以通過ping對(duì)方讓對(duì)方返回給你的TTL值大小,粗略的判斷目標(biāo)主機(jī)的系統(tǒng)類型是Windows系列還是UNIX/Linux系列,一般情況下Windows系列的系統(tǒng)返回的TTL值在100-130之間,而UNIX/Linux系列的系統(tǒng)返回的TTL值在240-255之間,當(dāng)然TTL的值在對(duì)方的主機(jī)里是可以修改的,Windows系列的系統(tǒng)可以通過修改注冊(cè)表以下鍵值實(shí)現(xiàn):
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DefaultTTL"=dword:000000ff
255---FF
128---80
64----40
32----20
在網(wǎng)絡(luò)沒有問題,卻無法PING通時(shí)可能有以下一些情況。
1.太心急。即網(wǎng)線剛插到交換機(jī)上就想Ping通網(wǎng)關(guān),忽略了生成樹的收斂時(shí) 間。當(dāng)然,較新的交換機(jī)都支持快速生成樹,或者有的管理員干脆把用戶端口(access port)的生成樹協(xié)議關(guān)掉,問題就解決了。
2.訪問控制。不管中間跨越了多少跳,只要有節(jié)點(diǎn)(包括端節(jié)點(diǎn))對(duì)ICMP進(jìn)行了過濾,Ping不通是正常的。最常見的就是防火墻的行為。
3.某些路由器端口是不允許用戶Ping的。
還遇到過這樣的情形,更為隱蔽。
1.網(wǎng)絡(luò)因設(shè)備間的時(shí)延太大,造成ICMP echo報(bào)文無法在缺省時(shí) 間(2秒)內(nèi)收到。時(shí)延的原因有若干,比如線路(衛(wèi)星網(wǎng)時(shí)延上下星為540毫秒),路由器處理時(shí)延,或路由設(shè)計(jì)不合理造成迂回路徑。使用擴(kuò)展Ping,增加timed out時(shí) 間,可Ping通的話就屬路由時(shí)延太大問題。
2.引入NAT的場(chǎng)合會(huì)造成單向Ping通。NAT可以起到隱蔽內(nèi)部地址的作用,當(dāng)由內(nèi)Ping外時(shí),可以Ping通是因?yàn)镹AT表的映射關(guān)系存在,當(dāng)由外發(fā)起Ping內(nèi)網(wǎng)主機(jī)時(shí),就無從查找邊界路由器的NAT表項(xiàng)了。
3.多路由負(fù)載均衡場(chǎng)合。比如Ping遠(yuǎn)端目的主機(jī),成功的reply和timed out交錯(cuò)出現(xiàn),結(jié)果發(fā)現(xiàn)在網(wǎng)關(guān)路由器上存在兩條到目的網(wǎng)段的路由,兩條路由權(quán)重相等,但經(jīng)查一條路由存在問題。
4.IP地址分配不連續(xù)。地址規(guī)劃出現(xiàn)問題象是在網(wǎng)絡(luò)中埋了地雷,地址重疊或掩碼劃分不連續(xù)都可能在Ping時(shí)出現(xiàn)問題。比如一個(gè)極端情況,A、B兩臺(tái)主機(jī),經(jīng)過多跳相連,A能Ping通B的網(wǎng)關(guān),而且B的網(wǎng)關(guān)設(shè)置正確,但A、B就是Ping不通。經(jīng)查,在B的網(wǎng)卡上還設(shè)有第二個(gè)地址,并且這個(gè)地址與A所在的網(wǎng)段重疊。
5.指定源地址的擴(kuò)展Ping。登陸到路由器上,Ping遠(yuǎn)程主機(jī),當(dāng)ICMP echo request從串行廣域網(wǎng)接口發(fā)出去的時(shí)候,路由器會(huì)指定某個(gè)IP地址作為源IP,這個(gè)IP地址可能不是此接口的IP或這個(gè)接口根本沒有IP地址。而某個(gè)下游路由器可能并沒有到這個(gè)IP網(wǎng)段的路由,導(dǎo)致不能Ping通。可以采用擴(kuò)展Ping,指定好源IP地址。
當(dāng)主機(jī)網(wǎng)關(guān)和中間路由的配置認(rèn)為正確時(shí),出現(xiàn)Ping問題也是很普遍的現(xiàn)象。此時(shí)應(yīng)該忘掉"不可能"幾個(gè)字,把Ping的擴(kuò)展參數(shù)和反饋信息、traceroute、路由器debug、以及端口鏡像和Sniffer等工具結(jié)合起來進(jìn)行分析。
比如,當(dāng)A、B兩臺(tái)主機(jī)經(jīng)過多跳路由器相連時(shí),二者網(wǎng)關(guān)設(shè)置正確,在A上可以Ping通B,但在B上不能Ping通A。可以通過在交換機(jī)做鏡像,并用Sniffer抓包,來找出ICMP 報(bào)文終止于何處,報(bào)文內(nèi)容是什么,就可以發(fā)現(xiàn)ICMP報(bào)文中的源IP地址并非預(yù)期的那樣,此時(shí)很容易想象出可能是路由器的NAT功能使然,這樣就能夠逐步地發(fā)現(xiàn)一些被忽視的問題。而Ping不通時(shí)的反饋信息是"destination_net_unreachable"還是"timed out"也是有區(qū)別的
利用PING來檢查網(wǎng)絡(luò)狀態(tài)的方法:
1.Ping本機(jī)IP
例如本機(jī)IP地址為:172.168.200.2。則執(zhí)行命令Ping 172.168.200.2。如果網(wǎng)卡安裝配置沒有問題,則應(yīng)有類似下列顯示:
Replay from 172.168.200.2 bytes=32 time<10ms
Ping statistics for 172.168.200.2
Packets Sent=4 Received=4 Lost=0 0% loss
Approximate round trip times in milli-seconds
Minimum=0ms Maxiumu=1ms Average=0ms
如果在MS-DOS方式下執(zhí)行此命令顯示內(nèi)容為:Request timed out,則表明網(wǎng)卡安裝或配置有問題。將網(wǎng)線斷開再次執(zhí)行此命令,如果顯示正常,則說明本機(jī)使用的IP地址可能與另一臺(tái)正在使用的機(jī)器IP地址重復(fù)了。如果仍然不正常,則表明本機(jī)網(wǎng)卡安裝或配置有問題,需繼續(xù)檢查相關(guān)網(wǎng)絡(luò)配置。
2.Ping網(wǎng)關(guān)IP
假定網(wǎng)關(guān)IP為:172.168.6.1,則執(zhí)行命令Ping 172.168.6.1。在MS-DOS方式下執(zhí)行此命令,如果顯示類似以下信息:
Reply from 172.168.6.1 bytes=32 time=9ms TTL=255
Ping statistics for 172.168.6.1
Packets Sent=4 Received=4 Lost=0
Approximate round trip times in milli-seconds
Minimum=1ms Maximum=9ms Average=5ms
則表明局域網(wǎng)中的網(wǎng)關(guān)路由器正在正常運(yùn)行。反之,則說明網(wǎng)關(guān)有問題。
3.Ping遠(yuǎn)程IP
這一命令可以檢測(cè)本機(jī)能否正常訪問Internet。比如本地電信運(yùn)營(yíng)商的IP地址為:202.102.48.141。在MS-DOS方式下執(zhí)行命令:Ping 202.102.48.141,如果屏幕顯示:
Reply from 202.102.48.141 bytes=32 time=33ms TTL=252
Reply from 202.102.48.141 bytes=32 time=21ms TTL=252
Reply from 202.102.48.141 bytes=32 time=5ms TTL=252
Reply from 202.102.48.141 bytes=32 time=6ms TTL=252
Ping statistics for 202.102.48.141
Packets Sent=4 Received=4 Lost=0 0% loss
Approximate round trip times in milli-seconds
Minimum=5ms Maximum=33ms Average=16ms
則表明運(yùn)行正常,能夠正常接入互聯(lián)網(wǎng)。反之,則表明主機(jī)文件(windows/host)存在問題。