ICMP echo-r​​eply数据包的TTL(-190)比ICMP超时数据包低得多

当我从我的位置Ping到跟踪路由到facebook.com的最后三跳时 ,我得到的ICMP echo-r​​eply数据包的TTL分别为58,57和56 。 问题的啤酒花是从我的机器的第六,第七和第八跳。

另一方面,对于在这三个跳跃期间到期的分组,ICMP超时消息TTL具有合理的值:246,248,249。

现在, 返回path可能与正向path不一样,对于不同types的ICMP消息可能不一样。

但是,这种差异从何而来呢? 沿path的200跳周期 ? 或者使用低TTL生成ICMP echo-r​​eply数据包(远低于255:这是否会发生?)?

正如用户kwaio所build议的那样,生成ICMP echo-r​​equestecho-r​​eply数据包时使用的默认(或普通)TTL值是64

在我的情况下,沿着我select的path的第一个路由器以TTL = 255(在源)回应回应消息,而最后一个路由器TTL = 64。

相反,在所有情况下,都会创buildICMP超时消息,TTL为255。

经过一番挖掘,我发现不同的厂商和不同的操作系统采用了不同的初始TTL来适应不同的协议:binbert.com/blog/2009/12/default-time-to-live-ttl-values

其中一个有趣的含义是,你可以通过让一个包到期并通过发送一个ping来识别给定路由器的制造者。 更多细节在这里: 基于TTL的Fingerprinting和MPLS和全文: “networking指纹识别:基于TTL的路由器签名” 。