一个关于 ping 命令中, ttl 的疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
huangcjmail
V2EX    程序员

一个关于 ping 命令中, ttl 的疑问

  • nbsp;
  •   huangcjmail 2023-11-27 17:40:13 +08:00 2576 次点击
    这是一个创建于 734 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我理解 ttl = 系统设置的缺省值 - 路由跳数。也就是说 ttl 越大,离目标服务器的跳数越近。 但是今天我 ping 了 baidu 和 github ,结果如下,baidu ttl = 49 、github ttl = 113 。如果按照我的理解,那么到 github 服务器的跳数比 baidu 的少了很多,有点反直觉。目前猜测有 2 个可能:

    1. 事实就是如此,因为网络拓扑的原因,到 github 的跳数就是少。
    2. 默认 ttl 缺省值会随着域名不同而不同。

    有大佬知道这是为啥吗?

     ~ ping baidu.com PING baidu.com (39.156.66.10) 56(84) bytes of data. 64 bytes from baidu.com (39.156.66.10): icmp_seq=1 ttl=49 time=33.4 ms 64 bytes from baidu.com (39.156.66.10): icmp_seq=2 ttl=49 time=33.5 ms 64 bytes from baidu.com (39.156.66.10): icmp_seq=3 ttl=49 time=33.2 ms ^C --- baidu.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 33.238/33.385/33.513/0.239 ms ~ ~ ~ ~ ping github.com PING github.com (20.205.243.166) 56(84) bytes of data. 64 bytes from github.com (20.205.243.166): icmp_seq=1 ttl=113 time=80.5 ms 64 bytes from github.com (20.205.243.166): icmp_seq=2 ttl=113 time=79.9 ms 64 bytes from github.com (20.205.243.166): icmp_seq=3 ttl=113 time=79.7 ms 64 bytes from github.com (20.205.243.166): icmp_seq=4 ttl=113 time=80.2 ms ^C --- github.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3006ms rtt min/avg/max/mdev = 79.788/80.139/80.547/0.407 ms ~ 
    14 条回复    2023-11-28 11:33:04 +08:00
    pagxir
        1
    pagxir  
       2023-11-27 17:48:26 +08:00 via Android
    明显是没理解。一个是 64 减到 49, 一个是从 128 减到 113 ,当然是无法直接比较
    bigmomo
        2
    bigmomo  
       2023-11-27 17:50:16 +08:00
    默认的 TTL 是看系统是什么,64 128 255 都是常见的。然后每经过一个三层路由器转发就会减去 1 。 你 ping github ,应该就是 128-113 ,经过了 14 跳路由转发。

    TTL 和域名无关,是在 IP 报文里面。
    dier
        3
    dier  
       2023-11-27 17:54:29 +08:00
    很明显 ping baidu 的域名 TTL 值是 64 ,ping github 的域名 TTL 值是 128 ,两个算下来经过的跳数其实是一样的。
    huangcjmail
        4
    huangcjmail  
    OP
       2023-11-27 17:55:57 +08:00
    @pagxir
    @Songxwn 我这是一台机器上 ping 的。默认 TTL 应该是一样的。不同机器是这个结果我就不会有这个疑问了
    dier
        5
    dier  
       2023-11-27 17:56:43 +08:00   1
    另外,如果 30 跳都找不到目标的话基本上就通不了了。TTL 值的作用只是为了防止数据包一直在网络设备之间流转而设置的一个过期时间。
    dier
        6
    dier  
       2023-11-27 17:57:14 +08:00
    @huangcjmail 这个 TTL 值取决于目标服务器,不是取决于发起端
    huangcjmail
        7
    huangcjmail  
    OP
       2023-11-27 18:00:49 +08:00
    @dier 原来是这样
    storm666
        8
    storm666  
       2023-11-27 18:11:19 +08:00
    不同操作系统返回的 ttl 值不一样,例如 windows 通常是 128 ,linux 通常是 64 ,逐跳减 1 ,因此你可以通过返回的 ttl 值大概推断出目标主机的操作系统。
    xzl380
        9
    xzl380  
       2023-11-27 18:29:44 +08:00
    截图中显示的 TTL ,是 ICMP 回包的 TTL ,所以初始值可能不同。

    给楼主出个题,如何推断出目标回包初始的 TTL 值。
    虽然初始值有默认值,但是如果被修改过呢。
    lwjef
        10
    lwjef  
       2023-11-27 21:25:49 +08:00   1
    ping 114.114.114.114 可以加深 ttl 来自目标这个印象。
    mantouboji
        11
    mantouboji  
       2023-11-27 23:33:03 +08:00
    难道你不知道 traceroute 命令配合服用?
    huangcjmail
        12
    huangcjmail  
    OP
       2023-11-27 23:41:53 +08:00
    @mantouboji 提问之后确实 traceroute 了,显示跳数确实是在合理范围内,之前都忘记有这个命令了。主要还是没搞懂是服务端决定 TTL ,当时如果看到 traceroute 结果肯定更懵逼了。
    hxysnail
    &bsp;   13
    hxysnail  
       2023-11-28 08:54:30 +08:00
    ping 命令显示的 ICMP 回包的信息,回包是目标服务器发的,默认 TTL 是操作系统协议栈决定的,所以会有说差异。探测网络跳数,通常用 traceroute 或 mtr 命令。最后发两篇关于 ping 和 traceroute 命令原理的博客(自己写的)供大家参考一下:

    ping: https://fasionchan.com/network/icmp/ping/
    traceroute: https://fasionchan.com/network/icmp/traceroute/
    julyclyde
        14
    julyclyde  
       2023-11-28 11:33:04 +08:00
    @mantouboji traceroute 和这里的不一样
    ping ICMP ECHO 是由目标机器发的,TTL 是由它指定的
    而 traceroute 的 ICMP TTL exceed 消息是由中间路由回复的,这个回复在整个路径里“属于第几步”是由 traceroute 自己计算的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     851 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 19:29 PVG 03:29 LAX 11:29 JFK 14:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86