本帖最后由 Hello123World 于 2025-4-11 16:27 编辑
【原】[一日一教学]批处理系列帖子索引 http://bbs.bathome.net/thread-2576-1-1.html
【续】[一日一教学]批处理系列帖子索引 http://bbs.bathome.net/thread-13798-1-1.html
零、概述
ping 是网络诊断中最基础的工具之一,用于测试主机之间的连通性。
一、帮助信息
以下是通过 ping /? 获取到官方帮助信息:- C:\Users\HelloWorld>ping /?
-
- 用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
- [-r count] [-s count] [[-j host-list] | [-k host-list]]
- [-w timeout] [-R] [-S srcaddr] [-c compartment] [-p]
- [-4] [-6] target_name
-
- 选项:
- -t Ping 指定的主机,直到停止。
- 若要查看统计信息并继续操作,请键入 Ctrl+Break;
- 若要停止,请键入 Ctrl+C。
- -a 将地址解析为主机名。
- -n count 要发送的回显请求数。
- -l size 发送缓冲区大小。
- -f 在数据包中设置“不分段”标记(仅适用于 IPv4)。
- -i TTL 生存时间。
- -v TOS 服务类型(仅适用于 IPv4。该设置已被弃用,
- 对 IP 标头中的服务类型字段没有任何
- 影响)。
- -r count 记录计数跃点的路由(仅适用于 IPv4)。
- -s count 计数跃点的时间戳(仅适用于 IPv4)。
- -j host-list 与主机列表一起使用的松散源路由(仅适用于 IPv4)。
- -k host-list 与主机列表一起使用的严格源路由(仅适用于 IPv4)。
- -w timeout 等待每次回复的超时时间(毫秒)。
- -R 同样使用路由标头测试反向路由(仅适用于 IPv6)。
- 根据 RFC 5095,已弃用此路由标头。
- 如果使用此标头,某些系统可能丢弃
- 回显请求。
- -S srcaddr 要使用的源地址。
- -c compartment 路由隔离舱标识符。
- -p Ping Hyper-V 网络虚拟化提供程序地址。
- -4 强制使用 IPv4。
- -6 强制使用 IPv6。
复制代码 二、选项、参数详解
在 Windows 的 cmd 环境中,ping 命令支持多种参数,以下是其核心功能及常用参数说明:
1、 测试对目标(ip、域名)的连通性
ping [目标IP或域名]- ping www.baidu.com
- ping 192.168.1.1
复制代码 默认行为:发送 4 个 ICMP 回显请求包,显示响应时间(TTL)和丢包情况。
2、持续测试对目标(ip、域名)的连通性
-t 持续发送请求,直到手动停止(Ctrl + C 终止)。- ping -t www.baidu.com
- ping -t 192.168.1.1
复制代码 3、按照规定次数,测试对目标(ip、域名)的连通性
-n <次数> 指定发送请求的次数(如发送 10 次)。复制代码 4、指定发送包的大小
-l <大小> 指定发送的包大小(字节)。默认 32 字节,最大 65500(需管理员权限)。
从以下的结果来看,百度禁止了大数据包的ping,本地机器是可以ping的。- C:\Users\HelloWorld>ping -l 65500 192.168.220.148
-
- 正在 Ping 192.168.220.148 具有 65500 字节的数据:
- 来自 192.168.220.148 的回复: 字节=65500 时间<1ms TTL=64
- 来自 192.168.220.148 的回复: 字节=65500 时间<1ms TTL=64
- 来自 192.168.220.148 的回复: 字节=65500 时间<1ms TTL=64
- 来自 192.168.220.148 的回复: 字节=65500 时间=1ms TTL=64
-
- 192.168.220.148 的 Ping 统计信息:
- 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
- 往返行程的估计时间(以毫秒为单位):
- 最短 = 0ms,最长 = 1ms,平均 = 0ms
-
- C:\Users\HelloWorld>ping -l 65500 www.baidu.com
-
- 正在 Ping www.a.shifen.com [240e:ff:e020:99b:0:ff:b099:cff1] 具有 65500 字节的数据:
- 请求超时。
- 请求超时。
- 请求超时。
- 请求超时。
-
- 240e:ff:e020:99b:0:ff:b099:cff1 的 Ping 统计信息:
- 数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),
复制代码 5、指定超时等待时间
-w <超时> 设置等待响应的超时时间(毫秒),默认 4000ms(4 秒)。
从结果来看,指定为8000(8s)后,超时光标闪了8次,未指定的默认值,闪了4次。- C:\Users\HelloWorld>ping -l 65500 www.baidu.com -w 8000
-
- 正在 Ping www.a.shifen.com [240e:ff:e020:98c:0:ff:b061:c306] 具有 65500 字节的数据:
- 请求超时。
- 请求超时。
- 请求超时。
- 请求超时。
-
- 240e:ff:e020:98c:0:ff:b061:c306 的 Ping 统计信息:
- 数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),
复制代码 6、指定包的生存时间
-i <TTL> 设置包的生存时间(TTL),用于跟踪路由跳数(默认 128)。
这里 -i反而不是最重要的,最重要是对TTL生存时间的理解。
6.1、TTL 的作用
防循环机制:如果网络中存在错误的路由环路,数据包可能无限循环,占用带宽和资源。TTL 通过设定一个初始值,每经过一个路由器(一跳)减 1,当 TTL 降为 0 时,当前路由器会丢弃该包,并返回 ICMP 超时消息(Time Exceeded)。
控制传输范围:TTL 间接限制了数据包能经过的最大跳数(即经过的路由器数量)。
6.2.、TTL 的典型值
不同操作系统的默认 TTL:
操作系统/设备 默认 TTL 值
Windows 128
Linux/Unix 64
路由器/网络设备 255- C:\Users\HelloWorld>ping -l 65500 192.168.220.148 -i 30
-
- 正在 Ping 192.168.220.148 具有 65500 字节的数据:
- 来自 192.168.220.148 的回复: 字节=65500 时间<1ms TTL=64
- 来自 192.168.220.148 的回复: 字节=65500 时间<1ms TTL=64
- 来自 192.168.220.148 的回复: 字节=65500 时间<1ms TTL=64
- 来自 192.168.220.148 的回复: 字节=65500 时间=1ms TTL=64
-
- 192.168.220.148 的 Ping 统计信息:
- 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
- 往返行程的估计时间(以毫秒为单位):
- 最短 = 0ms,最长 = 1ms,平均 = 0ms
-
- C:\Users\HelloWorld>ping -l 65500 192.168.220.148 -i 1
-
- 正在 Ping 192.168.220.148 具有 65500 字节的数据:
- 来自 192.168.220.148 的回复: 字节=65500 时间=1ms TTL=64
- 来自 192.168.220.148 的回复: 字节=65500 时间=47ms TTL=64
- 来自 192.168.220.148 的回复: 字节=65500 时间<1ms TTL=64
- 来自 192.168.220.148 的回复: 字节=65500 时间=1ms TTL=64
-
- 192.168.220.148 的 Ping 统计信息:
- 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
- 往返行程的估计时间(以毫秒为单位):
- 最短 = 0ms,最长 = 47ms,平均 = 12ms
-
- C:\Users\HelloWorld>ping -l 65500 192.168.220.148 -i 0
- 选项 -i 的值有错误,有效范围从 1 到 255。
复制代码 三、ping的一些实际应用
1、在批处理脚本中用来延时
默认延时4次,约等于4s。- @echo off
- echo hello
- ping www.baidu.com
- echo world
- pause
复制代码 结合-n选项,灵活控制延时,这里设置延时10s- @echo off
- echo hello
- ping -n 10 www.baidu.com
- echo world
- pause
复制代码 2、大包测试网络质量- ping -l 2048 192.168.1.1 # 发送 2048 字节的包(需注意 MTU 限制)
复制代码 3、持续监控连接稳定性,并生成报告文件(c:\1.txt)- ping -t 192.168.1.1 >>c:\1.txt
复制代码 四、ping的一些Linux拓展知识
1、默认行为
Windows:默认发送 4 次 请求后停止。
Linux:默认持续发送请求,需手动终止(Ctrl + C)。
2、参数差异
功能 Windows 参数 Linux 参数
指定发送次数 -n <次数> -c <次数>
设置包大小 -l <大小> -s <大小>
设置超时时间 -w <毫秒> -W <秒>
设置 TTL -i <TTL> -t <TTL>
3、功能差异
数据包大小限制:
Windows:最大 65500 字节(需管理员权限)。
Linux:通常允许更大包(受内核限制)。
TTL 显示:
Windows 显示目标主机的 TTL 值。
Linux 显示包经过的剩余跳数。
输出格式:
Linux 支持更详细的统计信息(如 ping -q 简化输出)。
Windows 输出更简洁,适合快速查看。
4、示例对比
Linux 发送 5 次请求复制代码 Linux 设置包大小为 1000 字节复制代码 |