TTL详解
什么是TTL
TTL(time to live)是IP协议包中的一个值,它告诉网络,数据包(ICMP)在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。
TTL的初值一般都是系统的缺省值,是IPV4报头的一个8bit字段。
注意:TTL与DNS TTL有区别。二者都是生存时间,但一个指ICMP包的转发次数(跳数),一个指域名解析信息在DNS中的存在时间。
功能特点
TTL是为了限制IP数据包在计算机网络中的存在时间,避免IP包在网络中的无限循环和收发,节省了网络资源,并且发送IP包的发送者能收到告警信息。
虽然TTL从字面上翻译,是可以存活的时间,但实际上TTL是IP数据包在计算机网络中可以转发的最大跳数。在网络中,数据包每过一个路由器,TTL值减1,直到TTL值为0的时候,路由器把数据包丢弃,并发送一个ICMP报文给最初的发送者。
如何通过TTL来判断目的主机的操作系统类型
不同的操作系统的默认TTL值是不同的, 所以我们可以通过TTL值来判断主机的操作系统,但是当用户修改了TTL值的时候,就会误导我们的判断,所以这种判断方式也不一定准确。下面是默认操作系统的TTL:
WINDOWS NT/2000 TTL:128
WINDOWS 95/98 TTL:32
UNIX TTL:255
LINUX TTL:64
WIN7 TTL:64
举个例子:
我们ping一个网址,按"win+R"键,输入cmd,打开运行窗口,输入"ping www.baidu.com",回车后,如图所示:
TTL值是57,比较接近64.所以可以判断出这台机器使用的是linux操作系统,64-57=7.所以一共经过7个路由器(不包含本机路由器)。路由器在选择路径的时候会选择最佳的路由路径,所以这就是为什么上面这个例子不认为它的TTL值默认是128的原因。
如何修改TTL值
通过修改本机上的TTL值可以混淆攻击者的判断(当然,很少有用户会这么做)。TTL值在注册表的位置是:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters(通过在cmd命令里面输入:regedit,然后回车的方式可以打开注册表),其中有个DefaultTTL的DWORD值。TTL的最大值是225,TTL的推荐值是64。windows系统修改后重启才生效。
TTL是什么意思这里算是比较全面的为大家总结了一下,其实更多的时候我们是指ping网速中的TTL数值,阅读完本文相信大家对TTL有着比较清楚的认识吧。