关于TTL值
TTL值是生存时间(Time To Live)的缩写,IP包被路由器丢弃之前允许通过的最大网段数量。虽然意思是生存时间,但看这个解释是不是有点让人摸不清头脑?
好那么我们可以看看IP数据包,这个TTL值到底是指什么?结果我干了一件事就是ping了www.baidu.com的域名,我们来看看这个载图1。
从中我们可以知道,www.baidu.com网站应该是做了负载均衡,网站的响应域名是www.a.shifen.com而IP地址是183.232.231.172,这又看到了熟悉的TTL值,这个TTL是43,那么TTL值原来的值是多少?我们访问百度的服务器到底经过了多少个路由器呢?
(1)关于操作系统设置的TTL默认值
要想知道TTL原来的值是多少还是比较简单的,我目前知道两个办法。
第一种就是ping一下同一个局域网的某台主机,不要经过三层路由器的PC主机,然后看看这个TTL值,就可以清楚的知道这个系统默认设置的TTL值。可以看到截图TTL值是64,截图2。
第二种就是在window操作系统的注册表中,可以查到这个默认值。
TTL值的注册表位置 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters ,其中有个DefaultTTL的DWORD值,其数据就是默认的TTL值。可以看到载图TTL值是16进制的40,十进制就是64这就是系统默认的TTL值。那就已经回答了第一个问题TTL的原来的系统默认值的问题,当然这个系统的默认值是可以修改的,可以修改成多少,等下我们后面再说,截图3。
(2)访问某网站我们经过了多少路由器转发
要回答这个问题,我们开动一下脑子,我又使用tracert命令追踪到达www.baidu.com的路由,我们看看截图4,追踪的结果是20跳,基实从截图1数到截图3也可以得出43至64,这两个值间的距离是20。
(3)TTL值可以设置的范围是什么呢?
要回答这个问题,其实我们光看操作系统的设定值是不准确的,我们应该了解的是IP数据包,TTL值可以设成的值,那么我们抓一个ICMP数据包观察下?从数据包可以看到TTL值占用的长度是1个字节,也就是8bit,那这个值最大可以设置为255,也就是255跳,而win7系统的默认设置是64跳。
(4)比较值得意考的问题
就是在城域网或局域网内,这个TTL值可能会被相关的路由器设成最大值,这是我在测试中发现的,但是到了广域网TTL值都遵循操作系统的默认值来计算路由器的跳数值了,这是为什么,大家自己思考一下。收工!