阿国运维网技术分享平台:桌面运维、网络运维、系统运维、服务器运维(及云服务器),精品软件分享、阿国网络、尽在北京运维网
在前期Window[文]s系统下ping命[章]令应用场景、参数及[来]优缺点分析文章中提[自]到了Ping命令返[阿]回的TTL值,今天[国]对其稍微扩展一下。[运]
TTL(Time To Live)是IP协[维]议包中的一个值,它[网]表示数据包在网络中[文]的生存时间或跳数限[章]制。TTL的初值通[来]常是系统缺省值,它[自]是IP包头中的8位[阿]的域。TTL的最初[国]设想是确定一个时间[运]范围,超过此时间就[维]把数据包丢弃。由于[网]每个路由器(或其他[文]工作在L3的网络设[章]备)都至少要把TT[来]L域减1,因此TT[自]L通常表示数据包在[阿]被丢弃前最多能经过[国]的路由器个数。当记[运]数到0时,路由器决[维]定丢弃该包,并发送[网]一个ICMP报文给[文]最初的发送者。
在Ping命令中,[章]TTL值可以帮助我[来]们了解数据包在网络[自]中的传输情况。具体[阿]来说,当我们执行P[国]ing命令时,会向[运]目标主机发送一个I[维]CMP回显请求数据[网]包,目标主机在接收[文]到该数据包后会返回[章]一个ICMP回显应[来]答数据包。在这个过[自]程中,每个数据包都[阿]会经过一定数量的路[国]由器进行转发,而每[运]经过一个路由器,T[维]TL值就会减1。
因此,通过观察Pi[网]ng命令返回的TT[文]L值,我们可以大致[章]判断出目标主机与我[来]们之间的路由器数量[自]或跳数。例如,如果[阿]Ping命令返回的[国]TTL值为64,那[运]么可以推断出数据包[维]在传输过程中经过了[网]初始TTL值(通常[文]为系统缺省值,如6[章]4、128、255[来]等)-64个路由器[自](或其他工作在L3[阿]的网络设备)。
TTL值也可以用于[国]推测目标主机的操作[运]系统类型。不同的操[维]作系统在处理ICM[网]P数据包时可能会设[文]置不同的TTL初始[章]值和递减规则。因此[来],通过观察Ping[自]命令返回的TTL值[阿]的变化规律,可以对[国]目标主机的操作系统[运]类型进行一定的推测[维]。以下是一些常见操[网]作系统的默认TTL[文]值及其对应的范围:[章]
Windows 7/8/10: TTL值通常为64[来],范围在50-64[自]之间。
Windows Vista/200[阿]0/XP: TTL值通常为12[国]8。
Linux: TTL值通常为64[运],范围在43-64[维]之间。
Unix/类Uni[网]x: TTL值通常为25[文]5。
Mac OS X: TTL值通常在54[章]-64之间。
Router/Sw[来]itch/Othe[自]r Network Hardware:[阿] TTL值通常在25[国]5左右,因为这些设[运]备通常不会减少TT[维]L值。
但需要注意的是,这[网]种推测方法并不是绝[文]对可靠的,因为有些[章]操作系统可能会模仿[来]其他操作系统的TT[自]L行为来进行伪装或[阿]隐藏。例如Wind[国]ows系列的系统可[运]以通过修改注册表以[维]下键值实现: