什么是TTL?
TTL是IP协议包中的一个值,指定数据报被路由器丢弃之前允许通过的网段数量。
在很多情况下数据包在一定时间内不能被传递到目的地。解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小1。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。
TTL值帮助我们大致的识别主机的操作系统类型。
UNIX 及类 UNIX 操作系统 ICMP 回显应答的 TTL 字段值为 255
Compaq Tru64 5.0 ICMP 回显应答的 TTL 字段值为 64
微软 Windows NT/2K操作系统 ICMP 回显应答的 TTL 字段值为 128
微软 Windows 95 操作系统 ICMP 回显应答的 TTL 字段值为 32
特殊情况:
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值?
TTL(Time- To-Live),简单的说它表示一条域名解析记录在dns服务器上缓存时间.当各地的dns服务器接受到解析请求时,就会向域名指定的DNS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。
合理设置域名TTL值:
一.增大TTL值,以节约域名解析时间。
通常情况下域名解析记录是很少更改的。我们可以通过增大域名记录的TTL值让记录在各地DNS服务器中缓存的时间加长,这样在更长的时间段内,我们访问这个网站时,本地ISP的DNS服务器就不需要向域名的NS服务器发出解析请求,而直接从本地缓存中返回域名解析记录。
TTL值是以秒为单位的,通常的默认值都是3600,也就是默认缓存1小时。我们可以根据实际需要把TTL值扩大,例如要缓存一天就设置成86400。
二.减小TTL值,减少更换空间时的不可访问时间。
更换域名空间时会对DNS记录进行修改,因为DNS记录缓存的问题,新的域名记录在有的地方可能生效了,但在有的地方可能等上一两天甚至更久才生效,只就导致有部分用户在一段时间内无法不可访问网站了。
那么TTL值到底应该设置成多大呢?
首先向大家介绍一下TTL值设置大一点和设置小一点的区别:较大的TTL值可以减少域名解析时间,加快网站访问速度。较小的TTL值,可以减少在更换空间修改域名解析后,网站不可访问的时间。
所以对于TTL值设置的建议为:网站刚建立的时候设置为半小时或一小时,方便调试及更换空间。等到稳定以后,TTL设置为一天(baidu,google等域名TTL都设置为一天)。
在实际使用中,关于TTL值的经验分享
首先,本人并没有发现TTL=1小时与TTL=1天,网站访问速度有明显区别。
其次,每次修改域名解析A记录后,虽然TTL设置的为1小时或者1天,但一般3-5分钟后域名解析修改就生效了。这种情况的原因可能是,本人所在的本地ISP的DNS服务器并没有完全遵守标准规范。
为了尽可能的减小这个各地的解析时间差,合理的做法是:
1.先查看域名当前的TTL值。
2.修改TTL值为可设定的最小值,建议为60秒。
3.等待一天,保证各地的DNS服务器缓存都过期并更新了记录。
4.设置修改DNS解析到新的记录,这个时候各地的DNS就能以最快的速度更新到新的记录。
5.确认各地的DNS已经更新完成后,再TTL值设置成常用的值(如: TTL=86400)。TTL=60还是太小了点。
这一切都能起作用的前提,是那些DNS服务器完全遵守这些标准和规范,否则NS服务器上怎么设置TTL都是白搭,但目前来看还没发现这么不讲规矩的DNS服务器。