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 最简单的一个应用就是验证网卡工作状态是否正 常,这也是电脑出现不能上网等故障最简单的判断手段。 在命令提示符下输入“ping 127.0.0.1”并回车,如果 返回四行“Reply from 127.0.0.1: bytes=32 time<1ms TTL=128”那么则说明本地网卡是安装正常的,若返回 “Request timed out.” 则说明本地网卡工作不正常  。 

 二、判断网络连接状态 判断网络连接时,我们通常的做法就是 ping 网关地址 和远程主机地址,以此判断出网络故障所发地。 如果“ping 网关地址”出现“Request timed out.”, 那么则说明是内部网络出现了问题,本地网卡发出的数据包 不能到达网关; 如果 Ping 网关连接正常, 那么可以执行 “ping 远程主机”,这时若出现“Request timed out.”,则可能 是外部连接的问题了。 在实际的应用中还会出现这样的情况,在 ping 执行过 程中,会同时包含“Request timed out.”和“Reply from 192168.0.1: bytes=32 time<1ms TTL=128”这样的信息, 这种情况则表示网络不太稳定,存在丢包现象,对此大家可 以使用“ping IP 地址 -t”即在原有的命令后加上“-t”参 数,这样 ping 就会连续尝试与目标主机进行连接,以此观 察网络的稳定性。当然从返回信息的“time<1ms”也是一个 很重要的信息,如果网络很畅通,例如测试与内网主机的连 接,一般都会是“time<1ms”,若该数值比较大,同样说明 网络不够稳定,可能是设备不兼容,可能是节点接触不好, 也可能是网络内有大量病毒导现堵塞等。 三、验证 DNS 服务器 DNS 服务器负责将域名(网址)转换成 IP 地址,我们可 以使用 ping 命令判断其配置是否正确以及工作是否正常。 其方法很简单,只需要在命令提示下输入“ping 域名 地址”,例如“pint www.itedit.cn”,如果出现“unknown Host Name”则表明不能到达,返回提示“Reply from 222.191.251.34: bytes=32 time=27ms TTL=120”则证明 DNS 服务器能够成功将域名转换为 IP 地址。借助这个方法,我 们也可以查看知名网站所使用的 IP 地址。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值