Windows ping 与 Linux 的区别
Windows 自带的 ping 与 Linux 的 iputils ping 名字相同,参数语义却几乎对不上:Linux 默认一直发包,Windows 默认只发四个;Linux 用 -i 控间隔、-W 控秒级超时,Windows 用 -w 控毫秒级超时、用 -t 表示持续发包。把它当成另一个工具记住,跨平台照抄命令是最常见的踩坑方式。中文版 Windows 还会把提示信息一并汉化,判读时要认准关键字。
基本信息
| 适用平台 | Windows 7 及以上、Windows Server 全系列,系统自带无需安装 |
|---|---|
| 默认行为 | 默认只发 4 个包,需用 -t 才能持续发包,Ctrl+C 结束并输出统计 |
| 与 Linux 的关键差异 | -t 表示长测、-n 表示包数、-l 表示载荷、-f 表示禁止分片、-w 单位是毫秒 |
| 中文报错 | 请求超时、无法访问目标主机、一般故障等提示分别对应不同的失败原因 |
参数对照
| Windows 参数 | 作用 | Linux 对应 |
|---|---|---|
| -t | 持续发包直到手动中断 | 无对应参数,Linux 默认持续 |
| -n 10 | 指定发送的包数 | -c 10 |
| -l 1400 | 指定载荷字节数 | -s 1400 |
| -f | 置上禁止分片位,用于探测路径最大长度 | -M do |
| -w 1000 | 单个回包的等待超时,单位毫秒 | -W 1(单位秒) |
| -i 64 | 设置生存时间字段 | -t 64 |
| -4 / -6 | 强制使用 IPv4 或 IPv6 | -4 / -6 |
| -S 10.0.0.2 | 指定源地址 | -I 10.0.0.2 |
| -a | 把地址反向解析成主机名 | 默认解析,用 -n 关闭 |
典型使用场景
- 长期观测:用 -t 挂在后台,等偶发丢包再次出现时看累计统计
- 终端侧排障:普通用户不会用其他工具,ping 是最容易口述指导的命令
- 路径长度探测:用 -f 与 -l 组合二分,找 Windows 终端的路径最大报文
- 批量巡检脚本:用 -n 与 -w 固定每台设备的耗时,配合输出关键字判断成败
- 地址与名称核对:用 -a 反查地址对应的主机名,辅助资产确认
常用写法
常用写法
ping -t 8.8.8.8 # 长测,按 Ctrl+C 后看汇总统计
ping -n 100 -w 1000 10.0.0.5 # 100 包,单包等待 1 秒
ping -f -l 1472 10.0.0.5 # 禁止分片 + 1472 载荷,试探路径 MTU
ping -n 20 10.0.0.5 | Select-String '平均|Average' # 只挑出平均时延行
ping -6 -n 5 ipv6.google.com # 强制走 IPv6 测试中文报错判读
| 提示信息 | 含义 | 排查方向 |
|---|---|---|
| 请求超时 | 发出的包没有回音 | 对端或中间设备丢弃、防火墙拦截、链路丢包 |
| 无法访问目标主机 | 本机或网关找不到通往目标的路径 | 本机地址与网关配置、本机到网关的二层链路 |
| 传输失败,常见故障 | 本地网络设备或驱动层发不出包 | 网卡驱动、虚拟网卡、地址冲突 |
| 一般故障 | 本机网络栈或路由表的综合异常 | 检查路由表、重置网络栈后再测 |
| 字节数随载荷变化 | 回包字节数等于请求载荷加协议头 | 数值与 -l 设置不符说明有中间设备改动报文 |
Windows 的统计行只在结束时输出:长测必须手动中断才会给出丢包率与平均时延,脚本里可以用超时或后台任务控制运行时长。
PowerShell 里也可以用 Test-Connection(别名 Test-NetConnection 范围更广):它输出结构化对象,适合脚本里做批量巡检与结果判断。
Windows 防火墙默认可能拦掉入站 ICMP 回显请求,本机被别的机器 ping 不通并不代表网络有问题,需要在防火墙规则里单独放行。