您的位置:首页 > 其它

通过返回的TTL值来判断系统类型

2017-01-18 15:37 274 查看
在使用Ping命令来判断网络状态的时候,通常都会看到TTL的具体数值,TTL是发送主机设置的,用来防止数据包不断在IP互联网上面永不终止地循环的一个值,它表示在网络层的数据包在被丢弃前最多能经过的路由器个数,TTL字段可以帮助我们识别操作系统类型,下面我们就来了解一下TTL的工作原理,以及如何通过TTL识别目标主机操作系统类型。

什么是TTLTTL(Time To Live,生存时间)是IP协议包中的一个值,当我们使用Ping命令进行网络连通测试或者是测试网速的时候,本地计算机会向目的主机发送数据包,但是有的数据包会因为一些特殊的原因不能正常传送到目的主机,如果没有设置TTL值的话,数据包会一直在网络上面传送,浪费网络资源。数据包在传送的时候至少会经过一个以上的路由器,当数据包经过一个路由器的时候,TTL就会自动减1,如果减到0了还是没有传送到目的主机,那么这个数据包就会自动丢失,这时路由器会发送一个ICMP报文给最初的发送者。举个例子,如果一个主机的TTL是64,那么当它经过64个路由器后还没有将数据包发送到目的主机的话,那么这个数据包就会自动丢弃。如何通过TTL来判断目的主机的操作系统类型不同的操作系统的默认TTL值是不同的, 所以我们可以通过TTL值来判断主机的操作系统,但是当用户修改了TTL值的时候,就会误导我们的判断,所以这种判断方式也不一定准确。下面是默认操作系统的TTL:WINDOWS NT/2000 TTL:128WINDOWS 95/98 TTL:32UNIX TTL:255LINUX TTL:64WIN7 TTL:64 我们先来看两个例子:
例1:D:\Documents and Settings\hx>ping 61.152.93.131Pinging 61.152.93.131 with 32 bytes of data:Reply from 61.152.93.131: bytes=32 time=21ms TTL=118Reply from 61.152.93.131: bytes=32 time=19ms TTL=118Reply from 61.152.93.131: bytes=32 time=18ms TTL=118Reply from 61.152.93.131: bytes=32 time=22ms TTL=118Ping statistics for 61.152.93.131:Packets: Sent = 4, Received = 4, Lost = 0 (0% lossApproximate round trip times in milli-seconds:Minimum = 18ms, Maximum = 22ms, Average = 20ms
例2:D:\Documents and Settings\hx>ping 61.152.104.40Pinging 61.152.104.40 with 32 bytes of data:Reply from 61.152.104.40: bytes=32 time=28ms TTL=54Reply from 61.152.104.40: bytes=32 time=18ms TTL=54Reply from 61.152.104.40: bytes=32 time=18ms TTL=54Reply from 61.152.104.40: bytes=32 time=13ms TTL=54Ping statistics for 61.152.104.40:Packets: Sent = 4, Received = 4, Lost = 0 (0% lossApproximate round trip times in milli-seconds:Minimum = 13ms, Maximum = 28ms, Average = 19ms 上面的两个例子中,例1里面的TTL值是118,比较接近128,所以我们可以初步判断这台机器的操作系统是Windows操作系统,128-118=10,所以它经过了10个路由器(不包含本机路由器)到达目的主机。在例2中我们可以看到TTL值是54,比较接近64,所以可以判断出这台机器使用的是Linux的操作系统,64-54=10,所以一共经过了10个路由器(不包含本机路由器)。有人也许会问为什么第二个例子中不认为它的TTL默认值是128,然后经过了74个路由器,所以128-74=54呢?首先,路由器在选择路径的时候会选择最佳的路由路径,当然,如果你想知道它经过了哪些路由器的话,可以使用cmd命令里面的tracert命令来查看,详情如下:
D:\Documents and Settings\hx>tracert 61.152.104.40Tracing route to 61.152.104.40 over a maximum of 30 hops1 13 ms 16 ms 9 ms 10.120.32.12 9 ms 9 ms 11 ms 219.233.244.1053 12 ms 10 ms 10 ms 219.233.238.1734 15 ms 15 ms 17 ms 219.233.238.135 14 ms 19 ms 19 ms 202.96.222.736 14 ms 17 ms 13 ms 202.96.222.1217 14 ms 15 ms 14 ms 61.152.81.868 15 ms 14 ms 13 ms 61.152.87.1629 16 ms 16 ms 28 ms 61.152.99.2610 12 ms 13 ms 18 ms 61.152.99.9411 14 ms 18 ms 16 ms 61.152.104.40Trace complete.
我们可以看到,如果不包含本机路由的话(第一个路由地址10.120.32.1为本机网络IP),数据包是经过了10个路由器,而不是前面所说的74个路由器。如何修改本机电脑上面的默认TTL值通过修改本机上的TTL值可以混淆***者的判断(当然,很少有用户会这么做)。TTL值在注册表的位置是:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters(通过在cmd命令里面输入:regedit,然后回车的方式可以打开注册表)。其中有个DefaultTTL的DWORD值,其数据就是默认的TTL值了,我们可以修改DefaultTTL里面的TTL默认值,但不能大于十进制的255。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  TTL
相关文章推荐