从TTl值看“路由数”
网络通信
在网络中,一旦出现客户机无法正常访问服务器的情况,网管在排除客户机和服务器的自身故障外,通常会首先检测客户机发送的数据信息到达服务器经过了多少次路由中转(也就是我们通常说的“路由数”),然后才会具体检查数据转发的情况。因此在排查网络故障时,查找数据经过的路由数是非常关键的,如何知道路由数呢?其实很简单,通过Ping命令返回的TTL值就可以知道。
TTL全称“time to live”,中文意思就是存活时间,是指一个数据包在网络中的生存周期,网管可以通过它了解网络环境,辅助维护工作,通过TTL值我们可以粗略判断对方计算机使用的操作系统的类型,以及本机到达目标主机所经过的路由数。
举个简单的例子,当你要检查本机的网络连接情况时,通常会使用Ping命令给某个目标主机发送ICMP数据包。在本机中生成ICMP数据包时,系统就会给这个ICMP数据包初始化一个TTL值,如“128”,然后将这个ICMP数据包发送出去,遇到网络路由设备转发时,TTL值就会被减去“1”,最后到达目标主机,如果在转发过程中TTL值变成“0”,路由设备就会丢弃这个ICMP数据包。
TTL值在网络应用中很有用处,我们可以根据返回信息中的TTL值来推断你发送的数据包到达目标主机所经过的路由数。
例如,我们要根据Ping命令返回的TTL值,判断到达IP地址为“202.102.201.60”的目标主机所经过的路由数,在命令提示符下输入“Ping 202.102.201.60”命令,接着会显示信息“Reply from 202.102.201.60: bytes=32 time=15ms TTL=126”,可以看出返回的TTL值为“126”,与Windows NT/2000/XP主机的TTL值“128”最接近,因此可以推断出该主机类型可能为Windows NT/2000/XP中的一种,又因为“128-126=2”,所以我们可以得知数据到达该主机经过了两个路由。
小知识:不同的操作系统,它的TTL值也是不相同的。默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。TTL值每经过一个路由,该值就会减1,因此就可以利用这种特性来判断到达某个主机经过了多少个路由。