首页 > 代码库 > TTL 生存时间介绍 (转)

TTL 生存时间介绍 (转)

TTL: (Time To Live)生存时间,是IP协议包中的一个值,它告诉网络路由器包在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。例如,不正确的路由表可能导致包的无限循环。一个解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。TTL的初值通常是系统缺省值,是包头中的8位的域。TTL的最初设想是确定一个时间范围,超过此时间就把包丢弃。由于每个路由器都至少要把TTL域减一,TTL通常表示包在被丢弃前最多能经过的路由器个数。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。 例如,以下数据表示数据经过7个路由器到达目的。
Pinging www.a.shifen.com [121.14.88.76] with 32 bytes of data:

Reply from 121.14.88.76: bytes=32 time=44ms TTL=57
Reply from 121.14.88.76: bytes=32 time=354ms TTL=57

Windows 95/98中TTL的缺省值为32。有人建议当到达一个节点比较困难时,把此值设为128。ping和tracerouter都使用TTL值以尝试到达给定的主机或跟踪到那个主机的路由。

traceroute把包的TTL值设得较小,使它在到达目的的路上被各个路由器连续的丢弃。发出包到受到返回的ICMP报文之间的时间用来计算从一个路由器到另一个路由器的时间。 

由于不同的操作系统的默认TTL值不同,因此有文章说可以通过返回的TTL值判断目标系统的类型,这是正确的,但不是TTL的功能,只是对TTL理解的一个应用。TTL的值可以修改。

有些特殊的、系统(如NIDS)会定义特殊的TTL值,以拒绝非法访问数据进入。我们在执行PING命令时可以用-i参数指定TTL值,大家可以将TTL设置为0,则该包将被立即丢弃。有时我们执行了一个PING 命令,在繁华时却繁华了另一个地址,并带有一个英语的提示(大致意思是TTL无效),则表示该包在到达目标之前(也就是到返回IP位置时),包所带的TTL已经为0了或小于下一网段许可通过的TTL值了,该包已经被路由丢弃了。以下是常见操作系统的默认TTL值。

TTL=32 Windows 9x/Me
TTL=64 LINUX
TTL=128 Windows 200x/XP
TTL=255 Unix

查看本机的TTL值 
开始-运行-输入cmd回车,在光标闪动的地方输入 ping 127.0.0.1然后回车就行了。

修改本机的TTL值 
打开注册表编辑器,展开“HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Tcpip/Parameters”,找到“DefaultTTL”,将该值修改为十进制的小于255的数字,如果没有“DefaultTTL”项,那么新建一个DWORD类型的“DefaultTTL”项并指定希望设置的值,然后重启机器就可以了。

TTL 生存时间介绍 (转)