我的VPS是DO的新加坡节点,用mtr测试延迟,发现使用tcp模式和使用ICMP模式测出的速度差别很大(同时测的,测了十多次,应该可以排除网络时延变化的影响)。
tcp模式比ICMP模式要慢50ms左右,求菊苣解答。
1
jsq2627 2015-07-16 19:06:54 +08:00
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,感觉最后一跳它计算了整个握手用的时间。 |
2
yingluck 2015-07-16 20:19:35 +08:00
楼主的 mtr 是什么版本 第一次见有 --tcp 参数的MTR
可能是 TCP 慢启动的问题,目前还想不到别的原因 |
3
yingluck 2015-07-16 20:43:36 +08:00
我发现 mac 系统才有这个参数,要么得自己编译源码
而且在本地测试发现没有不同 两边的时间都是差不多的 |
4
mytsing520 2015-07-17 00:33:31 +08:00
普通的ICMP是UDP吧
TCP要完成三次握手 原谅我是小白,涉及到发包原理的我不太懂,如果有不对的地方请指出勿喷 |