Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1378250
  • 博文数量: 704
  • 博客积分: 10140
  • 博客等级: 上将
  • 技术积分: 6230
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-15 20:41
文章分类

全部博文(704)

文章存档

2013年(1)

2012年(16)

2011年(536)

2010年(151)

分类: LINUX

2011-04-24 16:15:21

Ping命令详解 精简实用

 

Ping是个使用频率极高的实用程序,只要是经常用电脑的认尤其是我们更应该了解这个,用了一会时间找了下资料,大致整理了下,ping用于确定本地主机是否能与另一台主机交换(发送与接收)数据报。根据返回的信息,我们就可以推断TCP/IP参数是否设置得正确以及运行是否正常。需要注意的是:成功地与另一台主机进行一次或两次数 据报交换并不表示TCP/IP配置就是正确的,我们必须执行大量的本地主机与远程主机的数据报交换,才能确信TCP/IP的正确性。

  简单的说,Ping就是一个测试程序,如果Ping运行正确,我们大体上就可以排除网络访问层、网卡、MODEM的输入输出线路、电缆和路由器等存在的故障,从而减小了问题的范围。但由于可以自定义所发数据报的大小及无休止的高速发送,Ping也被某些别有用心的人作为DDOS(拒绝服务攻击)的工具,例如许多大型的网站就是被黑客利用数百台可以高速接入互联网的电脑连续发送大量Ping数据报而瘫痪的。

按照缺省设置,Windows上运行的Ping命令发送4ICMP(网间控制报文协议)回送请求,每个32字节数据,如果一切正常,我们应能得到4个回送应答。 Ping能够以毫秒为单位显示发送回送请求到返回回送应答之间的时间量。如果应答时间短,表示数据报不必通过太多的路由器或网络连接速度比较快。Ping还能显示TTLTime To Live存在时间)值,我们可以通过TTL值推算一下数据包已经通过了多少个路由器:源地点TTL起始值(就是比返回TTL略大的一个2的乘方数)-返回时TTL值。例如,返回TTL值为119,那么可以推算数据报离开源地址的TTL起始值为128,而源地点到目标地点要通过9个路由器网段(128-119);如果返回TTL值为246TTL起始值就是256,源地点到目标地点要通过9个路由器网段。

 

ping命令详解

                                      

Ping是用来进行网络连接测试的一个程序,其对应的文件名为“Ping.exe”(在Windows XP系统下该文件存在于 C:\Windows\System32文件夹下)。该工具的最简单的用法是: “Ping XXX.XXX.XXX.XXX”(XXX.XXX.XXX.XXX为欲测试的IP地址),根据不同的测试目的可以带上不同的参数。

Ping成功结果和失败结果的意思。

一、“Ping”成功的结果分析

例如输入“Ping 61.139.2.69,显示如下信息:

           

Pinging 61.139.2.69 with 32 bytes of data:           

Reply from 61.139.2.69: bytes=32 time=49ms TTL=250

Reply from 61.139.2.69: bytes=32 time=54ms TTL=250

Reply from 61.139.2.69: bytes=32 time=54ms TTL=250

Reply from 61.139.2.69: bytes=32 time=54ms TTL=250

Ping statistics for 61.139.2.69:

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

Approximate round trip times in milli-seconds:

Minimum = 43ms, Maximum = 44ms, Average = 43ms

 

上述结果的意思为:Ping命令用32字节(这是Windows默认发送的数据包大小,如要改变,则应该在后面加上 “-L 数据包大小”,如“Ping 61.139.2.69 -l 5000表示要测试的数据包大小为5000字节)的数据包来测试能否连接到IP地址为“61.139.2.69的主机;下面的四行“Reply from”表示本地主机已收到从被测试的机器上返回的信息——返回32个字节用了4954毫秒,TTL250

 

友情提示:TTL((Time to  Live)的意思是存在时间值,通过该值可以算出数据包经过了多少个路由器,方法是:用255减去返回的TTL.,例如本例中返回250,则应该用255来减去250,得到5

再下面的“Ping statistics”则表示发送了(sent4个数据包(这是系统的缺省值,如要指定发送数据包的次数,则在后面加上“-n 次数”,如“Ping 61.139.2.69 n 20表示传送20次;如果希望一直Ping下去,则要在后面加上参数“-t”,此时要中断则需要按Ctrl+C),收到了(Receieved4个,共丢失了(Lost0个(即没有丢失),发送时间最小为49毫秒,最大54毫秒,平均时间为52毫秒。

二、Ping助你分析网络

1.测试本机网卡是否工作正常

输入“Ping 127.0.0.1应该可以出现类似于上例的提示,如果出现的是四行“Request timeout”的提示,则说明网卡工作不正常,或者是本机的网络设置有问题。

2.检验网关配置

Ping域外主机IP的方法可以检验网关的配置是否正确,通过查看从网络内主机向域外主机发送IP包能否送出来判断结果。如出现4行“Request timeout”的提示说明网关设置有错,网关配置正确则会返回传输时间和TTL等信息。

如果上网浏览网页总是收到“找不到该页”或者“该页无法显示”等提示信息,一般应检查DNS是否有问题,一则可以测试DNS服务器是否能够“Ping”通,另外还要测试DNS设置是否有错误。

3.测试DNS服务器是否能够Ping

在命令行窗口中输入“Ping DNS服务器IP地址”,如果成功表明DNS服务器工作正常。例如“Ping 61.139.2.69(这是笔者所在地的一台DNS服务器的地址)如果返回测试时间和TTL值等信息就表明正常,如果出现“Request timeout”错误,那很明显在浏览器中输入域名将不能访问网站。

 4.测试DNS服务器配置是否正确

我们可以用Ping任一域名的方法来查看DNS服务器配置是否正确,如果可以将该域名解析成一个IP地址并返回测试信息说明配置无误,如出现“unknown Host Name”的提示,则说明DNS配置出错。

 

友情提示:①返回这个信息也可能是对方的主机有问题。②另一种检验方法是:直接在浏览器地址栏中输入网站服务器的IP地址,若可以连接说明网络通畅,但输入域名时不能连接就证明是DNS服务器设置不对或者是服务器出了问题。

 

5.测试某主机域名所对应的IP

在收发电子邮件时一般会先解析域名为IP然后再连接,如果想加快收发速度,可以先将邮件服务器的域名转换为IP然后保存在本机上,例如:要测试21cn.com的邮件发送服务器的IP,则输入“Ping smtp.21cn.com”,会得到其IP地址为“202.104.32.230,将此地址填写到邮件客户端软件的服务器设置中,如在Foxmail中,则在账户属性中的邮件服务器中填入。

三、看懂出错提示信息

1No Answer:这种故障表明本机有一条通向中心主机的路由,但没有收到发给该中心主机的任何信息。原因可能是:中心主机没有工作、本机或中心主机网络配置不正确、本地或中心的路由器没有工作、通信线路有故障、中心主机存在路由选择问题,等等。

2Request Timed Out:超时错误,被测试的机器不能正常连接,原因可能是该主机此时未连接(如已关机)、或到路由器的连接有问题、或路由器不能通过,或对方主机使用了防火墙软件禁止进行Ping测试等等。

3Unknown Host Name:无法解析主机名字,可能是DNS设置不对,或者对方主机不存在。 

四、ping命令参数

参照ping命令的帮助说明ping时会用到的技巧,ping只有在安装了TCP/IP

协议以后才可以使用:

ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j

computer-list] | [-k computer-list]] [-wz timeout] destination-list

Options:

-t Ping the specified host until stopped.To see statistics and continue - type Control-

Break;To stop - type Control-C.

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

此功能没有什么特别的技巧,不过可以配合其他参数使用,将在下面提到。

 

 

-a Resolve addresses to hostnames.

解析计算机NetBios名。

示例:C:>ping -a 192.168.1.21

Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data:

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

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

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

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

Ping statistics for 192.168.1.21:

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

seconds:

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

从上面就可以知道IP192.168.1.21的计算机NetBios名为iceblood.yofor.com

 

-n count Number of echo requests to send.

发送count指定的Echo数据包数。

在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如我想测试发送50个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知:

C:>ping -n 50 202.103.96.68

Pinging 202.103.96.68 with 32 bytes of data:

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

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

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

Request timed out.

………………

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

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

Ping statistics for 202.103.96.68:

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

milli-seconds:

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

从以上我就可以知道在给202.103.96.68发送50个数据包的过程当中,返回了48个,其中有两个由于未知原因丢失,这48个数据包当中返回速度最快为40ms,最慢为51ms,平均速度为46ms

 

 

-l size Send buffer size.

定义echo数据包大小。

在默认的情况下windowsping发送的数据包大小为32byt,我们也可以自己定义它的大小,但有一个大小的限制,就是最大只能发送65500byt,也许有人会问为什么要限制到65500byt,因为Windows系列的系统都有一个安全漏洞(也许还包括其他系统)就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能挡机,所以减速机:微软公司为了解决这一安全漏洞于是限制了ping的数据包大小。虽然微软公司已经做了此限制,但这个参数配合其他参数以后危害依然非常强大,比如我们就可以通过配合-t参数来实现一个带有攻击性的命令:(以下介绍带有危险性,仅用于试验,请勿轻易施于别人机器上,否则后果自负)

C:>ping -l 65500 -t 192.168.1.21

Pinging 192.168.1.21 with 65500 bytes of data:

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

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

………………

这样它就会不停的向192.168.1.21计算机发送大小为65500byt的数据包,如果你只有一台计算机也许没有什么效果,但如果有很多计算机那么就可以使对方完全瘫痪,我曾经就做过这样的试验,当我同时使用10台以上计算机ping一台Win2000Pro系统的计算机时,不到5分钟对方的网络就已经完全瘫痪,网络严重堵塞,HTTPFTP服务完全停止,由此可见威力非同小可。

 

-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 202.96.105.101 (发送一个数据包,最多记录9个路由)

 

Pinging 202.96.105.101 with 32 bytes of data:

 

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

Route: 202.107.208.187 ->

202.107.210.214 ->

61.153.112.70 ->

61.153.112.89 ->

202.96.105.149 ->

202.96.105.97 ->

202.96.105.101 ->

202.96.105.150 ->

61.153.112.90

 

Ping statistics for 202.96.105.101:

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

Approximate round trip times in milli-seconds:

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

从上面我就可以知道从我的计算机到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这几个路由。

-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

五、通过Ping检测网络故障的典型次序

  正常情况下,当我们使用Ping命令来查找问题所在或检验网络运行情况时,我们需要使用许多Ping命令,如果所有都运行正确,我们就可以相信基本的连通性和配置参数没有问题;如果某些Ping命令出现运行故障,它也可以指明到何处去查找问题。下面就给出一个典型的检测次序及对应的可能故障:

  ·ping 127.0.0.1

  这个Ping命令被送到本地计算机的IP软件,该命令永不退出该计算机。如果没有做到这一点,就表示TCP/IP的安装或运行存在某些最基本的问题。

  ·ping 本机IP

  这个命令被送到我们计算机所配置的IP地址,我们的计算机始终都应该对该Ping命令作出应答,如果没有,则表示本地配置或安装存在问题。出现此问题时,局域网用户请断开网络电缆,然后重新发送该命令。如果网线断开后本命令正确,则表示另一台计算机可能配置了相同的IP地址。

  ·ping 局域网内其他IP

  这个命令应该离开我们的计算机,经过网卡及网络电缆到达其他计算机,再返回。收到回送应答表明本地网络中的网卡和载体运行正确。但如果收到0个回送应答,那么表示子网掩码(进行子网分割时,将IP地址的网络部分与主机部分分开的代码)不正确或网卡配置错误或电缆系统有问题。

  ·ping 网关IP

  这个命令如果应答正确,表示局域网中的网关路由器正在运行并能够作出应答。

  ·ping 远程IP

  如果收到4个应答,表示成功的使用了缺省网关。对于拨号上网用户则表示能够成功的访问Internet(但不排除ISPDNS会有问题)。

  ·ping localhost

  localhost是个作系统的网络保留名,它是127.0.0.1的别名,每太计算机都应该能够将该名字转换成该地址。如果没有做到这一带内,则表示主机文件(/Windows/host)中存在问题。

  ·ping (如天极网)

  对这个域名执行Ping  地址,通常是通过DNS 服务器 如果这里出现故障,则表示DNS服务器的IP地址配置不正确或DNS服务器有故障(对于拨号上网用户,某些ISP已经不需要设置DNS服务器了)。顺便说一句:我们也可以利用该命令实现域名对IP地址的转换功能。

  如果上面所列出的所有Ping命令都能正常运行,那么我们对自己的计算机进行本地和远程通信的功能基本上就可以放心了。但是,这些命令的成功并不表示我们所有的网络配置都没有问题,例如,某些子网掩码错误就可能无法用这些方法检测到。

2Ping命令的常用参数选项

  ·ping IP t

  连续对IP地址执行Ping命令,直到被用户以Ctrl+C中断。

  ·ping IP -l 3000

  指定Ping命令中的数据长度为3000字节,而不是缺省的32字节。

  ·ping IP n

  执行特定次数的Ping命令。

 

阅读(1759) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~