技术解析

mtr 的 tcp 模式为什么比 ICMP 模式要慢?
0
2021-07-11 21:46:32
idczone

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

mtr --tcp模式:

mtr_tcp

mtr 默认方式(ICMP)

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以上就有。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服
请您留言

感谢您的关注,当前客服人员不在线,请填写一下您的信息,我们会尽快和您联系。

提交