我对 Google 进行了一周的 ping 操作,每秒 10 次,我发现我的 ping 有 3 个或更多的“带”:
(中断是 ping 的短暂停止,峰值是我自己使用的。其他一切都“清晰”,没有“噪音”)。所有其他 ping 都在一条线上,效果很好。
这是因为 Google 网络服务器基础设施吗?它还很好地显示了用户使用互联网(或 Google?)的时间。
我记录了所有我发送的 ping,我还 ping 了其他几个服务器,这样我就可以将它们绘制到图表中,以便进行比较。我还 ping 了 TTL=2 的服务器,以获取网络使用情况的参考。如果需要,我还可以把日志放到 DropBox 或 SkyDrive 上(总共最多 6GB 的日志数据)。
系统:Win 7,CableModem 35 MBit 互联网
答案1
我期望任何服务器(不仅仅是 Google)都会出现“频带”,因为从调制解调器到远程服务器的跳数必然会随时间而变化。但如果这是网络重新路由,那么您就不会有明显的平行频带;早上 90% 的时间里,您可能会使用频带 #0,并“看到”频带 #0 和 #1,以及可能较弱的频带 #2,然后也许在下午,您会看到频带 #1 和 #2,以及频带 #3 的开始,依此类推。您会看到“连续阶梯式”频带:__--==_=--=_
。
这里,ping 时间显然以大致固定的间隔在几个范围内累积:-==--=====-
。
通过运行测试,我们可以清楚地看到 TTL 的变化:
64 bytes from 74.125.232.148: ttl=56 time=12.5 ms
64 bytes from 74.125.232.148: ttl=56 time=12.5 ms
64 bytes from 74.125.232.148: ttl=55 time=24.2 ms
64 bytes from 74.125.232.148: ttl=56 time=27.7 ms
64 bytes from 74.125.232.148: ttl=55 time=24.5 ms
64 bytes from 74.125.232.148: ttl=56 time=12.8 ms
与 hping 相同:
len=46 ip=74.125.232.148 ttl=55 port=80 flags=SA rtt=23.9 ms
len=46 ip=74.125.232.148 ttl=56 port=80 flags=SA rtt=11.7 ms
len=46 ip=74.125.232.148 ttl=55 port=80 flags=SA rtt=24.5 ms
len=46 ip=74.125.232.148 ttl=56 port=80 flags=SA rtt=11.8 ms
因此,显然从我到谷歌的路径长度会有所不同,占空比约为两个数据包,而且路径长度的 50%多跳一跳这需要大约 12ms。所以我看到两个相距约 12ms 的“波段”。
此外,如果我发送 TTL 为 8 的数据包,它们都会丢失;如果我使用 TTL 为 9,它们都会得到答复,其中大约 50% 的数据包有额外的跳数。所以我猜想 74.125.232.148 正在接收网络流量,然后重新生成它并将其转发到其后 2 或 3 跳的某个主机,该主机反过来会答复此流量。然后流量被路由回来,但不会重新生成,因此我们看到的是来自代理之外的主机的 TTL,而不是代理的 TTL。
关于 TTL 的注意事项
当我在评论中看到“TTL 为 2”时,我心里将其翻译为“跳数为 2”,但这是不可能的,因为从瑞士到澳大利亚的最短路线是七跳(通过地球同步卫星中继;往返时间约为一秒)。我给出的值(错误地称为 TTL)是跳数,为 15 到 20。
如果澳大利亚主机生成本机 TTL 为 64 的 PING 回复,则 ping 实用程序在到达时会显示 TTL 值大约为 45。如果它生成 TTL 为 128 的回复,则会生成 TTL 大约为 110 的报告。
答案2
我不会详细介绍 INTERNET 协议的工作原理,但与电路交换不同,互联网是面向数据包的,这意味着源和目标之间的路径永远不会固定。它需要多条唯一路径,并且根据拥塞和其他路由策略问题(尤其是与 QoS 相关的问题),路由器可能会更改/修改其路由信息以更改其到目标的路径。这就是您看到不同的 rrt 值的原因。