当我从我的位置Ping到跟踪路由到facebook.com的最后三跳时 ,我得到的ICMP echo-reply数据包的TTL分别为58,57和56 。 问题的啤酒花是从我的机器的第六,第七和第八跳。
另一方面,对于在这三个跳跃期间到期的分组,ICMP超时消息的TTL具有合理的值:246,248,249。
现在, 返回path可能与正向path不一样,对于不同types的ICMP消息可能不一样。
但是,这种差异从何而来呢? 沿path的200跳周期 ? 或者使用低TTL生成ICMP echo-reply数据包(远低于255:这是否会发生?)?
正如用户kwaio所build议的那样,生成ICMP echo-request和echo-reply数据包时使用的默认(或普通)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的路由器签名” 。