Ping命令我们见怪不怪了,一般来说,我们们用 ping查看网络情况,主要是检查两个指标:

1、对方是否可达

2、延迟是否太高

如果超时那么肯定是网络有问题(禁 ping情况除外),如果延迟太高,网络情况肯定也是很糟糕的。

我们知道它的作用,但是ping到底是如何检查网络的?它背后的原理又是什么呢?

接下来我们做个实验来验证一下!

环境准备和抓包

01 环境准备

ping 命令的基本用法(Ping命令是如何工作的呢)(1)

抓包工具:Wireshark 准备两台电脑,进行互 ping操作:

02 抓包操作

打开 Wireshark,选取指定的网卡进行抓包,进行 ping操作,在 A电脑上 ping B电脑的 IP。抓包情况如下:

ping 命令的基本用法(Ping命令是如何工作的呢)(2)

ping 命令的基本用法(Ping命令是如何工作的呢)(3)

在上图中可以看到发送方和接收方的IP以及使用的协议等、在下面的封包列表中显示被选中的详细信息,信息按OSI Layer进行分组;

上面就是整个 ping命令的过程,但我们知道 ping命令不是依托于 TCP或者 UDP这种传输层协议的,而是依托于 ICMP协议实现的, 那么什么是 ICMP 协议呢?这里简单介绍下:

1、ICMP是什么?

ICMP是控制报文协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息,这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

从技术角度说,ICMP就是一个"错误侦测与回报机制",其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性﹐其功能主要有:

· 侦测远端主机是否存在。

· 建立及维护路由资料。

· 重导资料传送路径(ICMP重定向)。

ICMP在沟通之中,主要是透过不同的类别(Type)与代码(Code) 让机器来识别不同的连线状况。常用的类别如下表所列:

ping 命令的基本用法(Ping命令是如何工作的呢)(4)

可见,ICMP 是个非常有用的协议﹐尤其是当我们要对网路连接状况进行判断的时候。

02 Ping过程解析

了解了上面的基础概念后,我们来分析下抓包的数据,其流程如下:

上面的请求过程我画成流程图比较直观一点:

ping 命令的基本用法(Ping命令是如何工作的呢)(5)

关于ping

1、ping命令是依托于 ICMP协议的, ICMP协议是网络层辅助IP工作的协议,存在就是为了更高效的转发 IP数据报和提高交付成功的机会。

ping命令除了依托于 ICMP,在局域网下还要借助于 ARP协议, ARP协议能根据 IP地址反查出计算机的 MAC地址。

另外 ARP是有缓存的,为了保证 ARP的准确性,计算机会更新ARP缓存。

,