Answers:
TTL在通过路由器时会递减。这样可以确保如果数据包绕圈走动,它将最终死亡。
IP v4数据包的TTL字段是8位字段(255个十进制)。因此,一开始将它设置得很高并不重要,因为在一个格式正确的数据包中实际上它不可能太大(尽管有些东西可能接受格式错误的IP数据包)。
但是,如果某些东西增加了它,并且增加的步骤是循环的一部分,则数据包可能会一直绕圈走而不会达到零。随着时间的流逝(可能非常短,或者逐渐泄漏),包含该循环的系统中可能会堆积数据包,从而导致其过载。
有一个问题似乎错过了答案,但这纯粹是学术性的(因为互联网上似乎需要跳数):如果数据包通常由于TTL过期而无法到达其目的地,则增加它会允许数据包到达其目的地,但不会影响返回的数据包,并且它们将在到达您的网络之前过期。
从理论上讲,在IPv4下,生存时间以秒为单位,尽管每个通过数据报的主机都必须将TTL至少减少一个单位。实际上,TTL字段每跳一跳。为了反映这种做法,该字段在IPv6中被重命名为跳跃限制。
更新2:当有人更新了我的文章并引用了Wikipedia时,我认为最好参考RFC本身-http ://www.ietf.org/rfc/rfc791.txt-只需在其中搜索TTL即可,很好地解释它:
此字段指示允许数据报保留在Internet系统中的最长时间...处理数据报的每个模块都必须将TTL至少减少一个,即使它在不到一秒钟的时间内处理数据报
我知道只有一个程序可以使用更高的TTL值,即traceroute
。顾名思义,它通过修改TTL值来跟踪到目标主机的路由。标准最大跳数为20,但您可以增加该值。
每个处理数据包的路由器都会减小TTL值,直到数据包到达其目的地或TTL达到零并死亡。
正如其他人所说,如果存在负周期,则增加TTL可能会导致数据包永不消亡。通常,如果TTL值不够大,则尝试更大的TTL的逻辑可能应该由端到端客户端处理。
如果确定路由器不处于循环状态(树状拓扑),则理论上可以安全地增加TTL值。话虽如此,但允许的跳数超出标准范围,可能会使外部网络发生拥塞的可能性更大。如果内部和外部网络之间的路由器链较长,则只要没有周期,较大的TTL值可能会有所帮助。话虽如此,对于某人来说,向网络添加一条边并创建一个周期可能非常容易,因此从更大的TTL值开始,该数据包首先起源就更安全了。