LINUX下ping命令的使用祥解
ping是一个很常用的小工具,它主要用于确定网络的连通性问题使用ping命令后,常见的出错信息通常分为3种:
1、unknown host:不知名主机,该远程主机的名字不能被域名服务器DNS转换成IP地址,故障原因可能是域名服务器有故障,或者目标主机的名字不正确,或者网络管理员的系统与远程主机之间的通信线路有故障。
2、Destination Host Unreachable:此错误信息表明执行命令的计算机没能将信息发送到对方那里。大多数情况是自己一方的计算机LAN连接线掉线,或者由于IP设置不对,而无法进行正常通信。交通事故调解协议书
3、Request time out:表示在规定时间内因某种原因没有返回ping命令的应答,这种情况很可能是对方的计算机没有运行,或者中间线路不通致使信息没有到达对方那里。大多数情况下是企业防火墙等阻挡了ping命令中使用的ICMP信息。在这种情况下即便通信对象正在工作,也会有这种结果显示。(echo包顺利到达目的主机,且目的主机也向源主机返回echo-reply包,但是echo-reply包在半路上丢失,无法到达源主机。)
如何用ping命令查找无法上网的原因
1.Ping命令的语法格式:
有必要先给不了解Ping命令的人介绍一下Ping命令的具体语法格式:
ping目的地址[参数1J[参数2]……
其中目的地址是指被测试计算机的IP地址或域名主要参数有:
a:解析主机地址
c:数据:发出的测试包的个数,缺省值为无限ping
l:数值:所发送缓冲区的大小
TTL:Time To Live服务器会返回一个数值,然后每经过一个网络设备减1
以上面的结果为例
1.Reply from 61.135.179.166: bytes=10240 time=48ms TTL=50
10240的网络包用48毫秒完成了一次网络交互
TTL=50表示服务器的操作系统是Linux,中间经过了14个网络设备
2.Packets: Sent = 100, Received = 100, Lost = 0 (0% loss)
发送了100个包,接收到100个回应,丢包率0%(一般应该在5%以内)
3.Minimum = 48ms, Maximum = 50ms, Average = 48ms
最短交互时间48毫秒,最长50毫秒,平均48毫秒
平均时间如果跟最短很接近,表示速度比较均匀,偶尔时间长些
平均时间如果跟最长很接近,一般认为网络忙的可能性比较大了
推算速度画新年
网络速度≈包大小/交互时间 k字节/s
例如上面的结果,网络速度≈ 10240/48 = 213 k/s = 1704K BIT/s 速度很好,肯定比1M 的ADSL是达不到这个速度的
几个结果分析
网络速度不稳定
Minimum = 33ms, Maximum = 179ms, Average = 62ms
最短、最长、平均,三个时间很开,说明网络速度不稳定,波动很大
网络链接突然断开
Reply : bytes=990 time=11ms TTL=108
Reply : bytes=990 time=7ms TTL=108
Request timed out.
Reply : bytes=990 time=12ms TTL=108
Reply : bytes=990 time=10ms TTL=108
响应时间变化不大,突然出现一个超时,一般是中间某一个网络设备导致网络链接突然断开网络速度不稳定
Reply : bytes=990 time=182ms TTL=108
忙用英语怎么说Request timed out.
Reply : bytes=990 time=448ms TTL=108
Reply : bytes=990 time=61ms TTL=108
Request timed out.
Reply : bytes=990 time=8ms TTL=108
响应时间变化很大,时不时出现超时,一般是接触不良、网络设备处理不过来、网络繁忙等
在ping的结果基础上,可以用 tracert 或者 pathping 进一步分析网络问题出在哪个网络设备上。
2.键入Ping 192.192.225.225就可以了
Ping 192.192.225.225 with 32 byteS of dara:
Reply from 192.192.225.225:bytes=32 time<10ms TTL=128
Reply from 192.192.225.225:bytes=32 time<10ms TTL=128
Reply from 192.192.225.225:bytes=32 time<10ms TTL=128
Reply from 192.192.225.225:bytes=32 time<10ms TTL=128
Ping StatiStiCe for 192.192.225.225:
分离焦虑症的表现
PacketS:Sent=4,ReceiVed=4,LOSt=0 0%lOSS
Approximate round trip timeS in milli-condS:
Minimum=Oms,Maximum=1mS,Average=OmS
以上返回了4个测试数据包,其中bytes=32表示测试中发送的数据包大小是32个字节,“time<10ms表示与对方主机
往返一次所用的时间小于10毫秒,TTL=128表示当前测试使用的TTL Time to Live 值为128 系统默认值
如果网络有问题,则返回如下所示的响应失败信息:
Pinging 192.192.225.225 with 32 bytes of data
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping StatiStiCe for 192.192.225,225:
PacketS:Sent=4,ReceiVed=0,lost\=4 100%loss
Minimum‘0ms,Maximum=OmS,Average’0mS
网络故障:出现第二种情况时,建议从以上几个方面来着手排查:一是看被测试计算机是否已安装了TCP/IP协议:
二是检查一下被测试计算机的网卡安装是否正确且是否已经连通:三是看被测试计算机的TCP/IP协议是否与网F
有效的绑定具体方法是通过选择“开始一设置一控制面板一网络”来查看:如果通过以上几个步骤的检查还没有
发现问题的症结,建议重新安装并设置一,‘厂TCP/”协议,如果是TCP/IP协议的问题,这时绝对可以彻底解决
按照上述方法,我们还可以用Ping命令来检查任意一台客户湍计算机上TCP/IP的工作情况例如我们要检查网络任
一客户端“机房0厂上的TCP/IP协议的配置和工作情况,可直接在该台机器上Ping本机的
IP地址,若返回成功的信
息,说明IP地虹LB己置无误,若失败则应检查IP地址的配置?赏ü 韵虏街杞校菏紫认燃
觳橐弧げ氛鐾纾氐?nbsp;
看一下该IP地址是否正在被其他用户使用,然后再看一下该工作站是否已正确连入网络很多情况下用户没有登陆网
络也会出现此种情况,这可是低级错误啊最后检查网—E的I/0地址lIRQ值和DMA值,
这些值是否与其他设备发生
了冲突其中最后一项的检查非常重要,也常被许多用户所忽视,即使是Ping成功后也要进行此项的检查因为当Ping
本机的IP地址成功后,仅表明本机的IP地址配置没有问题,但并不能说明网卡的配置完全正确这时虽然在本机的
“网上邻居”中能够看到本机的计算机名,可就是无法与其他的用户连通,不知问题出在何处,其实问题往往就出在推销员英语
网卡上
简单来说,TTL全程Time to Live,意思就是生存周期
首先要说明ping命令是使用的网络层协议ICMP,所以TTL指的是一个网络层的网络数据包package 的生存周期,这句话不懂的先回去复习OSI7层协议去
第一个问题,为什么要有生存周期这个概念
很显然,一个package从一台机器到另一台机器中间需要经过很长的路径,显然这个路径不是单一的,是很复杂的,并且很可能存在环路如果一个数据包在传输过程中进入了环路,
如果不终止它的话,它会一直循环下去,如果很多个数据包都这样循环的话,那对于网络来说这就是灾难了所以需要在包中设置这样一个值,包在每经过一个节点,将这个值减1,
反复这样操作,最终可能造成2个结果:包在这个值还为正数的时候到达了目的地,或者是在经过一定数量的节点后,这个值减为了0 前者代表完成了一次正常的传输,后者代表包
可能选择了一条非常长的路径甚至是进入了环路,这显然不是我们期望的,所以在这个值为
0的时候,网络设备将不会再传递这个包而是直接将他抛弃,并发送一个通知给包的源地址,说这个包已死
其实TTL值这个东西本身并代表不了什么,对于使用者来说,关心的问题应该是包是否到达了目的地而不是经过了几个节点后到达但是TTL值还是可以得到有意思的信息的应季蔬菜
每个操作系统对TTL值得定义都不同,这个值甚至可以通过修改某些系统的网络参数来修改,例如Win2000默认为128,通过注册表也可以修改而Linux大多定义为64 不过一般来说,很少有人会去修改自己机器的这个值的,这就给了我们机会可以通过ping的回显TTL来大体判断一台机器是什么操作系统
以我公司2台机器为例
看如下命令
D:Documents and Settingshx>ping 61 152 93 131
Pinging 61 152 93 131 with 32 bytes of data:
Reply from 61 152 93 131: bytes=32 time=21ms TTL=118
Reply from 61 152 93 131: bytes=32 time=19ms TTL=118
Reply from 61 152 93 131: bytes=32 time=18ms TTL=118
Reply from 61 152 93 131: bytes=32 time=22ms TTL=118
Ping statistics for 61 152 93 131:
Packets: Sent = 4,Received = 4,Lost = 0 0% loss
Approximate round trip times in milli-conds:
Minimum = 18ms,Maximum = 22ms,Average = 20ms
D:Documents and Settingshx>ping 61 152 104 40
Pinging 61 152 104 40 with 32 bytes of data:
Reply from 61 152 104 40: bytes=32 time=28ms TTL=54
Reply from 61 152 104 40: bytes=32 time=18ms TTL=54
海参的滋补作用Reply from 61 152 104 40: bytes=32 time=18ms TTL=54
Reply from 61 152 104 40: bytes=32 time=13ms TTL=54
Ping statistics for 61 152 104 40:
Packets: Sent = 4,Received = 4,Lost = 0 0% loss
Approximate round trip times in milli-conds:
Minimum = 13ms,Maximum = 28ms,Average = 19ms
第一台TTL为118,则基本可以判断这是一台Windows机器,从我的机器到这台机器经过了10个节点,因为128-118=10 而第二台应该是台Linux,理由一样64-54=10
了解了上面的东西,可能有人会有一些疑问,例如以下:
1,不是说包可能走很多路径吗,为什么我看到的4个包TTL都是一样的,没有出现不同
hbte
这是由于包经过的路径是经过了一些最优选择算法来定下来的,在网络拓扑稳定一段时间后,包的路由路径也会相对稳定在一个最短路径上具体怎么算出来的要去研究路由算法了,不在讨论之列
2,对于上面例子第二台机器,为什么不认为它是经过了74个节点的Windows机器因为128-74=54
对于这个问题,我们要引入另外一个很好的ICMP协议工具不过首先要声明的是,一个包经过74个节点这个有些恐怖,这样的路径还是不用为好
要介绍的这个工具是tracert *nix下为traceroute ,让我们来看对上面的第二台机器用这个命令的结果
D:Documents and Settingshx>tracert 61 152 104 40
Tracing route to 61 152 104 40 over a maximum of 30 hops