分类: 系统运维
2007-07-12 20:01:03
“Ping”命令是我们在判断网络故障常用的命令,但您真正明白这个命令运行后会发生什么,以及出现的各种信息说明了什么吗?本人将平时工作中积累的经验介绍给大家。
“Ping”的幕后过程
我们以下面一个网络为例:有A、B、C、D四台机子,一台路由RA,子网掩码均为255.255.255.0,默认路由为192.168.0.1
1.在同一网段内
在主机A上运行“Ping 192.168.0.5”后,都发生了些什么呢? 首先,Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.0.5”一起交给IP层协议(和 ICMP一样,实际上是一组后台运行的进程),IP层协议将以地址“192.168.0.5”作为目的地址,本机IP地址作为源地址,加上一些其他的控制 信息,构建一个IP数据包,并想办法得到192.168.0.5的MAC地址(物理地址,这是数据链路层协议构建数据链路层的传输单元——帧所必需的), 以便交给数据链路层构建一个数据帧。关键就在这里,IP层协议通过机器B的IP地址和自己的子网掩码,发现它跟自己属同一网络,就直接在本网络内查找这台 机器的MAC,如果以前两机有过通信,在A机的ARP缓存表应该有B机IP与其MAC的映射关系,如果没有,就发一个ARP请求广播,得到B机的MAC, 一并交给数据链路层。后者构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问 规则,将它们传送出去。
主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交 给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A 发送ICMP请求包到主机B一模一样。
2.不在同一网段内
在主机A上运行“Ping 192.168.1.4”后,开始跟上面一样,到了怎样得到MAC地址时,IP协议通过计算发现D机与自己不在同一网段内,就直接将交由路由处理,也就是 将路由的MAC取过来,至于怎样得到路由的MAC,跟上面一样,先在ARP缓存表找,找不到就广播吧。路由得到这个数据帧后,再跟主机D进行联系,如果找 不到,就向主机A返回一个超时的信息。
对Ping后返回信息的分析
1.Request timed out
这是大家经常碰到的提示信息,很多文章中说这是对方机器置了过滤ICMP数据包,从上面工作过程来看,这是不完全正确的,至少有下几种情况。
(1) 对方已关机,或者网络上根本没有这个地址:比如在上图中主机A中PING 192.168.0.7 ,或者主机B关机了,在主机A中PING 192.168.0.5 都会得到超时的信息。
(2)对方与自己不在同一网段内,通过路由也无法找到对方,但有时对方确实是存在的,当然不存在也是返回超时的信息。
(3)对方确实存在,但设置了ICMP数据包过滤(比如防火墙设置)。
怎样知道对方是存在,还是不存在呢,可以用带参数 -a 的Ping命令探测对方,如果能得到对方的NETBIOS名称,则说明对方是存在的,是有防火墙设置,如果得不到,多半是对方不存在或关机,或不在同一网段内。
(4)错误设置IP地址
正常情况下,一台主机应该有一个网卡,一个IP地址,或多个网卡,多个IP地址(这些地址一定要处于不同的IP子网)。但如果一台电脑的“拨号网络适配 器”(相当于一块软网卡)的TCP/IP设置中,设置了一个与网卡IP地址处于同一子网的IP地址,这样,在IP层协议看来,这台主机就有两个不同的接口 处于同一网段内。当从这台主机Ping其他的机器时,会存在这样的问题:
A.主机不知道将数据包发到哪个网络接口,因为有两个网络接口都连接在同一网段。
B.主机不知道用哪个地址作为数据包的源地址。因此,从这台主机去Ping其他机器,IP层协议会无法处理,超时后,Ping 就会给出一个“超时无应答”的错误信息提示。但从其他主机Ping这台主机时,请求包从特定的网卡来,ICMP只须简单地将目的、源地址互换,并更改一些 标志即可,ICMP应答包能顺利发出,其他主机也就能成功Ping通这台机器了。
2.Destination host Unreachable
(1) 对方与自己不在同一网段内,而自己又未设置默认的路由,比如上例中A机中不设定默认的路由,运行Ping 192.168.0.1.4就会出现“Destination host Unreachable”。
(2)网线出了故障
这里要说明一下“destination host unreachable”和 “time out”的区别,如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其他原因不可到达,这时候会出现“time out”,如果路由表中连到达目标的路由都没有,那就会出现“destination host unreachable”。
3.Bad IP address
这个信息表示您可能没有连接到DNS服务器,所以无法解析这个IP地址,也可能是IP地址不存在。
4.Source quench received
这个信息比较特殊,它出现的机率很少。它表示对方或中途的服务器繁忙无法回应。
5.Unknown host——不知名主机
这种出错信息的意思是,该远程主机的名字不能被域名服务器(DNS)转换成IP地址。故障原因可能是域名服务器有故障,或者其名字不正确,或者网络管理员的系统与远程主机之间的通信线路有故障。
6.No answer——无响应
这种故障说明本地系统有一条通向中心主机的路由,但却接收不到它发给该中心主机的任何信息。故障原因可能是下列之一:中心主机没有工作;本地或中心主机网络配置不正确;本地或中心的路由器没有工作;通信线路有故障;中心主机存在路由选择问题。
7.Ping 127.0.0.1:127.0.0.1是本地循环地址
如果本地址无法Ping通,则表明本地机TCP/IP协议不能正常工作。
8.no rout to host:网卡工作不正常。
9.transmit failed,error code:10043网卡驱动不正常。
10.unknown host name:DNS配置不正确。
以上是我在“拼”(Ping)的过程中,得到一些经验技巧,希望能对大家的工作和学习有所帮助。(责任编辑:杨春晖)
当网络出现连接故障时,很多网管人员都会首先使用Ping来查找问题的根源。但是很多人只要发现Ping不通,那么就判断是网络出现了故障。这样只通过表面现象进行判断,很可能掩盖真相。那么我们在使用Ping命令过程中,到底注意哪些问题呢?还是请大家跟我来吧。
一、Request Timed Out
当Ping指定的对象时,出现“Request Timed Out”提示信息的频率非常高,这说明对方无法接受发送过来的数据。当然这种情况下,很可能就是网络出现了故障,但并不能就因此而确定网络一定不通。因为它还有可能是其它原因造成的。
主机不在线
如果对方关机、禁用网卡或者拨掉网线,那么无论你怎么操作,都不会有连通的信息返回的。要知道最简单的却往往是最容易被忽视的。
防火墙拦截
当安装了防火墙之后,当防火墙工作时,一般都能自动拦截来自网络的Ping命令,从而让其失去响应。同时安装防火墙后,还会造成共享文件无法访问的故障。因此在检查时应该先让对方关闭防火墙,然后再使用Ping命令来检测。
IP安全策略限制
对于很多有经验的网管人员来说,他们都在服务器上添加了IP安全策略,对ICMP报文进行过滤,使Ping命令无法回应,从而返回“Request Timed Out”的错误提示。
网关设置错误
这种情况主要出现在Ping外部网络地址时才出现。因为当网关设置错误时,Ping发出的数据包无法经网关进行转发。因此需要检查本机的网关设置以及远程网关的配置是否正确。
一般来说,只有在排除上述原因之外,才能够根据“Request Timed Out”初步判断网络连接可能有问题。
二、Destination Host Unreachable
出现“Destination Host Unreachable”错误信息时表示对方主机不存在或者没有跟对方建立连接。看起来好像与“Request Timed Out”差不多,但两者却有关本质的区别。如果Ping命令所发出的数据包经过路由器,并经路由表到达目标的路由,但是因为其它原因(例如防火墙拦截等) 导致不可达,那么就是“Request Timed Out”的提示了;相反如果路由表中没有到达目标的路由信息,那么就会出现“Destination Host Unreachable”。
出现这种情况主要有以下一些方面的原因:对于使用DHCP自动分配IP地址的网络,很可能是DHCP服务器出错或不能正常工作,这样客户机无法与 DHCP正常通讯并获得正确的IP地址,对此只需要修复DHCP服务器即可;另外则可能是子网掩码设置错误,对此只需要修改成正确的即可。
三、Unknown host
该提示表示无法识别的主机,出现这个问题之后是不是就表示目标主机一定有问题呢?当然不能!因为我们使用Ping命令去连接目标主机名称时,主要使用 DNS来负责将名称转换成IP地址。例如“Ping ”,我们看到的返回信息是“Reply from 220.181.28.42: bytes=32 time=59ms TTL=54”,而不是“Reply from : bytes=32 time=59ms TTL=54”,这就说明我们IP设置中的DNS服务器将成功转换为220.181.28.42。因此当我们看到这样的提示时,就 应该检查DNS设置是否正确、DNS工作是否正常。
透过表面的现象,看清真实的问题,只有这样才能够帮助我们找出故障的源头,从而对故障有正确的判断。(T002)
Windows系统中附带了许
多网络测试工具,只是它们均使用DOS命令方式,操作起来不太方便。而Megaping则是一款窗口化的多功能网络诊断工具,你可以在很短的时间内,把网
络故障查看得明明白白。Megaping主要包含了网络工具和网络与系统信息两部分,其中网络工具中包含了大多数网络实用测试工具,网络与系统信息部分可
以很详细地显示出当前系统中的共享资源等内容。
监视服务器
MegaPing有一个非常重要的功能,那就是服务器监视功能,利用该功能你可以即
时监视网络中的HTTP服务、FTP服务、DNS服务、SMTP服务、POP3服务、Telnet服务以及IMAP4服务等。如果在Windows
2000/XP环境下运行,它同时还具有重新启动或者关闭本地计算机和远程计算机的功能。单击左侧窗格中的“Host
Monitor”命令。在“Monitor
hosts”输入框中输入需要监视服务器的IP地址,然后单击“Start”按钮,MegaPing就会自动对指定的服务器进行监视了,同时会将结果显示
在下部的列表区域中。通过“Settings”、“Log”、“Alerts”选项卡页面,我们还能设置软件所监视的内容、监视后的记录处理以及声音警报
等内容。
Ping测试
MegaPing将网络测试使用最频繁的命令Ping功能也集成在其中了,你可以使
用该功能来检查路由是否能够到达。要是执行Ping不成功,则可以预测故障出现在以下几个方面:网线是否连通,网络适配器配置是否正确,IP地址是否可用
等;要是执行Ping成功而网络仍无法使用,那么问题很可能出在网络系统的软件配置方面,Ping成功只能保证当前主机与目的主机间存在一条连通的物理路
径。在使用Ping命令时,单击左侧窗格中的“Ping”命令。在“Destination Address
list”列表框中,你可以直接选择一个需要测试的网站地址或者输入一个IP地址,然后用鼠标单击该界面中的“Start”按钮,MegaPing会自动
对指定网站进行测试连接,同时将测试连接的结果显示在该界面下部的列表区域中。
端口扫描器
MegaPing内置了一个很实用的网络诊断工具,它就是Port
scanner端口扫描器。利用该功能,你可以对TCP端口扫描,也可以对UDP端口进行扫描,还能同时对这两种服务端口进行扫描。利用端口扫描器功能,
你不仅可以搜索其他网段内的网络服务,还能检查自己的网络服务器是否有多余的网络端口被打开。在进行端口扫描时,单击左侧窗格中的“Port
Scanner”命令。在这里可以直接在“Destination Address
List”列表框中选择一个需要扫描服务器的IP地址,然后再选择一种合适的扫描方式(如图1)。选择好扫描方式后,用鼠标单击该界面中的“Start”
按钮,MegaPing会自动对指定网段的端口和服务进行扫描,同时将扫描得到的结果显示在该界面下部的列表区域中。
共享扫描器
MegaPing软件提供共享扫描器功能。单击左侧窗格中的“Share Scanner”命令。输入IP地址后,单击“Start”按钮,MegaPing会自动对指定主机的共享服务进行扫描,同时将扫描得到的结果显示在该界面下部的列表区域中(如图2)。
IP扫描器
IP扫描器功能主要适用于对某一网段内的IP地址来进行扫描,然后在扫描过程中找到
哪些IP地址上有活动的服务主机。单击左侧窗格中的“IP
scanner”命令。输入起始IP地址和结束IP地址后,单击“Start”按钮,MegaPing会自动对指定网段的IP进行扫描,同时将扫描找到的
有活动的服务主机全部显示在该界面下部的列表区域中(如图3)。
查看网络与系统信息
单击左侧窗格中的“Network
Resources”命令,你会在随后出现的界面中,看到有四个标签选项,在其中的“Shares”选项卡中,你可以查看到本地计算机包含的共享资源,也
包括隐藏的共享资源。在“Sessions”选项卡中,你可以查看到连接到共享资源上的用户名、访问的具体共享文件的名称等。在“Files”选项卡中,
你可以了解到本地计算机中所有已经被远程主机打开的文件资源。在“Remote
Resources”选项卡中,你可以查看到已经建立了网络连接的远程计算机上的共享资源。
跟踪网络路由
MegaPing包含了Traceroute功能,要是网络连接出现了故障时,你可
以使用这个功能快速地诊断出到底是什么地方出了问题。在跟踪网络路由时,单击左侧窗格中的“Traceroute”命令。在“Destination
Address
list”列表框中,你可以直接输入一个需要诊断的网站地址或者输入一个IP地址,然后单击“Start”按钮,MegaPing会自动对指定网站进行诊
断连接。如果某个网关前面的圆圈是红色,那就说明这个网关出现了故障,绿色则表示正常(如图4)。在该界面中的“Traceroute
Settings”选项卡中,你可以设置Traceroute跟踪的最大路由器的数量、连接超时的时间间隔等内容。
对域名进行查询
在MegaPing主界面的左窗格中,单击左侧窗格中的“DNS Lookup
Name”命令,在随后打开的界面中,输入需要进行域名查询的IP地址,同时在“Query
Type”框中选择查询的类型,并单击“Start”按钮,MegaPing会自动地将对应这个IP地址的域名信息全部显示出来。
校准系统时间
MegaPing为你提供了时间同步器功能,单击左侧窗格中的“Network
Time”命令,这样MegaPing将会自动弹出一个时间校准界面。你可以在该界面中选择一个标准的时间服务器,然后单击
“Start”按钮,MegaPing会自动通过网络来精确地同步本地系统时钟。
MegaPing的性能表现非常优秀,它可以以各种方式扫描和诊断网络的连接与安全,并能提供详细的诊断信息,相信有了它的帮助,你再也不必为查询网络故障而头痛了!(T004)
解决网络问题的一个方法是使用pathping命令。这个命令工作起来就像是把ping和tracert这两个命令结合在一起了一样。
你要做的第一件事情是在命令行输入pathping,就像这样:pathping目标。这里的目标可以是一个主机名称也可以是一个IP地址,例如,pop3.catalog.com或者209.217.46.121。
接下来,你将得到一个分为两部分的报告。第一部分是通向目的地的线路上的每一个跳点的列表,第二部分是每一个跳点的统计,包括每一个跳点的数据包丢失的数量。它使用下面例子中显示的一些开关(switch),如:
pathping -n -w 1000 msn.com
这个命令告诉pathping不解析路由器的IP地址,并且为每一个回显应答信息等待1秒钟(1000毫秒)。
下面是一些最重要的pathping命令开关(switch):
n 不显示每一台路由器的主机名。
hvalue 设置跟踪到目的地的最大跳点数量,默认是30个跳点。
wvalue 设置等待应答的最多时间(按毫秒计算)。
p 设置在发出新的ping命令之前等待的时间(按毫秒计算),默认是250毫秒。
qvalue 设置ICMP回显请求信息发送的数量,默认是100。
实例:
当运行 pathping 时,在测试问题时首先查看路由的结果。此路径与 tracert 命令所显示的路径相同。然后 pathping 命令在下一个 125 秒内显示忙消息(此时间根据跃点计数变化)。在此期间,pathping 从以前列出的所有路由器以及它们之间的链接收集信息。在此期间结束时,它将显示测试结果。
最右边的两栏 This Node/Link Lost/Sent=Pct 和 Address 包含最有用的信息。172.16.87.218(跃点 1)和 192.68.52.1(跃点 2)之间的链接丢失 13% 的数据包。所有其他链接工作正常。跃点 2 和 4 中的路由器也丢失以其为目标的数据包(如 This Node/Link 栏中所示),但这种丢失不会影响转发的路径。
对链接显示的丢失率(在最右边的栏中标记为 |)表明沿路径转发的数据包的丢失情况。该丢失表明链接阻塞。对路由器显示的丢失率(通过最右边栏中的 IP 地址显示)表明那些路由器的 CPU 可能超负荷运行。这些阻塞的路由器可能也是端对端问题的一个因素,尤其是在软件路由器转发数据包时。