當前位置:才華齋>網路>網路診斷>

ping命令的使用方法

網路診斷 閱讀(2.29W)

ping命令相信大家已經再熟悉不過了,但是能把ping的功能發揮到最大的人卻並不是很多,當然我也並不是說我可以讓ping發揮最大的功能,小編也只不過經常用ping這個工具,也總結了一些小經驗,現在和大家分享一下。

ping命令的使用方法

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 see statistics and continue - type Control-Break;To stop - type Control-C.

不停的ping地方主機,直到你按下Control-C。

此功能沒有什麼特別的技巧,不過可以配合其他引數使用,將在下面提到。

-a Resolve addresses to hostnames.

解析計算機NetBios名。

示例:C:>ping -a

Pinging [] with 32 bytes of data:

Reply from : bytes=32 time<10ms TTL=254

Reply from : bytes=32 time<10ms TTL=254

Reply from : bytes=32 time<10ms TTL=254

Reply from : bytes=32 time<10ms TTL=254

Ping statistics for :

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip Times in milli-seconds:

Minimum = 0ms, Maximum = 0ms, Average = 0ms

從上面就可以知道IP為的計算機NetBios名為。

-n count Number of echo requests to send.

傳送count指定的Echo資料包數。

在預設情況下,一般都只發送四個資料包,通過這個命令可以自己定義傳送的個數,對衡量網路速度很有幫助,比如我想測試傳送50個數據包的返回的平均時間為多少,最快時間為多少,最慢時間為多少就可以通過以下獲知:

C:>ping -n 50

Pinging with 32 bytes of data:

Reply from : bytes=32 time=50ms TTL=241

Reply from : bytes=32 time=50ms TTL=241

Reply from : bytes=32 time=50ms TTL=241

Request timed out.

………………

Reply from : bytes=32 time=50ms TTL=241

Reply from : bytes=32 time=50ms TTL=241

Ping statistics for :

Packets: Sent = 50, Received = 48, Lost = 2 (4% loss),Approximate round trip times in milli-seconds:

Minimum = 40ms, Maximum = 51ms, Average = 46ms

從以上我就可以知道在給傳送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

Pinging with 65500 bytes of data:

Reply from : bytes=65500 time<10ms TTL=254

Reply from : bytes=65500 time<10ms TTL=254

………………

這樣它就會不停的'向計算機發送大小為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 (傳送一個數據包,最多記錄9個路由)

Pinging with 32 bytes of data:

Reply from : bytes=32 time=10ms TTL=249

Route: ->

->

->

->

->

->

->

->

Ping statistics for :

Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 10ms, Maximum = 10ms, Average = 10ms

從上面可以知道從本地計算機到一共通過了 , , , , , 這幾個路由。

-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_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]

"DefaultTTL"=dword:000000ff

255---FF

128---80

64----40

32----20