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