Windows
https://cdn.ipip.net/17mon/besttrace.exe
Linux
yum install mtr
全称My Tracerouter,将ping和tracerouter合并到一个程序的网络诊断工具。
traceroute默认使用udp数据包探测,mtr使用icmp报文探测,icmp在某些路由节点优先级比其他数据包低,测试数据可能低于实际结果。
mtr 域名,会动态运行打印结果
MTR发送50个包以上数据会比较更准确。
参数说明:
-r mtr会需要几秒钟进行输出报告,默认向目标主机发送10个ICMP包,输出结果。
-s 数据包大小 mtr发包大小,单位字节,负数表示数据包大小是随机数。
-c 发包数量 mtr发包数量指定
-n 不进行主机展示,不对IP地址做域名解析,只展示ip
报告说明:
Loss% 丢包率
Snt 发送次数
Last 最近一次返回时延
Avg 平均值
Best 最短时间
Wrst 最长时间
StDev 标准偏差
一般前几跳是本地网络节点,后几跳是服务商节点,中间跳数是中间节点【网络运营商】。
前几跳异常,排查本地。
中间几跳异常,联系运营商。
后几跳异常,联系服务提供商。
一般关注丢包率,发包数,往返时间,标准偏差。
丢包率>10%时,网络异常或者服务提供商人为限制ICMP发送速率。
平均时间结合标准偏差进行判断,标准偏差越小,说明越稳定,标准偏差越大,说明数据包在该节点响应时间相差大。
???表示超时,icmp速率限制或者网络故障导致。
注意:排查网络故障时,一般需要双向MTR进行结合判断。
示例
mtr -r -s 32 -c 50 qq.com
mtr -r -s 32 -c 10 qq.com

在50个包时,在第6,7跳【中间节点】有丢包,但是第8跳没丢包,第9跳【最后节点】有丢包,说明在中间节点有人为限制。
在10个包时,在第6-13跳有丢包,第14跳又完全没有丢包,通过上下对比,可以判断中间节点和最后节点都有人为的限制。
延迟时间通常取决于节点之间物理距离,线路质量,数据包速率限制。
通常不同位置,延迟随跳数增加而增加,从延迟猛增处可以估计可能属于不同地域或者是网络拥塞,速率限制,通过最后跳数可以判断节点是存在数据包速率限制的,
mtr -r -s 32 -c 50 www.baidu.com


同样,结合50个包和10个包的结果,可以看到中间节点和最后节点,有很多???,表示超时,同时丢包100%,都是有人为进行限制或者路由器没有正确配置导致。最后丢包0%说明数据还是正常到达目的主机的。

发送10个包时,从第4-5跳,可以看出到网络运营商延时高,且标准偏差较大,表明网络不稳定,可能是物理距离原因,也可能是上网高峰,也可能是电信运营商的原因。
traceroute在MacOS和Linux使用UDP包,在windows【tracert】上使用ICMP.
traceroute显示数据包到主机间的路径。
***表示超时,默认发送数据包大小40byte,数据包3个
TTL是生存时间值,是IP数据包在网络可以被转发的最大跳数,每经过一个路由器,TTL就-1,再转发,为0时,路由器丢弃收到的包,并返回ICMP time exceeded消息
原理:tracert从TTL为1开始进行不断增长发送数据包,通过TTL为0的超时通知进行记录,就得到路径上路由器地址。
tracert会选择一般应用程序不使用的端口号发包,到达目的地址后,目标主机返回ICMP port unreachable消息。
