我遇到了一些非常严重但间歇性的数据包丢失,我不确定是否需要新的电缆调制解调器或路由器,或者是否是 ISP。
今晚该问题一出现我就运行了 MTR(好吧,winmtr)(我当时正在玩游戏,它变得不稳定了),我用大约 200 个数据包得到了以下结果(我只运行了几秒钟,以免在它停止丢包时稀释百分比):
Host %Lost Sent| Recd
192.168.0.1 0 195 | 195
96.120.89.245 9 148 | 136
68.87.227.73 6 159 | 150
68.86.143.37 5 167 | 160
be-224-rar01.pinole.ca.sfba.comcast.net 4 171 | 165
be-298-ar01.santaclara.ca.sfba.comcast.net 4 171 | 165
be-33651-cr02.sunnyvale.ca.ibone.comcast.net 9 147 | 135
be-11025-cr01.9greatoaks.ca.ibone.comcast.net 7 156 | 146
be-12578-pe04.9greatoaks.ca.ibone.comcast.net 5 167 | 160
66.208.228.6 5 163 | 155
one.one.one.one 5 163 | 155
现在,be-* 地址显然是 ISP。但是,前几个数字分别丢失了 9%、6%、5%:这些也是康卡斯特的还是内部的?我查了一下,它们似乎归康卡斯特所有,但老实说,我不知道该如何下这个结论(它们看起来与清楚地comcast 地址)。
我对此的解释是,由于我收到了 195 个响应,所以我的 PC 的 195 次 ping 都到达了路由器 (192.168.0.1),但随后从路由器到外部主机的 ping 却不太成功。
我有一些额外的困惑,因为我认为随着列表的向下移动,该数字应该逐渐变小 - 如果我发送了 195 次 ping,但只有 148 次进入第二步,那么 159 次如何进入第三步,然后 167 次甚至 171 次如何进入第三步?(如果发生故障,它会发送多次吗?它有时会跳过一些步骤吗?)
答案1
但是,前几个数字分别让我损失了 9%、6%、5%:这些也是康卡斯特的还是内部的?我查了一下,它们似乎归康卡斯特所有,但老实说,我了解的还不足以得出这个结论(而且它们看起来与下面的康卡斯特地址非常不同)。
内部的对什么? 我猜您的意思是“我的 LAN 内部”,因为 ISP 的网络通常立即在 LAN 之外启动。
但由于 192.168.0.1 是您的路由器(其工作是将 LAN 与非 LAN 分离),因此它们必须在物理上超出它,这意味着它们不再是您的 LAN 内部,这意味着它们必须是康卡斯特网络的一部分。
最有可能的是,康卡斯特只是对区域客户连接和全国骨干网使用不同的地址范围。它们甚至可能由不同的人管理,例如,骨干网团队希望为其路由器设置反向 DNS,而其他人则认为没有必要。
我还有一些额外的困惑,因为我认为随着列表的向下移动,这个数字应该逐渐变小——如果我发送了 195 次 ping,但只有 148 次进入了第二步,那么 159 次是如何进入第三步的,然后 167 次甚至 171 次是如何进入第三步的?(如果失败,它会发送多个 ping 吗?它有时会跳过一些步骤吗?)
我认为你假设 mtr 只发送了 195 次 ping全部的,并且每个数据包都会记录其所经过的整个路径。但事实并非如此——尽管这种机制在技术上是存在的,但它从未被使用过,因为它不足以应对任何超过 8 跳的路径,许多 ISP 甚至在不知不觉中完全阻止了它。
相反,traceroute/MTR 依赖于路由器在收到 TTL(即跳数限制)已达到的数据包时能够回复错误消息已达到零,并且每个探测只能从单个路由器产生响应。
例如,如果你发送了一个 TTL=5 的数据包,它将悄悄经过前 4 跳,只会产生来自 5 跳之外的路由器的响应。但是,如果该数据包(或其响应)丢失,MTR 就无法知道它是“进入第二步”还是第三步或第四步——它只知道它丢失了某处在第 5 跳之前。
这意味着每跳都会发送单独的探测,TTL 递增。有 195 个数据包以 TTL=1 发送,加发送了 148 个数据包,TTL=2,加159 个数据包,TTL=3,依此类推。
(根据您的结果,我认为可以安全地假设数据包丢失发生在您的路由器和 ISP 之间的连接上。因此,仅计算通过该链接的数据包,即不包括第一行,您总共发送了 1612 个数据包并收到了 1527 个回复,平均丢失率为 5.3%。)