ping 超时时间似乎比指定的时间要短?

ping 超时时间似乎比指定的时间要短?

我发现内置 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

???

答案1

根据 MS 文档

“当指定非常小的超时数字时,即使已经过了超时毫秒,也可以收到 Ping 回复。”

根据我的测试和上述陈述,我只能得出结论:Ping 中的超时值根本不太准确,当设置为 120 毫秒时,您将得到不可预测的结果。

相关内容