☰
【Linux】ping命令刨析
2026/10/4 13:16:54 网站建设 项目流程

目录

1.解释ping命令的回显结果

第1行

2~4行

剩下几行

网络状态分析

2.ping底层

应用层数据

网络层协议


ping是网络诊断中最常用的命令之一,用来测试本机到目标主机之间的网络是否连通,以及网络延迟(往返时间),ping后面跟上目标网址对应的域名或IP地址。

ping的原理是:向目标主机发送ICMP Echo Request(回显请求)数据包,目标主机收到后回一个ICMP Echo Reply(回显应答)。通过这个来回过程,判断网络质量。

ping命令默认不会结束,所以我们可以跟-c+数字的选项来决定ping的次数。

这里表示ping了5次。

1.解释ping命令的回显结果

第1行

首先ping会将百度的域名解析成真实域名www.a.shifen.com,随后根据真实域名解析出IP地址110.242.69.21,可见这是一个公网IP。我们的机器实际就是在ping这个IP。

发送的数据部分为56字节,加上ICMP头部8字节,加上IP头部20字节,总共84字节。

2~4行

每一行代表收到一个回包,64bytes代表收到的数据包大小(56数据+8ICMP头部=64)在解包时把20bytes的IP头部给去掉了。

from 220.181.111.1 代表回包的来源IP。

icmp_seq=1 代表ICMP序列号,当前是第1个包,序列号用来检测丢包和乱序。

ttl=251 Time To Live,报文生存时间,每经过一个路由器减1,减为0时报文被丢弃.。初始TTL通常是255或64,251说明经过了约5跳。

time=14.1ms 往返延迟,从发出到收到用了14.1毫秒.越小越好。

剩下几行

是ping命令执行结束的统计汇总信息。

第一行是统计报告的开头。

第二行汇报结果:发送了3个数据包,接收了3个数据包,丢包率0%,总耗时2002毫秒。

第三行:往返时间的最小值/平均值/最大值/平均偏差。

mdev表示每次延迟与平均值的平均偏差,数值越小,说明网络越稳定。

网络状态分析

当前的网络状态非常好,没有丢包,没有乱序,延迟很低(一般低于50ms都代表很好),网络非常稳定(mdev仅0.075ms,延迟波动极小)。

2.ping底层

应用层数据

ping命令是一个可执行程序,它会在应用层上产生一个56字节的数据,这些数据是一些填充字段,没有实际业务含义。

在默认情况下(Linux),56字节数据内容是:

struct timeval结构体+填充字段。前8字节用来存放用来发送时的时间戳,后48字节填充无意义的数据。

当然用户可以自定义发送数据包的大小,在AI大模型上一查就能出来。

让数据包达到指定大小方便测试不同MTU下的网络表现,也可以测试链路质量,更接近真实流量。

网络层协议

ICMP和IP同属网络层协议,在应用层产生完数据后会绕过传输层,直接加8字节的ICMP报头,形成ICMP报文,随后再加IP报头形成IP报文。

可见,ping命令的数据包是没有传输层的,也就是说数据包没有任何可靠性保证,数据包能否送达,是否乱序,网络延迟完全依赖网络环境。

那么为什么没有传输层参与呢?因为传输层是提供端口的,而我们的数据包是用来检测两台主机是否联通的,不需要将数据交付给特定的进程,只需要将数据包送达至目标主机即可。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询