TTL Brief
TTL是IP协议包中的一个值,它告诉网络路由器包在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。
例如,不正确的路由表可能导致包的无限循环。所以需要在包中设置这样一个值,包在每经过一个节点,将这个值减1,反复这样操作,最终可能造成两个结果:包在这个值还为正数的时候到达了目的地,或者是在经过一定数量的节点后,这个值减为了0。前者代表完成了一次正常的传输,后者代表包可能选择了一条非常长的路径甚至是进入了环路,这显然不是我们期望的,所以在这个值为0的时候,网络设备将不会再传递这个包而是直接将他抛弃,并发送一个通知给包的源地址,说这个包已死。
通过TTL值我们能得到什么 其实TTL值这个东西本身并代表不了什么,对于使用者来说,关心的问题应该是包是否到达了目的地而不是经过了几个节点后到达。但是TTL值还是可以得到有意思的信息的。
每个操作系统对TTL值得定义都不同,这个值甚至可以通过修改某些系统的网络参数来修改,例如Win2000默认为128,通过注册表也可以修改。而Linux大多定义为64。不过一般来说,很少有人会去修改自己机器的这个值的,这就给了我们机会可以通过ping的回显TTL来大体判断一台机器是什么操作系统。如你看到112,可能是初始128,跳了16个节点,或者是初始160,跳了48次。
不同的操作系统,它的TTL值默认值是不相同的。默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。
从PING命令的回显可以判断操作系统类型
就是使用PING命令来查看TTL值从而判断操作系统类型。详细如下:
TTL=128,这是WINNT/2K/XP。
TTL=32,这是WIN95/98/ME。
TTL=256,这是UNIX。
TTL=64,这是LINUX。
Changing the Time To Live (TTL) in windows
Try to modify the registry value DefaultTTL using the following steps:
1. Open Registry Editor (regedit.exe).
2. Navigate to the following registry
HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Services\Tcpip\Parameters.
3. In the right pane, add the following value:
Name: DefaultTTL
Type: REG_DWORD
Valid Range: 1-255
4. After that, please restart the computer and check the result.
Changing the Time To Live (TTL) in Linux
iptables -t mangle -A POSTROUTING -o eth0 -j TTL --ttl-set {Value_You_Wanna_2set}
阅读(2570) | 评论(0) | 转发(0) |