免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2429 | 回复: 1
打印 上一主题 下一主题

Ping命令详解 精简实用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-13 20:58 |只看该作者 |倒序浏览
Ping命令详解 精简实用














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

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

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

  ping命令详解

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

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

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

  例如输入“Ping61.139.2.69”,显示如下信息:

  Pinging61.139.2.69with32bytesofdata:

  Replyfrom61.139.2.69:bytes=32time=49msTTL=250

  Replyfrom61.139.2.69:bytes=32time=54msTTL=250

  Replyfrom61.139.2.69:bytes=32time=54msTTL=250

  Replyfrom61.139.2.69:bytes=32time=54msTTL=250

  Pingstatisticsfor61.139.2.69:

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

  Approximateroundtriptimesinmilli-seconds:

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

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

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

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

  二、Ping助你分析网络

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

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

  2.检验网关配置

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

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

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

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

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

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

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

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

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

  三、看懂出错提示信息

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

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

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

  四、ping命令参数

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

  协议以后才可以使用:

  ping[-t][-a][-ncount][-llength][-f][-ittl][-vtos][-rcount][-scount][[-j

  computer-list]|[-kcomputer-list]][-wztimeout]destination-list

  Options:

  -tPingthespecifiedhostuntilstopped.Toseestatisticsandcontinue-typeControl-

  Break;Tostop-typeControl-C.

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

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

  -aResolveaddressestohostnames.

  解析计算机NetBios名。

  示例:C:\>ping-a192.168.1.21

  Pingingiceblood.yofor.com[192.168.1.21]with32bytesofdata:

  Replyfrom192.168.1.21:bytes=32timeping-n50202.103.96.68

  Pinging202.103.96.68with32bytesofdata:

  Replyfrom202.103.96.68:bytes=32time=50msTTL=241

  Replyfrom202.103.96.68:bytes=32time=50msTTL=241

  Replyfrom202.103.96.68:bytes=32time=50msTTL=241

  Requesttimedout.

  ………………

  Replyfrom202.103.96.68:bytes=32time=50msTTL=241

  Replyfrom202.103.96.68:bytes=32time=50msTTL=241

  Pingstatisticsfor202.103.96.68:

  Packets:Sent=50,Received=48,Lost=2(4%loss),Approximateroundtriptimesin

  milli-seconds:

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

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

  -lsizeSendbuffersize.

  定义echo数据包大小。

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

  C:\>ping-l65500-t192.168.1.21

  Pinging192.168.1.21with65500bytesofdata:

  Replyfrom192.168.1.21:bytes=65500timeping-n1-r9202.96.105.101(发送一个数据包,最多记录9个路由)

  Pinging202.96.105.101with32bytesofdata:

  Replyfrom202.96.105.101:bytes=32time=10msTTL=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

  Pingstatisticsfor202.96.105.101:

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

  Approximateroundtriptimesinmilli-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这几个路由。

  -scountTimestampforcounthops.

  指定count指定的跃点数的时间戳。

  此参数和-r差不多,只是这个参数不记录数据包返回所经过的路由,最多也只记录4个。

  -jhost-listLoosesourceroutealonghost-list.

  利用computer-list指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP

  允许的最大数量为9。

  -khost-listStrictsourceroutealonghost-list.

  利用computer-list指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP

  允许的最大数量为9。

  -wtimeoutTimeoutinmillisecondstowaitforeachreply.

  指定超时间隔,单位为毫秒。

  此参数没有什么其他技巧。

  ping命令的其他技巧:在一般情况下还可以通过ping对方让对方返回给你的TTL值大小,粗略的判断目标主机的系统类型是Windows系列还是UNIX/Linux系列,一般情况下Windows系列的系统返回的TTL值在100-130之间,而UNIX/Linux系列的系统返回的TTL值在240-255之间,当然TTL的值在对方的主机里是可以修改的,Windows系列的系统可以通过修改注册表以下键值实现:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]

  "DefaultTTL"=dword:000000ff

  255---FF

  128---80

  64----40

  32----20

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

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

  ·ping127.0.0.1

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

  ·ping本机IP

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

  ·ping局域网内其他IP

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

  ·ping网关IP

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

  ·ping远程IP

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

  ·pinglocalhost

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

  ·pingwww.xxx.com

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

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

  2、Ping命令的常用参数选项

  ·pingIP–t

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

  ·pingIP-l3000

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

  ·pingIP–n

  执行特定次数的Ping命令。

论坛徽章:
0
2 [报告]
发表于 2011-12-21 22:33 |只看该作者
谢谢分享 楼主辛苦
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP