首页/网络/网络排障速查/ping 指定包大小:-s 与路径行为观察
连通性与链路检测54 条

ping 指定包大小:-s 与路径行为观察

改变载荷大小能暴露 MTU、分片、抖动相关的问题:小包正常大包丢,基本可以锁定 MTU 或中间设备对分片的处理。

网络排障速查网络更新于 2026-10-13

ping 的包大小参数

ping 默认只发很小的探测包,真正的链路问题往往在大包上才暴露。iputils 的 ping 用 -s 指定 ICMP 载荷字节数(不含 8 字节 ICMP 头与 20 字节 IP 头),Windows 下对应参数是 -l。改变载荷大小,等于顺着包长这一维给链路做体检:小包正常、大包丢,基本可以锁定 MTU 或中间设备对分片与超大包的处理。

为什么看包长最有价值

TCP 建连与 DNS 查询这类交互都是小包,所以「网页能打开」并不代表链路健康;一旦进入数据传输阶段,包变大就会撞上路径上最小的一跳 MTU。把包长从几十字节加到两千字节以上做梯度测试,能把「协议栈问题」「路径 MTU 问题」「中间设备限速/丢弃」三类原因分开,比反复重装服务高效得多。

基本信息

适用平台Linux(iputils ping)、Windows(ping -l)、网络设备 ping
语法ping -s <载荷字节> -c <次数> 目标
关键选项-s 载荷大小、-M do 禁止分片、-c 次数、-W 超时
权限要求普通用户即可;小于最小 ICMP 大小时需 root,实践中很少用

大小梯度测试

大小梯度测试
ping -c 4 -s 56 10.0.0.5      # 常规小包,等价于默认行为
ping -c 4 -s 1000 10.0.0.5    # 中大包,多数链路应无压力
ping -c 4 -s 1472 10.0.0.5    # 1472+28=1500,以太网不分片的载荷上限
ping -c 4 -s 2000 10.0.0.5    # 超过 1500:未设 DF 时将被分片
ping -c 4 -s 8000 10.0.0.5    # 大包分片压力,观察丢包与延迟抬升

输出与口径读法

项目含义怎么看
64 bytes from 中的数字等于 -s 值加 8 的 ICMP 头核对是否与预期一致,防止参数写错
链路总长度-s 值加 8 的 ICMP 头,再加 20 或 40 的 IP 头超过 1500 就要考虑分片
分片临界值1472 是以太网 IPv4 不分片的载荷上限从 1472 往下二分可定位路径 MTU
icmp_seq 是否连续序号跳号说明中间丢包与 loss 百分比对照看规律性
time 一栏往返时延大包时延显著抬升说明链路或设备排队

典型使用场景

  • 网页能打开但文件上传卡住:用包长梯度确认是否为路径 MTU 问题
  • VPN 或隧道建好后业务时通时断:用大包测试验证封装后是否超出路径 MTU
  • 云主机跨可用区访问变慢:对比不同包长的时延与丢包,判断是带宽还是 MTU
  • 更换中间设备后做验收:用固定包长做前后对比,形成可量化的基线
  • 与厂商沟通故障:把包长与丢包率的对应关系一并给出,比只描述现象有用
「小包通、大包不通」几乎等于 MTU 或分片链路问题;下一步用 ping -M do 从 1472 往下二分,直到找到能通过的最大包长,这个值就是路径 MTU。
IPv6 链路的最小 MTU 是 1280,且中间设备不允许分片,用 IPv4 的 1472 经验值直接套用会得出错误结论;IPv6 下应围绕 1232 这类保守值测试。

易错点

  • 不加 -M do 时大包会被分片,路径能通过不代表 MTU 没有问题,必须用禁分片模式复测
  • 把 -s 当成链路总长度:它只是 ICMP 载荷,忽略 28 字节头部会算错分片临界点
  • 用 IPv4 的经验值排查 IPv6 链路,忽略 1280 的最小 MTU 与中间设备不分片的差异
  • 只看单次结果:大包偶发丢包要跑百次以上统计,单包成功容易掩盖概率性丢弃

数据来源与参考

  • RFC 1191:Path MTU Discovery
  • man 8 ping(-s/-M 组合)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌