
目录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_seq1 代表ICMP序列号当前是第1个包序列号用来检测丢包和乱序。ttl251 Time To Live报文生存时间每经过一个路由器减1减为0时报文被丢弃.。初始TTL通常是255或64251说明经过了约5跳。time14.1ms 往返延迟从发出到收到用了14.1毫秒.越小越好。剩下几行是ping命令执行结束的统计汇总信息。第一行是统计报告的开头。第二行汇报结果发送了3个数据包接收了3个数据包丢包率0%总耗时2002毫秒。第三行往返时间的最小值/平均值/最大值/平均偏差。mdev表示每次延迟与平均值的平均偏差数值越小说明网络越稳定。网络状态分析当前的网络状态非常好没有丢包没有乱序延迟很低一般低于50ms都代表很好网络非常稳定(mdev仅0.075ms延迟波动极小)。2.ping底层应用层数据ping命令是一个可执行程序它会在应用层上产生一个56字节的数据这些数据是一些填充字段没有实际业务含义。在默认情况下Linux56字节数据内容是struct timeval结构体填充字段。前8字节用来存放用来发送时的时间戳后48字节填充无意义的数据。当然用户可以自定义发送数据包的大小在AI大模型上一查就能出来。让数据包达到指定大小方便测试不同MTU下的网络表现也可以测试链路质量更接近真实流量。网络层协议ICMP和IP同属网络层协议在应用层产生完数据后会绕过传输层直接加8字节的ICMP报头形成ICMP报文随后再加IP报头形成IP报文。可见ping命令的数据包是没有传输层的也就是说数据包没有任何可靠性保证数据包能否送达是否乱序网络延迟完全依赖网络环境。那么为什么没有传输层参与呢因为传输层是提供端口的而我们的数据包是用来检测两台主机是否联通的不需要将数据交付给特定的进程只需要将数据包送达至目标主机即可。