注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风雨启示录

欢迎光临我的网店优优我心:http://uumyheart.taobao.com

 
 
 

日志

 
 

ping的用法详解  

2008-07-31 19:30:42|  分类: 解决方案 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
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 http://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)

  评论这张
 
阅读(471)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017