中午好,我的网工朋友。

前段时间《怎么理解ping?这是我听过最好的回答》里系统地说了ping应用的相关知识点,都看了吗?

网络ping不通是网络中出现频率最高的故障之一,同时也是最让人抓狂的故障,谁没遇到过?

如果在项目中出现网络ping不通,没有一个有序的方法去排除解决,那么后续会很难入手。

今天就和你细说下ping不通的原因,看看能不能和你遇到的情况对上号。

今日文章阅读福利:《 cisco路由器配置(实战篇)》

你可能不用思科设备,但实战是共通的,大厂商的设备经验,学习起来对你有益无害。

私信我,发送暗号“思科”,即可获取资源。

01 ping命令的原理

01 工作流程

了解ping命令原因,我们来通过一个实例来了解。

假定主机A的IP地址是 192.168.1.1 ,主机B的IP地址是 192.168.1.2 ,都在同一子网内,则当你在主机A上运行“Ping 192.168.1.2”后,都发生了些什么呢?

首先,Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.1.2”一起交给IP层协议(和ICMP一样,实际上是一组后台运行的进程)。

IP层协议将以地址“192.168.1.2”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包。

并在一个映射表中查找出IP地址192.168.1.2所对应的物理地址(也叫MAC地址,这是数据链路层协议构建数据链路层的传输单元帧所必需的),一并交给数据链路层

后者构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。

echo request”(回显请求)、“echo reply”(回显应答)

主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接收;否则丢弃。

接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。

同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。

直接说,就是利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少。

从上面过程,就是ping命令的原理,主机A收到了主机B的一个应答包,说明两台主机之间的去、回通路均正常,但也并不是所有网络都是正常的,下面我们来看ping不通的原因。

02 同网段ping不通的原因

ping命令不通,主要有两种情况一种是同网段内的ip地址ping不通,另一种是不同网段的ip地址ping不通。

各个情况不一样,我们首先来看同网段ping不通的两种情况。

01 同网段ping不通,结果是“无法访问目标主机”

目的ip和源ip是同一网段的,ping的结果是“无法访问目标主机” ,属于ping的请求没有发出。

我们来看下,ping同网段不存的ip地址。

ping的请求发出后,返回显示“无法访问目标主机"。

什么原因呢?

说明此时,ping的需求并没有成功发出,这时,要检查:

1、对方是否开机?ip是否存在?

2、有跨交换机vlan的话,检查对应的中间trunk链路是否导通?

3、走直连路由是否正确?是否应该走默认路由,而走了直连路由。

4、子网掩码是否错误。

5、默认网关是否填写正确

02 同网段ping不通,结果是“超时(time out)”

目的ip和源ip是同一网段的,ping的结果是“超时或者time out” ,属于ping的请求已经成功发出了,但目标主机没有回复。

ping的请求发出后,返回显示“超时"

什么原因呢?

这种情况是ping已经成功发出了,到达了主机,但是没有得到响应要检查:

1、检查下防火墙,防火墙禁止了对ping的回应。

2、子网掩码的设置错误,导致不在同一个网段。

3、设备硬件故障,导致设备没有对应的mac地址,无法生成路由表,而走默认路由。

4、ip冲突,或ip地址与直联路由不在同一个网段。

5、网关没有设置好

03 跨网段ping不通的原因

不同网段ping不通,可能的原因比较多,我们来看下跨网段常见的原因。

01 跨网段ping不通,结果是“无法访问目标主机”

跨网段出现无法访问目标主机,说明请求没有成功发出,获取不了目的ip地址与mac地址。

可能出现的原因是:

1、目的ip地址不存在。

2、检查路由表是否有缺省的路由

3、检查arp表是否有网关的mac地址

4、有网关设置错误

5、走了默认路由

02 跨网段ping不通,结果是“time out”

若显示 time out,表示 ping 的 request 消息已经发出,目的ip的网关已经获取到目的ip的mac地址,但是目的主机没有回复或源主机无法收到

这些应该检查回程路由和节点回程路由

可能的原因有:

1、检查下防火墙,是否拦截了ping的请求消息。

2、检查经过节点的路由是否正确,或者是否有回程路由。

3、回程路由的硬件网卡出口和ping的request的入口网卡不是同一个

4、交换机vlan对应的接口全部down了,导致vlan状态down,vlan的对应路由没有生成

04 总结

当我们网络ping不通时,首先要看ping显示的结果是”无法访问目标主机“还是”超时“,再看是同网段,还是不同网段,采取相应的分析方法。

另外在分析与解决网络故障时,我们要熟练的了解ping、arp、tracert、route这几个命令的用法,可以快速的定位ping不通的原因。

尤其是这arp、tracert、route这三个命令的用法,解决故障非常方便。

整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐