我的VPS是DO的新加坡节点,用mtr测试延迟,发现使用tcp模式和使用ICMP模式测出的速度差别很大(同时测的,测了十多次,应该可以排除网络时延变化的影响)。
mtr --tcp模式:

mtr 默认方式(ICMP)

tcp模式比ICMP模式要慢50ms左右,求菊苣解答。
mtr的tcp/sctp模式是用“connect”函数来发包的,udp/icmp模式是自己填充的IP包。
https://github.com/traviscross/mtr/blob/master/net.c
我测试了几个网站,除了最后一跳,tcp和icmp得到的结果差不多,最后一跳tcp是icmp的2倍。系统是OSX 10.10.4,感觉最后一跳它计算了整个握手用的时间。
楼主的 mtr 是什么版本 第一次见有 --tcp 参数的MTR
可能是 TCP 慢启动的问题,目前还想不到别的原因
我发现 mac 系统才有这个参数,要么得自己编译源码
而且在本地测试发现没有不同 两边的时间都是差不多的
普通的ICMP是UDP吧
TCP要完成三次握手
原谅我是小白,涉及到发包原理的我不太懂,如果有不对的地方请指出勿喷
mtr 0.85以上就有。