- 注册时间
- 2008-9-13
- 最后登录
- 1970-1-1
- 在线时间
- 0 小时
- 阅读权限
- 200
- 积分
- 0
- 帖子
- 24482
- 精华
- 4
- UID
- 9
  
|
对于Windows下ping命令相信大家已经再熟悉不过了,但是能把ping的功能发挥到最大的人却并不是很多,当然我也并不是说我可以让ping发挥最大的功能,我也只不过经常用ping这个工具,也总结了一些小经验,现在和大家分享一下。
! I. N9 B7 `& h7 m& [! D$ Z" Q6 @8 ^" @7 P
现在我就参照ping命令的帮助说明来给大家说说我使用ping时会用到的技巧,ping只有在安装了TCP/IP协议以后才可以使用:" |) Z5 e, s% W; I8 q6 X
# U$ `9 L4 w0 ? 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) w$ n( [; u+ l8 ?$ ~( a
7 M5 G( ]5 T; _$ W6 I/ X: X2 e c Options: ; ]7 |& O& k8 a% t9 B
-t Ping the specified host until stopped.To see statistics and continue - type Control-Break;To stop - type Control-C. R( M5 r5 U# ?& a/ ^$ r5 `
不停的ping地方主机,直到你按下Control-C。 ) l5 Y3 e L+ ^; R- F3 r3 r
此功能没有什么特别的技巧,不过可以配合其他参数使用,将在下面提到。 7 {& N5 ^) b2 F3 G' d( i2 p1 x
-a Resolve addresses to hostnames.
, m! q/ G- x- S2 @' Y
% H7 V5 I3 t0 Z6 k5 G3 K" j 解析计算机NetBios名。
2 t) ~4 q8 y, c. E" W$ m$ {4 O6 b% x: i7 w
示例:
7 x: u$ Y7 t8 @ ]5 r. k4 {, V7 t& Z! I% c0 T) d
C:\>ping -a 192.168.1.21+ v% ^: i0 s" W7 E
Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data:
' R, L4 B, P. a2 P9 s$ |" Z0 J. a% @ Reply from 192.168.1.21: bytes=32 time<10ms TTL=254 , q4 w: V4 a" W T
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
; i, B: G# o$ p" @ Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
' O$ Z3 a. h% v6 `+ T$ [ Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
( U! C) @8 T- L5 ]0 F! U Ping statistics for 192.168.1.21:
0 w6 K$ H; ]+ ~8 ? Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds: ; N: v* G* o6 v/ x- ^- D
Minimum = 0ms, Maximum = 0ms, Average = 0ms , @2 U* Q: N9 \# k {* K
从上面就可以知道IP为192.168.1.21的计算机NetBios名为iceblood.yofor.com。 ( u. [- Q0 J. i* s6 M3 S2 G
) z) ?1 G( W3 J* b( Z% z -n count Number of echo requests to send.
8 v5 a# [! i8 ~% p% l' I 发送count指定的Echo数据包数。 4 b- g9 J$ t; j' t0 t9 [
, b) x# Q5 F. i9 V& @- y
在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如我想测试发送50个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知:
; w: K% ~- Q7 E4 W8 e6 {
" p Y: q1 D" v C:\>ping -n 50 202.103.96.68 # \8 U% \( U- G& h8 F9 V4 b
Pinging 202.103.96.68 with 32 bytes of data:
; U/ Y( G( S( y+ X! B
U' U Q. Q/ k# y" K) y Reply from 202.103.96.68: bytes=32 time=50ms TTL=241 ( G/ M5 m7 ?: C) X7 X: l* |
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
8 H5 V+ _, j: H+ V Reply from 202.103.96.68: bytes=32 time=50ms TTL=241 7 y+ P/ ^! u' R1 O) I A
Request timed out.
. F3 o: i* Q7 H9 D ……………… % e* [& g# {2 k: h* F2 {
~9 j3 i3 h1 g8 \/ v: R4 h Reply from 202.103.96.68: bytes=32 time=50ms TTL=241 ! j/ O" T q/ L$ N7 M
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241 0 C& y- V0 q e0 Z! k
Ping statistics for 202.103.96.68: 8 r+ K1 y6 @. \* `8 @0 s
Packets: Sent = 50, Received = 48, Lost = 2 (4% loss),Approximate # Y3 W) y$ l3 W0 E
ound trip times in milli-seconds:
. \5 D5 M* W1 Q2 |* ~ Minimum = 40ms, Maximum = 51ms, Average = 46ms
5 C3 W* g! a: O' G0 v
. z+ p7 H5 C' Q; k6 h( b4 Q 从以上我就可以知道在给202.103.96.68发送50个数据包的过程当中,返回了48个,其中有两个由于未知原因丢失,这48个数据包当中返回速度最快为40ms,最慢为51ms,平均速度为46ms。
# I' {# \+ l* O, `- N; n+ } -l size Send buffer size. 定义echo数据包大小。 ' F: W* d- j' `6 g' _( M4 n
( d2 N( ~8 q6 b
在默认的情况下windows的ping发送的数据包大小为32byt,我们也可以自己定义它的大小,但有一个大小的限制,就是最大只能发送65500byt,也许有人会问为什么要限制到65500byt,因为Windows系列的系统都有一个安全漏洞(也许还包括其他系统)就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能当机,所以微软公司为了解决这一安全漏洞于是限制了ping的数据包大小。虽然微软公司已经做了此限制,但这个参数配合其他参数以后危害依然非常强大,比如我们就可以通过配合-t参数来实现一个带有攻击性的命令:(以下介绍带有危险性,仅用于试验,请勿轻易施于别人机器上,否则后果自负)3 U& S: b: X0 D$ d
9 [- M4 { G P) x1 z e% Q" A8 L
C:\>ping -l 65500 -t 192.168.1.21 * O, a. V. g' o
Pinging 192.168.1.21 with 65500 bytes of data: ; L; a. J' W/ [/ o- p4 A! y1 A
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254 : `" O: j& A$ _- n+ P
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
2 @' B! S3 [9 m! W* t3 E ………………, K6 \5 P- `! V" y' k
9 D+ t0 G! P; R7 `. t
这样它就会不停的向192.168.1.21计算机发送大小为65500byt的数据包,如果你只有一台计算机也许没有什么效果,但如果有很多计算机那么就可以使对方完全瘫痪,我曾经就做过这样的试验,当我同时使用10台以上计算机ping一台Win2000Pro系统的计算机时,不到5分钟对方的网络就已经完全瘫痪,网络严重堵塞,HTTP和FTP服务完全停止,由此可见威力非同小可。 " ^& T4 v: I7 ~# \: p
& O- D0 ^* q# |% b/ T
-f Set Don't Fragment flag in packet. 在数据包中发送“不要分段”标志。
8 I5 F" L$ k% Z) Z( C 在一般你所发送的数据包都会通过路由分段再发送给对方,加上此参数以后路由就不会再分段处理。 / V$ J6 x, E. N- H
-i TTL Time To Live. % v1 r) h I7 f k
指定TTL值在对方的系统里停留的时间。
4 k- L/ {4 l7 H: Y G) E7 C0 \* _ 此参数同样是帮助你检查网络运转情况的。 ; O: W- D. O8 ]7 A7 w
-v TOS Type Of Service. ( Q% Z5 s1 c% ^1 \0 X1 K e
将“服务类型”字段设置为 tos 指定的值。 % t( {4 ?$ a' y5 ~
-r count Record route for count hops.
) c. B7 O% x" L( h8 w 在“记录路由”字段中记录传出和返回数据包的路由。 " T+ [& [3 e6 ^ e- ~7 }
0 l5 k: f# V+ x# M% D; p/ }
在一般情况下你发送的数据包是通过一个个路由才到达对方的,但到底是经过了哪些路由呢?通过此参数就可以设定你想探测经过的路由的个数,不过限制在了9个,也就是说你只能跟踪到9个路由,如果想探测更多,可以通过其他命令实现,我将在以后的文章中给大家讲解。以下为示例:
: ~8 Q0 `$ v& x, i# Q$ u7 K! o C:\>ping -n 1 -r 9 202.96.105.101 (发送一个数据包,最多记录9个路由)
( c8 F: ?: ^: O' T/ J4 A& ~0 c/ J$ |& s
Pinging 202.96.105.101 with 32 bytes of data:
' }; L+ ]1 W$ h: o5 Q. f* o2 g. X, j Reply from 202.96.105.101: bytes=32 time=10ms TTL=249
& H+ K/ V/ ]( j" E ~ z Route: 202.107.208.187 -> , K3 J+ k2 ?) T4 F/ N
202.107.210.214 ->
5 V4 N% ^% [/ ?6 F# u 61.153.112.70 -> , _% B# _: \) O1 @: w3 S" l. R
61.153.112.89 -> & k: J! S1 O+ Z# ~2 I: C1 z
202.96.105.149 ->
2 D1 I4 J r* B" {; ], H4 }0 U 202.96.105.97 -> ; R" H& J. A q, K* O
202.96.105.101 -> F: z9 I1 g+ @, \6 }8 d5 e/ e
202.96.105.150 ->
# i2 a# `# v. T. s 61.153.112.90 " I+ @3 C+ y5 P f( C# a
1 m) p- v, n# R( t. j
Ping statistics for 202.96.105.101:
r/ i; L- c* }$ t* m+ f# \7 L Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
$ k# s0 p, @( u6 t3 B0 N! B4 N Approximate round trip times in milli-seconds: : s0 `" ]# K- S+ S# c& R
Minimum = 10ms, Maximum = 10ms, Average = 10ms 3 o/ J/ _3 k0 w7 u2 r) U+ s* i- L
3 [; k m+ t! Q1 `6 c# U6 w 从上面我就可以知道从我的计算机到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这几个路由。 , z* _9 P: \" a3 K3 h9 t3 h9 \' Q9 X
. S! [9 L2 h" T! f$ s8 G
-s count Timestamp for count hops.
) @" q% H7 C+ G* w* ?! O 指定 count 指定的跃点数的时间戳。
& D; H% [% S* E7 U. f# e 此参数和-r差不多,只是这个参数不记录数据包返回所经过的路由,最多也只记录4个。
6 F4 y( S7 ^1 a/ ]7 C -j host-list Loose source route along host-list. 2 r6 v" X- y& E9 d! _
利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。 n% G1 l+ L- e! e. e2 B
' O+ k1 [1 d6 y6 h) @ -k host-list Strict source route along host-list. / b8 @/ {; ^8 j: X/ _
利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。 - s6 W8 f% n+ M5 _
-w timeout Timeout in milliseconds to wait for each reply.
+ A) F7 H/ [8 f5 g 指定超时间隔,单位为毫秒。
. V* e% X u/ V1 w# x8 R 此参数没有什么其他技巧。 ( O) \2 w; \$ f# ^/ A* d" @
# H% u0 I4 `4 Y# k+ N7 C
ping命令的其他技巧:在一般情况下还可以通过ping对方让对方返回给你的TTL值大小,粗略的判断目标主机的系统类型是Windows系列还是UNIX/Linux系列,一般情况下Windows系列的系统返回的TTL值在100-130之间,而UNIX/Linux系列的系统返回的TTL值在240-255之间,当然TTL的值在对方的主机里是可以修改的,Windows系列的系统可以通过修改注册表以下键值实现:( ?* O4 l, A: y5 D/ ?# a- Q
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] " G9 q& |3 Y7 h, J- j% i4 d
"DefaultTTL"=dword:000000ff
2 x4 p! C; q$ d2 f. [ 255---FF M6 ]2 K5 [' p# N* ?
128---80 4 f1 F9 c5 A4 v0 W+ g3 N! X
64----40 - k' p/ I7 h+ D4 Q- j
32----20 |
|