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

查看 77|回复 4
作者:huangcjmail   
我理解 ttl = 系统设置的缺省值 - 路由跳数。也就是说 ttl 越大,离目标服务器的跳数越近。
但是今天我 ping 了 baidu 和 github ,结果如下,baidu ttl = 49 、github ttl = 113 。如果按照我的理解,那么到 github 服务器的跳数比 baidu 的少了很多,有点反直觉。目前猜测有 2 个可能:
[ol]
  • 事实就是如此,因为网络拓扑的原因,到 github 的跳数就是少。
  • 默认 ttl 缺省值会随着域名不同而不同。
    [/ol]
    有大佬知道这是为啥吗?
    ➜  ~ 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
    ➜  ~

    TTL, bytes, icmp_seq, ping

  • pagxir   
    明显是没理解。一个是 64 减到 49, 一个是从 128 减到 113 ,当然是无法直接比较
    Songxwn   
    默认的 TTL 是看系统是什么,64 128 255 都是常见的。然后每经过一个三层路由器转发就会减去 1 。 你 ping github ,应该就是 128-113 ,经过了 14 跳路由转发。
    TTL 和域名无关,是在 IP 报文里面。
    dier   
    很明显 ping baidu 的域名 TTL 值是 64 ,ping github 的域名 TTL 值是 128 ,两个算下来经过的跳数其实是一样的。
    huangcjmail
    OP
      
    @pagxir
    @Songxwn 我这是一台机器上 ping 的。默认 TTL 应该是一样的。不同机器是这个结果我就不会有这个疑问了😂
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部