Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19730549
  • 博文数量: 679
  • 博客积分: 10495
  • 博客等级: 上将
  • 技术积分: 9308
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-18 10:51
文章分类

全部博文(679)

文章存档

2012年(5)

2011年(38)

2010年(86)

2009年(145)

2008年(170)

2007年(165)

2006年(89)

分类: 系统运维

2007-07-12 20:01:03

Ping命令的幕后过程及其返回信息的分析


“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不通,那么就判断是网络出现了故障。这样只通过表面现象进行判断,很可能掩盖真相。那么我们在使用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)


网络诊断工具MegaPing 给网管员减负


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会自动对指定网段的端口和服务进行扫描,同时将扫描得到的结果显示在该界面下部的列表区域中。

图1

共享扫描器

MegaPing软件提供共享扫描器功能。单击左侧窗格中的“Share Scanner”命令。输入IP地址后,单击“Start”按钮,MegaPing会自动对指定主机的共享服务进行扫描,同时将扫描得到的结果显示在该界面下部的列表区域中(如图2)。

图2

IP扫描器

IP扫描器功能主要适用于对某一网段内的IP地址来进行扫描,然后在扫描过程中找到 哪些IP地址上有活动的服务主机。单击左侧窗格中的“IP scanner”命令。输入起始IP地址和结束IP地址后,单击“Start”按钮,MegaPing会自动对指定网段的IP进行扫描,同时将扫描找到的 有活动的服务主机全部显示在该界面下部的列表区域中(如图3)。

图3

查看网络与系统信息

单击左侧窗格中的“Network Resources”命令,你会在随后出现的界面中,看到有四个标签选项,在其中的“Shares”选项卡中,你可以查看到本地计算机包含的共享资源,也 包括隐藏的共享资源。在“Sessions”选项卡中,你可以查看到连接到共享资源上的用户名、访问的具体共享文件的名称等。在“Files”选项卡中, 你可以了解到本地计算机中所有已经被远程主机打开的文件资源。在“Remote Resources”选项卡中,你可以查看到已经建立了网络连接的远程计算机上的共享资源。

跟踪网络路由

MegaPing包含了Traceroute功能,要是网络连接出现了故障时,你可 以使用这个功能快速地诊断出到底是什么地方出了问题。在跟踪网络路由时,单击左侧窗格中的“Traceroute”命令。在“Destination Address list”列表框中,你可以直接输入一个需要诊断的网站地址或者输入一个IP地址,然后单击“Start”按钮,MegaPing会自动对指定网站进行诊 断连接。如果某个网关前面的圆圈是红色,那就说明这个网关出现了故障,绿色则表示正常(如图4)。在该界面中的“Traceroute Settings”选项卡中,你可以设置Traceroute跟踪的最大路由器的数量、连接超时的时间间隔等内容。

图4

对域名进行查询

在MegaPing主界面的左窗格中,单击左侧窗格中的“DNS Lookup Name”命令,在随后打开的界面中,输入需要进行域名查询的IP地址,同时在“Query Type”框中选择查询的类型,并单击“Start”按钮,MegaPing会自动地将对应这个IP地址的域名信息全部显示出来。

校准系统时间

MegaPing为你提供了时间同步器功能,单击左侧窗格中的“Network Time”命令,这样MegaPing将会自动弹出一个时间校准界面。你可以在该界面中选择一个标准的时间服务器,然后单击 “Start”按钮,MegaPing会自动通过网络来精确地同步本地系统时钟。

MegaPing的性能表现非常优秀,它可以以各种方式扫描和诊断网络的连接与安全,并能提供详细的诊断信息,相信有了它的帮助,你再也不必为查询网络故障而头痛了!(T004)



双剑合一 用Pathping命令诊断网络故障




解决网络问题的一个方法是使用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 可能超负荷运行。这些阻塞的路由器可能也是端对端问题的一个因素,尤其是在软件路由器转发数据包时。











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