ping 是什么
ping 通过发送 ICMP 回显请求并等待回显应答,判断目标主机在三层是否可达,同时给出往返延迟与丢包情况,是网络排查的第一步。它验证的是「IP 层能不能通」,与具体服务是否可用无关。Windows 版 ping 的参数与 Linux 版不同:次数用 -n(Linux 是 -c),载荷大小用 -l(Linux 是 -s),写脚本时不能照搬。
基本信息
| 适用平台 | Windows CMD / PowerShell(同名调用的仍是 ping.exe) |
|---|---|
| 语法 | ping [-t] [-n 次数] [-l 载荷字节] [-f] [-w 超时毫秒] [-4|-6] [-a] 目标 |
| 常用开关 | -t 持续发送、-n 指定次数、-l 载荷大小、-f 不分片、-w 每包超时、-a 反解析主机名 |
| 权限 | 普通用户即可;部分安全策略或网络会屏蔽 ICMP |
| 结果要点 | 统计行的丢包百分比与往返时间的最小/最大/平均 |
典型使用场景
- 确认目标主机是否在线:ping 网关、ping 同网段另一台机器逐步定位断点
- 区分是链路问题还是应用问题:ping 通但端口连不上,说明故障在四层以上
- 观察延迟与抖动:-t 持续跑一段时间,看平均延迟与丢包是否有规律
- 探测路径 MTU:-f -l 配合不同载荷,找到不分片还能通过的最大包
- 验证 DNS 解析:直接 ping 域名可以看到解析出的地址,快速判断解析是否正确
- IPv6 环境验证:用 -6 指定走 IPv6,排除双栈下走错协议族的干扰
常用示例
常用示例
:: 发 4 个包做基本连通性测试
ping -n 4 8.8.8.8
:: 持续 ping,Ctrl+C 结束后看统计
ping -t 192.168.1.1
:: 探测路径 MTU:1472 + 28 字节头 = 1500,不分片
ping -f -l 1472 www.example.com
:: 指定每包超时 1 秒,避免慢链路长时间等待
ping -n 5 -w 1000 10.0.0.8
:: 走 IPv6
ping -6 fe80::1
:: 反解名称,确认解析结果
ping -a 10.0.0.8参数与结果速查
| 项 | 含义 | 正常/异常 |
|---|---|---|
| -n 次数 | 发送多少个回显请求 | 默认 4 个,脚本里显式指定更可控 |
| -l 大小 | 载荷字节数,不含 28 字节 ICMP 与 IP 头 | 出现「需要拆分数据包」说明超过路径 MTU |
| -f | 设置不分片标志 | 配合 -l 1472 失败即说明路径 MTU 小于 1500 |
| -w 超时 | 等待应答的毫秒数 | 默认较长,跨网测试建议显式缩小 |
| 时间=xxms | 单包往返时间 | 波动大或阶梯式上升说明链路拥塞或有中间设备限速 |
| 丢失 | 未收到应答的包数与百分比 | 持续 1% 以上需要进一步定位;偶发单包可忽略 |
排查顺序建议:先 ping 127.0.0.1 确认本机协议栈,再 ping 网关确认内网出口,最后 ping 目标地址。逐段推进能把故障范围从整条路径收窄到一个跳点。
ping -t 会一直发包,在跨网或按流量计费的链路上长时间运行会产生实际流量;排查结束记得 Ctrl+C 结束,别留在远程会话里忘记关闭。
失败信息对照
| 提示 | 常见原因 | 下一步动作 |
|---|---|---|
| 请求超时 | 中间设备丢弃、对方禁 ICMP 或路由不可达 | 改用 TCP 端口测试,再用 tracert 定位断点 |
| 无法访问目标主机 | 本机无匹配路由或网关不可达 | 检查本机地址、掩码与默认网关是否配置正确 |
| 一般故障 | 本机协议栈或网卡驱动异常 | 先 ping 127.0.0.1 验证本机协议栈 |
| 需要拆分数据包 | 载荷超过路径 MTU | 减小 -l 值,排查 VPN 与隧道链路的 MTU 设置 |
| 延迟阶梯式跳变 | 链路拥塞或中间设备限速 | 分段 ping 网关与目标,判断问题在内网还是出口 |
批量存活检测的思路:把主机清单写成文本,用 for /f 逐行读取并执行 ping -n 1 -w 500,再过滤含 TTL= 的行判断是否有应答,比逐个手工敲快得多。