V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
crc8
V2EX  ›  宽带症候群

TTL 为何有时是 51,有时是 49?

  •  
  •   crc8 · 97 天前 · 1736 次点击
    这是一个创建于 97 天前的主题,其中的信息可能已经有所发展或是发生改变。

    第一次
    64 bytes from 13.26.7.208: icmp_seq=4 ttl=51 time=168 ms
    64 bytes from 13.26.7.208: icmp_seq=5 ttl=51 time=168 ms
    64 bytes from 13.26.7.208: icmp_seq=6 ttl=51 time=173 ms
    64 bytes from 13.26.7.208: icmp_seq=7 ttl=51 time=168 ms

    第二次
    64 bytes from 13.26.7.208: icmp_seq=4 ttl=49 time=168 ms
    64 bytes from 13.26.7.208: icmp_seq=5 ttl=49 time=168 ms
    64 bytes from 13.26.7.208: icmp_seq=6 ttl=49 time=173 ms
    64 bytes from 13.26.7.208: icmp_seq=7 ttl=49 time=168 ms

    tracert 的结果总共是 13 跳

    得出的结果,客户端与服务端 均无改变。

    14 条回复    2024-08-22 18:11:38 +08:00
    liuliancao
        1
    liuliancao  
       97 天前
    64 每经过一个路由器就-1 ,有时候路由不只一条路
    hefish
        2
    hefish  
       97 天前   ❤️ 2
    tcp/ip 没仔细学啊。赶紧去重新学一遍。
    iijboom
        3
    iijboom  
       97 天前
    亲亲你可能在使用移动或者广电等宽带呢
    crc8
        4
    crc8  
    OP
       97 天前
    @hefish 请赐教,服务器是 ubuntu , 默认 TTL 是 64 ,ping 的 TTL 结果与 tracert 的跳数存在对应关系吗?比如 ping 的 TTL 为 51 ,则可计算到 tracert 的跳数应为 64-51=13 跳,如此,ping 的 TTL=49 时,跳数应为 15 跳,实际上我反复测试过一直是 13 跳,从未出现过 15 跳的情况。

    莫非 tracert 的结果跳数还可以主动隐藏起来?
    crc8
        5
    crc8  
    OP
       97 天前
    @iijboom 中国电信
    htfcuddles
        6
    htfcuddles  
       97 天前
    路由会有多条负载均衡的,跳数当然也会变,联通特别明显,最多时候有三四条。另外,有些路由会设置超时 ICMP 黑洞或者走不同路由,有些路由干脆不减 TTL 。
    tjiaming99
        7
    tjiaming99  
       97 天前
    1 、负载均衡
    2 、来回程不一致
    3 、多路径路由
    hefish
        8
    hefish  
       97 天前
    @crc8 这个就要问具体运营商了,traceroute 的 icmp 包和 ping 的 icmp 包不是同一种类型的,完全可以分流处理的。
    另外,windows 下自带的 tracert 是同时使用 icmp 和 udp 的,而 linux 和 mac 自带的 traceroute 好像是只用 udp 的。 我学 tcp/ip 的时候是这样了,过了十来年了,windows,linux,mac 都升级了好多版本了,不知道目前的情况是不是还是这样 。
    hefish
        9
    hefish  
       97 天前
    @hefish 啊,现在 linux 下是可以选择使用哪个协议的。icmp/ucp/tcp 都可以。默认情况下是 udp 。 这些是 man traceroute 时候查到的。win10 下的情况现在不清楚。
    crc8
        10
    crc8  
    OP
       96 天前
    @htfcuddles 是不是可以理解为 ping 结果中的 TTL 数字与 tracert 结果中的跳数,没有必然的联系?
    htfcuddles
        11
    htfcuddles  
       96 天前
    @crc8 #10 tracert 中 TTL 是按接收的 ICMP 包显示的,但有防不住些路由不遵守规则,经过时不减一
    crc8
        12
    crc8  
    OP
       96 天前
    @htfcuddles 即是说 tracert 结果中的跳数非 100%准确,ping 结果中的 TTL 是相对准确的?

    拿我这个案例来说,只能说明客户端与服务器之间经过 13-15 个路由器,而不能确定是某个数?
    htfcuddles
        13
    htfcuddles  
       96 天前
    @crc8 #12 如果不减 TTL 是一样的,你用 Linux 下的 traceroute 更容易发现多径路由,windows 下的不准确。
    crc8
        14
    crc8  
    OP
       96 天前
    @htfcuddles 刚用 Linux 与 windows 测试,ping TTL=49 都是 49 。tracert 跳数都是 14 跳。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4762 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 04:00 · PVG 12:00 · LAX 20:00 · JFK 23:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.