Posted on 2025-08-28 11:51
Jack Jiang 阅读(10)
评论(0) 编辑 收藏
1、引言
网络ping不通是网络中出现频率最高的故障之一,同时也是最让人抓狂的故障,谁没遇到过?今天就和你细说下ping不通的原因,看看能不能和你遇到的情况对上号。
技术交流:

- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》
(本文已同步发布于:http://www.52im.net/thread-4857-1-1.html)
2、系列文章
本文是系列文章中的第 20篇,本系列文章的大纲如下:
3、ping命令技术原理
了解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层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。

主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合则接收,否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。
同样:IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。
直接说:就是利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少。
上面的过程就是ping命令的原理:主机A收到了主机B的一个应答包,说明两台主机之间的去、回通路均正常,但也并不是所有网络都是正常的,下面我们来看ping不通的原因。
4、同网段ping不通的原因概述
ping命令不通,主要有两种情况:
- 1)同网段内的ip地址ping不通;
- 2)不同网段的ip地址ping不通。
各个情况不一样,我们首先来看同网段ping不通的两种情况。
5、同网段ping不通的情况1:“无法访问目标主机”
目的ip和源ip是同一网段的,ping的结果是“无法访问目标主机”,属于ping的请求没有发出。
我们来看下,ping同网段不存的ip地址:

ping的请求发出后,返回显示“无法访问目标主机"。
什么原因呢?说明此时ping的需求并没有成功发出。
这时要检查:
- 1)对方是否开机?ip是否存在?
- 2)有跨交换机vlan的话,检查对应的中间trunk链路是否导通?
- 3)走直连路由是否正确?是否应该走默认路由,而走了直连路由;
- 4)子网掩码是否错误;
- 5)默认网关是否填写正确。
6、同网段ping不通的情况2:“超时(time out)”
目的ip和源ip是同一网段的,ping的结果是“超时或者time out” ,属于ping的请求已经成功发出了,但目标主机没有回复。
ping的请求发出后,返回显示“超时":

什么原因呢?这种情况是ping已经成功发出了,到达了主机,但是没有得到响应。
要检查:
- 1)检查下防火墙,防火墙禁止了对ping的回应;
- 2)子网掩码的设置错误,导致不在同一个网段;
- 3)设备硬件故障,导致设备没有对应的mac地址,无法生成路由表,而走默认路由;
- 4)ip冲突,或ip地址与直联路由不在同一个网段;
- 5)网关没有设置好。
7、 跨网段ping不通的原因概述
不同网段ping不通,通常的表现有“无法访问目标主机”、“time out”,但具体分析起来其实可能的原因是比较多的,我们还是一起来看下跨网段常见的原因吧。
8、 跨网段ping不通的情况1:“无法访问目标主机”
跨网段出现无法访问目标主机,说明请求没有成功发出,获取不了目的ip地址与mac地址。

可能出现的原因是:
- 1)目的ip地址不存在;
- 2)检查路由表是否有缺省的路由;
- 3)检查arp表是否有网关的mac地址;
- 4)有网关设置错误;
- 5)走了默认路由。
9、 跨网段ping不通的情况2:“time out”
若显示 time out,表示 ping 的 request 消息已经发出,目的ip的网关已经获取到目的ip的mac地址,但是目的主机没有回复,或源主机无法收到。
这些应该检查回程路由和节点回程路由。

可能的原因有:
- 1)检查下防火墙,是否拦截了ping的请求消息;
- 2)检查经过节点的路由是否正确,或者是否有回程路由;
- 3)回程路由的硬件网卡出口和ping的request的入口网卡不是同一个;
- 4)交换机vlan对应的接口全部down了,导致vlan状态down,vlan的对应路由没有生成。
10、本文小结
当我们网络ping不通时,首先要看ping显示的结果是”无法访问目标主机“还是”超时“,再看是同网段,还是不同网段,采取相应的分析方法。
另外在分析与解决网络故障时,我们要熟练的了解ping、arp、tracert、route这几个命令的用法,可以快速的定位ping不通的原因。
尤其是这arp、tracert、route这三个命令的用法,解决故障非常方便。
11、参考资料
[1] 史上最通俗的集线器、交换机、路由器功能原理入门
[2] 通俗讲解,有了IP地址,为何还要用MAC地址?
[3] 外行也能读懂的网络硬件设备功能原理速成
[4] 每天都在用的Ping命令,它到底是什么?
[5] 能Ping通,TCP就一定能连接和通信吗?
[6] 什么是公网IP和内网IP?NAT转换又是什么鬼?
[7] 假如你来设计网络,会怎么做?
[8] 你真的了解127.0.0.1和0.0.0.0的区别?
[9] 一文搞懂localhost和127.0.0.1
[10] 深入操作系统,彻底搞懂127.0.0.1本机网络通信
[11] 冰山之下,一次网络请求背后的技术秘密
[12] 得物自研移动端弱网诊断工具的技术实践分享
(本文已同步发布于:http://www.52im.net/thread-4857-1-1.html)