给个妞泡泡

非洲旅行團中尉

钻石会员

完美&路人

贴子 4958

精华 0

积分 0

信用 100

竞猜 1000

魅力 1000

威望 0

现金 243812 CZB

银行 8200000 CZB

黄金 0

比特币 0

注册时间 2024-06-14

发表于:2007-06-24 14:06:18   |  显示全部帖子   |  本帖随机奖励楼主:0 CZB   |  转账至  给个妞泡泡

ping的几个常见用法

用了这么久的ping命令,这是我第一次把相关的经验总结写出来,希望大家喜欢。

先来说说ping的工作原理:
ping的过程实际上就是一个发送ICMP echo请求的过程,发送该数据包到被ping 的一方,要求对方响应并回答该数据包,对方收到后,当然就老老实实地答复你了,也许大家奇怪,为什么从ping的结果中会得到IP地址,这是因为,对方做出的ICMP响应并不能简单地用ICMP进行封包就进行传输,而是要经过IP协议进行封装并传输的,学过TCP/IP的人都知道,在IP协议对数据包进行封装的时候,会自动将目的地址和源地址写进包头,这样一来,在回应的信息中我们就可以看到对方的IP地址了 。
一个ping的返回结果:
C:\>ping python

Pinging python [192.168.0.2] with 32 bytes of data:

Reply from 192.168.0.2: bytes=32 time<10ms TTL=255
Reply from 192.168.0.2: bytes=32 time<10ms TTL=255
Reply from 192.168.0.2: bytes=32 time<10ms TTL=255
Reply from 192.168.0.2: bytes=32 time<10ms TTL=255

Ping statistics for 192.168.0.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms


从上面这个结果中我们除了获得IP地址,还可以获得TTL(Time to Life,生命周期),TTL是每经过一个路由器就会被减一的一个值,通过TTL的值我们可以简单地判断对方的操作系统和经过的路由器的个数。
默认情况下TTL=128为windows,而TTL=255为UNIX

接下来看一下ping的几个参数(这里针对几个比较有用的讲一讲):


Options:
-t 加上该参数,就是不断地ping对方,直到按ctrl+c结束
-a 这个参数是解析主机名到IP地址,如下例:

C:\>ping -a 192.168.0.2 -n 1

Pinging python [192.168.0.2] with 32 bytes of data:

Reply from 192.168.0.2: bytes=32 time<10ms TTL=255

Ping statistics for 192.168.0.2:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

注意看这一行“Pinging python [192.168.0.2] with 32 bytes of data:”得到主机名python
注意:这个参数只有在局域网内才起作用的

-n count 这个参数可以定制数据echo请求数据包的发送个数,例如上面,我使用-n 1

-l size 该参数定制发送数据包的大小,windows中最大为65500,命令格式:ping ip -l 65500
默认发送的数据包大小为32bytes

-f 在网络上传输数据的时候,当数据包的大小超过网络的允许大小的时候,就要进行分段, 然而,该参数的作用就是不允许发送的数据包分段。建议不要使用这个,因为,如果不了 解网络对数据包大小的要求的话,设置该位可能会导致数据无法传输,下面两个结果大家 可以比较一下:
例1:
C:\>ping 192.168.0.1 -l 64 -n 1 -f

Pinging 192.168.0.1 with 64 bytes of data:

Reply from 192.168.0.1: bytes=64 time<10ms TTL=128

Ping statistics for 192.168.0.1:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

例2:
C:\>ping 192.168.0.1 -l 1500 -n 1 -f

Pinging 192.168.0.1 with 1500 bytes of data:

Packet needs to be fragmented but DF set.(这句话的意思就是,网络要求分段,而该数据中的分段位又被 设置为不允许分段,这就导致数据无法传送)

Ping statistics for 192.168.0.1:
Packets: Sent = 1, Received = 0, Lost = 1 (100% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
大家有兴趣可以试试,这样多试几次可以试出在你的网络中数据包每段大概被分为多大(不过很辛苦哦)。

-i TTL 这是用来设置生命周期(TTL)的,没什么好说的吧,如果不懂的再问吧

-v TOS 设置TOS(服务类型)的,对此不多阐述,因为关于TOS虽然见的不多,但是,其实是有很 多东西值得讲的,如果多说就说不完了,而且也不好叙述,所以大家看一下相关书籍了解 一下,关于这方面有不懂的再提问吧。

-r count 这个参数很有意思,有点类似tracert了,作用就是记录经过的路由器,拿个例子来:

C:\>ping 192.168.0.1 -r 1 -n 1

Pinging 192.168.0.1 with 32 bytes of data:

Reply from 192.168.0.1: bytes=32 time<10ms TTL=128
Route: 192.168.0.1

Ping statistics for 192.168.0.1:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

注意这一行“Route: 192.168.0.1”这就是经过的路由器,因为我这里只有两台计算机,没有路由器,所以记录下来的就是默认路由了(也就是被ping主机本身)。大家可以这样做:ping www.sina.com.cn -r 9
会记录经过的9部路由器的地址哦 ……

注意:-r参数后面的值最小为1,最大为9,也就是说,最多只能记录9台(这就不如tracert命令了)。


-w timeout 这个就是用来设置超时的。

C:\>ping 192.168.0.1 -w 1 -n 1

Pinging 192.168.0.1 with 32 bytes of data:

Reply from 192.168.0.1: bytes=32 time<10ms TTL=128

Ping statistics for 192.168.0.1:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

这个没有什么好说的吧,如果感觉线路不怎么样,传输速度比较慢,那么,把这个值设置得大一些。
注意:该值后面的timeout的单位是毫秒(ms)


好,胡乱讲了一下,不知道大家看懂没有,没看懂或是有意见有问题的再提吧。
如果大家感觉好的话,就叫个好,让我们知道,这样我们以后就会陆续推出类似的帖子,多谢。
ping的几个常见用法
ping的几个常见用法:


用了这么久的ping命令,这是我第一次把相关的经验总结写出来,希望大家喜欢。

先来说说ping的工作原理:
ping的过程实际上就是一个发送ICMP echo请求的过程,发送该数据包到被ping 的一方,要求对方响应并回答该数据包,对方收到后,当然就老老实实地答复你了,也许大家奇怪,为什么从ping的结果中会得到IP地址,这是因为,对方做出的ICMP响应并不能简单地用ICMP进行封包就进行传输,而是要经过IP协议进行封装并传输的,学过TCP/IP的人都知道,在IP协议对数据包进行封装的时候,会自动将目的地址和源地址写进包头,这样一来,在回应的信息中我们就可以看到对方的IP地址了 。
一个ping的返回结果:
C:\>ping python

Pinging python [192.168.0.2] with 32 bytes of data:

Reply from 192.168.0.2: bytes=32 time<10ms TTL=255
Reply from 192.168.0.2: bytes=32 time<10ms TTL=255
Reply from 192.168.0.2: bytes=32 time<10ms TTL=255
Reply from 192.168.0.2: bytes=32 time<10ms TTL=255

Ping statistics for 192.168.0.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms


从上面这个结果中我们除了获得IP地址,还可以获得TTL(Time to Life,生命周期),TTL是每经过一个路由器就会被减一的一个值,通过TTL的值我们可以简单地判断对方的操作系统和经过的路由器的个数。
默认情况下TTL=128为windows,而TTL=255为UNIX

接下来看一下ping的几个参数(这里针对几个比较有用的讲一讲):


Options:
-t 加上该参数,就是不断地ping对方,直到按ctrl+c结束
-a 这个参数是解析主机名到IP地址,如下例:

C:\>ping -a 192.168.0.2 -n 1

Pinging python [192.168.0.2] with 32 bytes of data:

Reply from 192.168.0.2: bytes=32 time<10ms TTL=255

Ping statistics for 192.168.0.2:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

注意看这一行“Pinging python [192.168.0.2] with 32 bytes of data:”得到主机名python
注意:这个参数只有在局域网内才起作用的

-n count 这个参数可以定制数据echo请求数据包的发送个数,例如上面,我使用-n 1

-l size 该参数定制发送数据包的大小,windows中最大为65500,命令格式:ping ip -l 65500
默认发送的数据包大小为32bytes

-f 在网络上传输数据的时候,当数据包的大小超过网络的允许大小的时候,就要进行分段, 然而,该参数的作用就是不允许发送的数据包分段。建议不要使用这个,因为,如果不了 解网络对数据包大小的要求的话,设置该位可能会导致数据无法传输,下面两个结果大家 可以比较一下:
例1:
C:\>ping 192.168.0.1 -l 64 -n 1 -f

Pinging 192.168.0.1 with 64 bytes of data:

Reply from 192.168.0.1: bytes=64 time<10ms TTL=128

Ping statistics for 192.168.0.1:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

例2:
C:\>ping 192.168.0.1 -l 1500 -n 1 -f

Pinging 192.168.0.1 with 1500 bytes of data:

Packet needs to be fragmented but DF set.(这句话的意思就是,网络要求分段,而该数据中的分段位又被 设置为不允许分段,这就导致数据无法传送)

Ping statistics for 192.168.0.1:
Packets: Sent = 1, Received = 0, Lost = 1 (100% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
大家有兴趣可以试试,这样多试几次可以试出在你的网络中数据包每段大概被分为多大(不过很辛苦哦)。

-i TTL 这是用来设置生命周期(TTL)的,没什么好说的吧,如果不懂的再问吧

-v TOS 设置TOS(服务类型)的,对此不多阐述,因为关于TOS虽然见的不多,但是,其实是有很 多东西值得讲的,如果多说就说不完了,而且也不好叙述,所以大家看一下相关书籍了解 一下,关于这方面有不懂的再提问吧。

-r count 这个参数很有意思,有点类似tracert了,作用就是记录经过的路由器,拿个例子来:

C:\>ping 192.168.0.1 -r 1 -n 1

Pinging 192.168.0.1 with 32 bytes of data:

Reply from 192.168.0.1: bytes=32 time<10ms TTL=128
Route: 192.168.0.1

Ping statistics for 192.168.0.1:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

注意这一行“Route: 192.168.0.1”这就是经过的路由器,因为我这里只有两台计算机,没有路由器,所以记录下来的就是默认路由了(也就是被ping主机本身)。大家可以这样做:ping www.sina.com.cn -r 9
会记录经过的9部路由器的地址哦 ……

注意:-r参数后面的值最小为1,最大为9,也就是说,最多只能记录9台(这就不如tracert命令了)。


-w timeout 这个就是用来设置超时的。

C:\>ping 192.168.0.1 -w 1 -n 1

Pinging 192.168.0.1 with 32 bytes of data:

Reply from 192.168.0.1: bytes=32 time<10ms TTL=128

Ping statistics for 192.168.0.1:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

这个没有什么好说的吧,如果感觉线路不怎么样,传输速度比较慢,那么,把这个值设置得大一些。
注意:该值后面的timeout的单位是毫秒(ms)
逝去的年华
楼主
编辑   |    引用    回帖
关闭    高亮    置顶   |    移动    回收站   |    -6删主题    删主题    |