ping 延迟较高,但通过 wifi 在本地网络上进行路由跟踪时没有问题

ping 延迟较高,但通过 wifi 在本地网络上进行路由跟踪时没有问题

我通过 Wi-Fi 连接到本地计算机,遇到了延迟,就像我在世界另一端的服务器上工作一样。ping 显示:

$ ping imac.local
PING imac.local (192.168.0.38): 56 data bytes
64 bytes from 192.168.0.38: icmp_seq=0 ttl=64 time=4.961 ms
64 bytes from 192.168.0.38: icmp_seq=1 ttl=64 time=164.356 ms
64 bytes from 192.168.0.38: icmp_seq=2 ttl=64 time=184.635 ms
64 bytes from 192.168.0.38: icmp_seq=3 ttl=64 time=203.981 ms
64 bytes from 192.168.0.38: icmp_seq=4 ttl=64 time=128.627 ms
64 bytes from 192.168.0.38: icmp_seq=5 ttl=64 time=143.717 ms
64 bytes from 192.168.0.38: icmp_seq=6 ttl=64 time=112.190 ms
64 bytes from 192.168.0.38: icmp_seq=7 ttl=64 time=184.448 ms
64 bytes from 192.168.0.38: icmp_seq=8 ttl=64 time=205.589 ms
64 bytes from 192.168.0.38: icmp_seq=9 ttl=64 time=124.649 ms

然而 traceroute 的速度非常快:

$ traceroute imac.local
traceroute to imac.local (192.168.0.38), 64 hops max, 52 byte packets
 1  192.168.0.38 (192.168.0.38)  5.522 ms  4.412 ms  5.133 ms

这不是偶然,我运行了多次,但延迟都不超过 10ms。知道为什么 ping 和 traceroute 给出不同的延迟吗?

编辑:它一定是 OSX 特有的。一台 PC 笔记本电脑和 wifi 路由器给我的 ping 延迟不到 10ms,而对两台 osx 计算机进行 ping 时,延迟却很高。

答案1

首先,有很多因素会干扰无线信号,例如距离太远,信号阻塞等。

其次,ping和traceroute的工作原理不同。

Ping 向目的地发送 ICMP 回显请求消息,并报告是否收到所需的 ICMP 回显(ICMP 回显响应)。它是检查网络是否通畅或网络连接速度的命令。原理:利用机器 IP 地址在网络上的唯一性,向目标 IP 地址发送数据包。然后要求对方返回同样大小的数据包,以确定两台网络机器是否连通,以及延迟是多少。

主机使用traceroute命令时,首先会发送一个包含IP头和UDP包的数据包。在经过路由器时,路由器会将IP头和ICMP头中的IP头的TTL值减1。当ICMP的TTL值为0时,路由器会丢弃该数据报,并返回超时的ICMP数据包给源主机。源主机收到超时的ICMP数据包后,将前一个ICMP中IP头的TTL加1,继续发送IP数据报,直到目的地址收到TTL值为1的IP数据报。目的地址才丢弃该数据报并返回超时ICMP消息。此时源主机会解析ICMP中的UDP数据包。UDP数据包通常使用接收端无法使用的端口,因此目标主机会返回“端口不可达”ICMP消息。主要用于区分ICMP数据包是超时还是端口不可达。当源主机收到端口不可达的ICMP报文时,就知道路由跟踪完成了。

您可以参考这个关联了解详细信息。了解 ping 和 traceroute 的工作原理可以帮助您更好地理解您的问题。

相关内容