對于Windows下ping命令相信大家已經再熟悉不過了,但是能把ping的功能發揮到最大的人卻并不是很多,當然我也并不是說我可以讓ping發揮最大的功能,我也只不過經常用ping這個工具,也總結了一些小經驗,現在和大家分享一下。
現在我就參照ping命令的幫助說明來給大家說說我使用ping時會用到的技巧,ping只有在安裝了TCP/IP協議以后才可以使用:
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list
Options:
-t Ping the specified host until stopped.To see statistics and continue - type Control-Break;To stop - type Control-C.
不停的ping地方主機,直到你按下Control-C。
此功能沒有什么特別的技巧,不過可以配合其他參數使用,將在下面提到。
-a Resolve addresses to hostnames.
解析計算機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。
-n count Number of echo requests to send.
發送count指定的Echo數據包數。
在默認情況下,一般都只發送四個數據包,通過這個命令可以自己定義發送的個數,對衡量網絡速度很有幫助,比如我想測試發送50個數據包的返回的平均時間為多少,最快時間為多少,最慢時間為多少就可以通過以下獲知:
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發送50個數據包的過程當中,返回了48個,其中有兩個由于未知原因丟失,這48個數據包當中返回速度最快為40ms,最慢為51ms,平均速度為46ms。
-l size Send buffer size.
定義echo數據包大小。
在默認的情況下windows的ping發送的數據包大小為32byt,我們也可以自己定義它的大小,但有一個大小的限制,就是最大只能發送65500byt,也許有人會問為什么要限制到65500byt,因為Windows系列的系統都有一個安全漏洞(也許還包括其他系統)就是當向對方一次發送的數據包大于或等于65532時,對方就很有可能擋機,所以微軟公司為了解決這一安全漏洞于是限制了ping的數據包大小。雖然微軟公司已經做了此限制,但這個參數配合其他參數以后危害依然非常強大,比如我們就可以通過配合-t參數來實現一個帶有攻擊性的命令:(以下介紹帶有危險性,僅用于試驗,請勿輕易施于別人機器上,否則后果自負)
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計算機發送大小為65500byt的數據包,如果你只有一臺計算機也許沒有什么效果,但如果有很多計算機那么就可以使對方完全癱瘓,我曾經就做過這樣的試驗,當我同時使用10臺以上計算機ping一臺Win2000Pro系統的計算機時,不到5分鐘對方的網絡就已經完全癱瘓,網絡嚴重堵塞,HTTP和FTP服務完全停止,由此可見威力非同小可。
-f Set Don‘t Fragment flag in packet.
在數據包中發送“不要分段”標志。
在一般你所發送的數據包都會通過路由分段再發送給對方,加上此參數以后路由就不會再分段處理。
-i TTL Time To Live.
指定TTL值在對方的系統里停留的時間。
此參數同樣是幫助你檢查網絡運轉情況的。
-v TOS Type Of Service.
將“服務類型”字段設置為 tos 指定的值。
-r count Record route for count hops.
在“記錄路由”字段中記錄傳出和返回數據包的路由。
在一般情況下你發送的數據包是通過一個個路由才到達對方的,但到底是經過了哪些路由呢?通過此參數就可以設定你想探測經過的路由的個數,不過限制在了9個,也就是說你只能跟蹤到9個路由,如果想探測更多,可以通過其他命令實現,我將在以后的文章中給大家講解。以下為示例:
C:\》ping -n 1 -r 9 202.96.105.101 (發送一個數據包,最多記錄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這幾個路由。
-s count Timestamp for count hops.
指定 count 指定的躍點數的時間戳。
此參數和-r差不多,只是這個參數不記錄數據包返回所經過的路由,最多也只記錄4個。
-j host-list Loose source route along host-list.
利用 computer-list 指定的計算機列表路由數據包。連續計算機可以被中間網關分隔(路由稀疏源)IP 允許的最大數量為 9。
-k host-list Strict source route along host-list.
利用 computer-list 指定的計算機列表路由數據包。連續計算機不能被中間網關分隔(路由嚴格源)IP 允許的最大數量為 9。
-w timeout Timeout in milliseconds to wait for each reply.
指定超時間隔,單位為毫秒。
此參數沒有什么其他技巧。
ping命令的其他技巧:在一般情況下還可以通過ping對方讓對方返回給你的TTL值大小,粗略的判斷目標主機的系統類型是Windows系列還是UNIX/Linux系列,一般情況下Windows系列的系統返回的TTL值在100-130之間,而UNIX/Linux系列的系統返回的TTL值在240-255之間,當然TTL的值在對方的主機里是可以修改的,Windows系列的系統可以通過修改注冊表以下鍵值實現:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
“DefaultTTL”=dword:000000ff
255---FF
128---80
64----40
32----20
ping命令執行過程詳解
“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配置不正確。
-
WINDOWS
+關注
關注
4文章
3596瀏覽量
90677 -
ping命令
+關注
關注
0文章
4瀏覽量
2444
發布評論請先 登錄
相關推薦
巧用Ping和Traceroute命令排除網絡故障
windows XP cmd命令大全
三種不同的“防 Ping”技巧
ping命令的使用方法及功能

評論