我看到一些我不理解的内置 ping 命令的奇怪行为。(这是在 Windows 2012 r2 盒子上 - 我尚未验证是否在其他 Windows 版本上看到此行为)
如果我将超时(以毫秒为单位)设置为 120 之类的值,我会在 ping 远程主机(大约 10 跳外)时始终看到间歇性超时
ping -t -w 120 myhost.domain.local
Reply from (removed): bytes=32 time=21ms TTL=246
Reply from (removed): bytes=32 time=23ms TTL=246
Request timed out.
Reply from (removed): bytes=32 time=25ms TTL=246
Reply from (removed): bytes=32 time=22ms TTL=246
这很好,除了,如果我将 ping 超时设置为默认值(我相信是 5000 毫秒),我看不到任何超时,也从来没有看到报告的时间大于 30 毫秒。
事实上,我可以同时运行 2 个 ping 实例,一个带有 -w 120,一个带有默认超时,带有 -w 120 的实例将始终有间歇性超时,而另一个实例则没有,两个实例都赢了'不显示任何大于 30 毫秒的响应。
有没有人解释为什么 ping 的超时时间比我指定的时间短得多?
编辑:
我开始认为 -w 参数根本不起作用,它肯定没有按照它所说的那样做。ping 命令的描述是:
-w timeout Timeout in milliseconds to wait for each reply.
那么为什么这不超时呢?
C:\Windows\System32>ping -w 10 google.com
Pinging google.com [66.58.255.29] with 32 bytes of data:
Reply from 66.58.255.29: bytes=32 time=46ms TTL=58
???
根据 MS 文档
“当为超时指定非常小的数字时,即使超时毫秒已经过去,也可以收到 Ping 回复。”
我只能根据我的测试和上面的陈述得出结论,Ping 中的超时值根本不是很准确,当设置为 120 毫秒时,您只会得到不可预测的结果。