ping测失败是最长出现的网络故障,面对ping不通的问题,需要有一个排查顺序,接下来就简单总结下:
1、ping命令简介
当192.168.1.1向192.168.1.2发出ping测,ping命令生成固定格式的ICMP数据请求包,ICMP协议将数据包和地址“192.168.1.2”一起交给IP层协议,IP层协议将以地址“192.168.1.2”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并在一个映射表中查找出IP地址192.168.1.2所对应的物理地址,一并交给数据链路层。后者构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。
主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。
简单来说,就是利用设备间IP地址的唯一性,给目标IP地址发送数据包,并要求目的地址返回同样大小的数据包来确定设备间网络连通性。
2、同网段ping不通
同网段ping不通,返回结果是“无法访问目标主机”,该情况属于ping请求没有正常发出。
原因可能有如下几点:
A.目的地址没有开机;
B.IP地址不存在;
C.默认网管不正确;
D.子网掩码不正确;
E.是否应该走默认路由,而走了直连路由;
ping的请求已经成功发出了,但目标主机没有回复。
原因可能有如下几点:
A.防火墙端启用禁ping;
B.子网掩码不正确;
C.IP地址冲突;
D.网关不正确;
E.设备硬件故障,导致设备没有对应的mac地址,无法生成路由表,而走默认路由。
3、不同网段ping不通,返回结果是“无法访问目标主机”,该情况属于请求没有成功发出,获取不了目的ip地址与mac地址。
原因可能有如下几点:
A.目的ip地址不存在
B.检查路由表是否有缺省的路由
C.检查arp表是否有网关的mac地址
D.网关不正确
E.走默认路由
4、同网段ping不通,返回结果是“超时(time out)”,该情况属于源地址的request消息已经发出,目的地址的网关已经获取到目的地址的mac地址,但是目的地址主机没有回复,或源地址主机无法收到。这些应该检查回程路由和节点回程路由。
原因可能有如下几点:
A.防火墙端启用禁ping;
B.检查经过节点的路由是否正确,或者是否有回程路由。
C.回程路由的硬件网卡出口和ping的request的入口网卡不是同一个
D.交换机vlan对应的接口全部down了,导致vlan状态down,vlan的对应路由没有生成。
ping命令语法
64 bytes from 8.8.8.8: icmp_seq=1 ttl=111 time=45.5 ms
-
Bytes:数据字节的总数,默认值为 56 个字节,然后转换为 64 个数据字节,在这种情况下,输出为 64 字节。
-
IP 地址:目的服务器 IP 地址,这里是 8.8.8.8。
-
序列号:每个 ICMP 包的序列号,在这种情况下为 icmp_seq=1。
-
TTL:请求的生存时间,这里是 111。
一般 TTL 值:
100~130ms 之间,Windows 系统 ;
240~255ms 之间,UNIX/Linux 系统。
-
Ping Time:往返时间,以毫秒为单位测量 ping。该时间是从数据包到达目的地并在源上返回响应的那一刻计算的。此处,Ping 时间为 45.5 毫秒.
自定义ping包数量
默认情况下,ping命令会一直发送数据包,直到使用ctrl + C 中断,使用 -c 选项则可以限制 ping 命令发送的数据包数量
自定义ping包大小
ping 的默认数据包大小为 56 (86) 字节,可以使用 ping 命令的 -s 选项来指定数据包的大小,大于或小于默认值
自定义时间间隔
默认情况下,每个请求之间的间隔是一秒,可以使用 -i 选项来增加或减少 ping 请求之间的时间间隔。
自定义超时时间
可以使用 -w 命令指定 Linux ping 命令停止发送数据包的时间量,要在 4 秒后停止显示 ping 命令,可以使用-w命令:
添加时间戳
使用 -D 选项为 ping 响应添加时间戳
批量 Ping 网段
对于一个网段 ip 地址众多,如果单个检测实在麻烦,那么我们可以直接批量 ping 网段检测,那个 ip 地址出了问题,一目了然。
先看代码,直接在命令行窗口输入:
for /L %D in (1,1,255) do ping 192.168.1.%D
IP 地址段修改成你要检查的 IP 地址段。
当输入批量命令后,那么它就自动把网段内所有的 ip 地址都 ping 完为止。
那么这段 “for /L %D in(1,1,255) do ping 10.168.1.%D” 代码是什么意思呢?
代码中的这个 (1,1,255) 就是网段起与始,就是检测网段 192.168.1.1 到 192.168.1.255 之间的所有的 ip 地址,每次逐增 1,直接到 1 到 255 这 255 个 ip 检测完为止。