时间:2016-02-28 12:09 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的电脑教程是网络协议方面的经验知识教程:TCP/IP中的TTL,下面是详细的分享!
TCP/IP中的TTL
TTL是IP协议包中的一个值,它告诉网络,数据包在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。TTL的初值通常是系统缺省值,是包头中的8位的域。TTL的最初设想是确定一个时间范围,超过此时间就把包丢弃。由于每个路由器都至少要把TTL域减一,TTL通常表示包在被丢弃前最多能经过的路由器个数。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。基本简介
TTL
TTL:(Time To Live ) 生存时间
指定数据包被路由器丢弃之前允许通过的网段数量。
TTL 是由发送主机设置的,以防止数据包不断在IP互联网络上永不终止地循环。转发IP数据包时,要求路由器至少将TTL 减小1。
使用PING时涉及到的ICMP报文类型
一个为ICMP请求回显(ICMP Echo Request)
一个为ICMP回显应答(ICMP Echo Reply)
TTL 字段值可以帮助我们识别操作系统类型。
UNIX 及类UNIX操作系统ICMP 回显应答的TTL 字段值为255
Compaq Tru64 5.0 ICMP 回显应答的TTL 字段值为64
WINXP-32bit 回显应答的TTL 字段值为64
微软Windows NT/2K/2003操作系统ICMP 回显应答的TTL 字段值为128
微软Windows 95 操作系统ICMP 回显应答的TTL 字段值为32
当然,返回的TTL值是相同的
但有些情况下有所特殊
LINUX Kernel 2.2.x & 2.4.x ICMP 回显应答的TTL 字段值为64
FreeBSD 4.1, 4.0, 3.4;
Sun Solaris 2.5.1, 2.6, 2.7, 2.8;
OpenBSD 2.6, 2.7,
NetBSD
HP UX 10.20
ICMP 回显应答的TTL 字段值为255
Windows 95/98/98SE
Windows ME
ICMP 回显应答的TTL 字段值为32
Windows NT4 WRKS
Windows NT4 Server
Windows 2000
Windows XP
ICMP 回显应答的TTL 字段值为128
这样,我们就可以通过这种方法来辨别操作系统
TTL值的注册表位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 其中有个DefaultTTL的DWORD值,其数据就是默认的TTL值了,我们可以修改,但不能大于十进制的255。
Ping中的TTL
举例来说:
以下是ping曙光博客的返回值:
C:\Documents and Settings\user>ping
Pinging [66.235.202.42] with 32 bytes of data:
Reply from 66.235.202.42: bytes=32 time=254ms TTL=51
Reply from 66.235.202.42: bytes=32 time=256ms TTL=51
Request timed out.
Reply from 66.235.202.42: bytes=32 time=260ms TTL=51
Ping statistics for 66.235.202.42:
Packets: Sent=4, Received=3, Lost=1 (25% loss),
Approximate round trip times in milli-seconds:
Minimum=254ms, Maximum=260ms, Average=256ms
从结果中可以看出曙光博客服务器的IP地址是:66.235.202.42,所用的时间是256ms等,那TTL等于51是什么意思呢?
TTL是生存时间的意思,就是说这个ping的数据包能在网络上存在多少时间。当对网络上的主机进行ping操作的时候,本地机器会发出一个数据包,数据包经过一定数量的路由器传送到目的主机,但是由于很多的原因,一些数据包不能正常传送到目的主机,那如果不给这些数据包一个生存时间的话,这些数据包会一直在网络上传送,导致网络开销的增大。当数据包传送到一个路由器之后,TTL就自动减1,如果减到0了还是没有传送到目的主机,那么就自动丢失。就像上面ping曙光博客的时候第三次那样,出现Request timed out的情况,增加TTL来减少网络资源的消耗。默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。(这个是从网络上找到的),曙光博客的目的主机是采用FreeBSD系统的(可能已经更换),在这里可能TTL值是64,而不是UNIX主机的255,所以在从这里到目的主机经过了64-51=13个路由。当不知道目的主机的操作系统的时候我们可以根据TTL来猜测,但是不一定100%准确,如果目的主机是windows,但是经过了比如75个路由器,那么TTL的返回值是128-75=53,那么你可能认为这个目的主机是Linux系统,但是一般不会经过那么多的路由器,所以通过TTL来判断目的主机的操作系统还是有一定的依据的
以上就是关于TCP/IP中的TTL的网络协议知识分享,更多电脑教程请移步到>>电脑教程。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
