TCP/IP中的TTL

原创 2012年03月21日 13:44:11

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来判断目的主机的操作系统还是有一定的依据的。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

msl、ttl及rtt的区别 TCP控制字段标志

http://wushank.blog.51cto.com/3489095/1135060 一、  msl、ttl及rtt的区别    1、 MSL 是Maximum Segm...

《TCP/IP详解 卷1:协议》 读书笔记 第五章 RARP:逆地址解析协议

第五章 RARP:逆地址解析协议1.引言具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址,而对于无盘机,则需要用RARP来获取IP地址。无盘系统的RARP的实现为从接口卡上读取硬件地址...

TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流

目前建立在TCP协议上的网络协议特别多,有telnet,ssh,有ftp,有http等等。这些协议又可以根据数据吞吐量来大致分成两大类:(1)交互数据类型,例如telnet,ssh,这种类型的协议在大...

TCP/IP详解学习笔记(6)-UDP协议

1.UDP简要介绍UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议。 2.UDP协议头2.1.UDP端...

TCP/IP详解学习笔记(10)-TCP连接的建立与中止

TCP是一个面向连接的协议,所以在连接双方发送数据之前,都需要首先建立一条连接。这和前面讲到的协议完全不同。前面讲的所有协议都只是发送数据而已,大多数都不关心发送的数据是不是送到,UDP尤其明显,从编...

TCP/IP详解学习笔记(12)-TCP的超时与重传

超时重传是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。1.超时超时时...

TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器

TCP一共有四个主要的定时器,前面已经讲到了一个--超时定时器--是TCP里面最复杂的一个,另外的三个是: 坚持定时器 保活定时器 2MSL定时器其中坚持定时器用于防止通告窗口为0以...

TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节

1.静态IP选路1.1.一个简单的路由表选路是IP层最重要的一个功能之一。前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由。这里就不重复了。首先来看看一个简单的系统路由...

TCP/IP详解学习笔记(8)-DNS域名系统

前面已经提到了访问一台机器要靠IP地址和MAC地址,其中,MAC地址可以通过ARP协议得到,所以这对用户是透明的,但是IP地址就不行,无论如何用户都需要用一个指定的IP来访问一台计算机,而IP地址又非...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)