环境说明
本文介绍的是Linux系统,包
iputils包20211215版本中的ping命令,Window系统中的选项有所不同。
1. 简介
ping 是一个非常常用的网络诊断工具,用于测试主机之间的网络连接是否正常。
它通过发送 ICMP(Internet Control Message Protocol) 回显请求消息, 来检查网络主机之间的连通性。
2. 基本用法
| |
常见选项:
-c:指定发送回显请求的次数。单位次,默认值为不限次。-w:设置超时时间(秒)。如果在指定的时间内没有收到任何回应,ping命令将终止。默认值为 10 秒。-s: 设置ICMP报文数据部分大小,默认值为56字节(数据部分,不含ICMP头8字节。实际ICMP数据包大小64字节)。-M: 设置路径MTU发现策略(pmtudisc_option, Path MTU Disovery Option),do= 设置DF(Don’t Fragment)标志位, 不允许任何分片;want= 允许本地分片;dont= 不设置DF标志位, 允许数据包在任何路径中被分片;-i:指定发送回显请求的时间间隔(秒)。默认值为 1 秒。-t:设置TTL(Time To Live)。TTL是一个8位的字段,表示数据包在丢弃之前可以经过的最大跳数(hops),每经过一个路由器 TTL 减 1, 当TTL为0时数据包被丢弃。默认值为 64 。
3. 示例
3.1 默认选项
-c 次数= 无限,-s 数据包大小= 56字节(数据部分大小,不含ICMP头8字节。实际数据包大小64字节),-t 跳数=64
3.1 指定等待时间、探测次数
探测主机192.168.1.254是否有回应。 探测仅等待 3 秒,也仅探测 2 次。
| |
3.2 指定发送的数据包大小
ping -c 4 -s 1024 www.example.com
用来测试MTU值不合适带来的丢包问题
3.3 探测整个网络传输的最大MTU值
-c 2发2次探测ICMP报文-s 14721472(-s 数据部分大小) = 1500(MTU默认大小) - 28(因为IP头20字节,icmp包头8字节);-M do参数不允许路由器、交换机进行拆包、包重组。
| |
ICMP协议说明
ICMP(Internet Control Message Protocol)协议位于OSI的网络层(三层),ICMP报文被封装在IP数据包中。依赖IP协议传输。
报文结构如下:
| |