16,207
社区成员




MTR测试中间某点丢包100%,那么最后一跳的包是怎么收到的,不是中间已经全部丢失了嘛?
例如下图,中间已经出现多个100%丢包的点,但是最后一跳还是收到了8个包,loss记录为0%
这是什么原因呢,求解答!
答:
mtr 是ping和traceroute 两个工具集合,,如果你用过 tracert 应该会知道,有些段是禁ping的,那这时候就显示 * 或者 ? 之类,,
禁止ping,你自然就丢包了,这些丢包是由于icmp的保护机制造成的,并不代表真的丢包
只是人家有相关策略而已。
每字段的解释:
第一列:host显示的是IP地址和本机域名,这点和tracert很像;
第二列:loss%就是对应IP行的丢包率了(需要注意的是有些丢包是由于icmp的保护机制造成的,并不代表真的丢包);
第三列:snt 每秒发送数据包的数量,默认值是10,窝这里通过参数 -c来指定发送15个包;
第四列:Last显示的最近一次的返回时延;
第五列:Avg是平均值 这个应该是发送ping包的平均时延;
第六列:Best是最好或者说时延最短的;
第七列:Wrst是最差或者说时延最常的;
第八列:StDev是标准偏差,统计学名词,一种量度数据分布的分散程度标准,用以衡量数据值偏离算术平均值的程度。标准偏差越小,这些值偏离平均值就越少。
回:
那禁ping指的是这些点不回包,但是还会继续把包往后面传递是嘛?不然完全限制ICMP包的话,起点发送的包到这里就全部结束了吧
答:
我没回答你是完全限制啊。你看看你的最终目的地,就相当于当了某节点,有路由转发出去了,只是这节点人家禁止你ping过来,所以没回包,但你的最终目的包,有路由的话,就会继续转发出去。
所以日常我们是可以用 tracert 来辅助排查哪一段出了问题。
你可以查一下 tracert 的机制,,这个无论在 win 还是linux上都一样,都是网络层面的工具而已。
回:
恩恩,看了下tracertoute的原理,是通过接收ICMP-超时包,然后不断增加ttl值来实现探测到目的地址的链路详情的。
应该是中间这些节点限制了不返回ICMP-超时包给请求主机,但是正如您所说,应该不是完全限制ICMP报文,是可以通过路由转发出去的,也就是当ttl值增加后(暂时还没有验证出traceroute未接收到ICMP超时包是凭借什么判断继续增加ttl值的),到达这些点时ttl还不为0,可以通过路由继续向后传递。
谢谢解答!!
答:
嗯嗯,是也是 一个保护机制,不想把自己节点的IP地址暴露出去