V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
wgjak47
V2EX  ›  Linux

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

  •  1
     
  •   wgjak47 · 2015-07-16 11:44:39 +08:00 · 6290 次点击
    这是一个创建于 3404 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    mtr --tcp模式:

    mtr_tcp

    mtr 默认方式(ICMP)

    mtr_ICMP

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

    第 1 条附言  ·  2015-07-16 15:10:57 +08:00
    不是是我的VPS,似乎mtr所有网站都这样。
    google(公司好像是搭了香港的代理直连google):
    ```shell
    mtr -r google.com
    ...
    11.|-- hkg08s14-in-f78.1e100.net 0.0% 10 10.8 11.0 10.6 11.7 0.0
    ```
    ```shell
    mtr -r google.com --tcp
    ...
    11.|-- hkg08s13-in-f46.1e100.net 10.0% 10 183.2 174.9 90.9 201.4 32.0
    ```
    baidu:
    ```shell
    mtr -r baidu.com --tcp
    ...
    15.|-- 123.125.114.144 70.0% 10 134.1 131.5 126.0 134.3 4.7
    ```
    ```shell
    mtr -r baidu.com
    ...
    15.|-- 123.125.114.144 20.0% 10 35.2 35.4 35.2 35.6 0.0

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

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

    而且在本地测试发现没有不同 两边的时间都是差不多的
    mytsing520
        4
    mytsing520  
       2015-07-17 00:33:31 +08:00
    普通的ICMP是UDP吧
    TCP要完成三次握手
    原谅我是小白,涉及到发包原理的我不太懂,如果有不对的地方请指出勿喷
    wgjak47
        5
    wgjak47  
    OP
       2015-07-17 09:35:39 +08:00   ❤️ 1
    @yingluck mtr 0.85以上就有。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2686 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 03:32 · PVG 11:32 · LAX 19:32 · JFK 22:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.