mtr 的 tcp 模式为什么比 ICMP 模式要慢?

2015-07-16 11:44:39 +08:00
 wgjak47

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

mtr --tcp模式:

mtr 默认方式(ICMP)

tcp模式比ICMP模式要慢50ms左右,求菊苣解答。

6300 次点击
所在节点    Linux
5 条回复
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,感觉最后一跳它计算了整个握手用的时间。
yingluck
2015-07-16 20:19:35 +08:00
楼主的 mtr 是什么版本 第一次见有 --tcp 参数的MTR

可能是 TCP 慢启动的问题,目前还想不到别的原因
yingluck
2015-07-16 20:43:36 +08:00
我发现 mac 系统才有这个参数,要么得自己编译源码

而且在本地测试发现没有不同 两边的时间都是差不多的
mytsing520
2015-07-17 00:33:31 +08:00
普通的ICMP是UDP吧
TCP要完成三次握手
原谅我是小白,涉及到发包原理的我不太懂,如果有不对的地方请指出勿喷
wgjak47
2015-07-17 09:35:39 +08:00
@yingluck mtr 0.85以上就有。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/206060

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX