1、浏览器DNS缓存的时间与DNS服务器返回的TTL值无关。
2、Java Web 应用程序的 DNS 缓存由 JVM 的缓存策略控制
3、OS缓存会参考DNS服务器响应的TTL值,但并不完全等于TTL值。
文字
示意图:
DNS 查询请求类型
查询响应类型
DNS服务器对客户端请求的响应有很多种,常见的有以下四种:
权威回复:权威回复是返回给客户端的肯定回复,并且在 DNS 消息集中具有权威位。此回复来自权威 DNS 服务器;
转发回复:转发回复包含匹配客户端解析请求的资源记录;
参考回复:参考回复仅在 DNS 服务器以迭代模式运行时使用,并包含有助于客户端解析请求的其他信息。例如,当DNS服务器对客户端发起的解析请求找不到某个匹配值时,向DNS客户端发送一个参考回复谷歌浏览器清除DNS缓存的方法,告诉它有助于解析请求的信息;
否定回复:否定回复表示权威服务器在解析客户端请求时可能遇到了以下两种情况之一:
权威DNS服务器报告客户端查询的名称不存在;
权威DNS服务器报告对应名称存在,但不存在指定类型的资源记录。
无论回复是肯定的还是否定的,DNS 客户端都会将结果保存在自己的本地缓存中。
DNS的TTL指的是Time to live,也就是生存时间。
DNS服务器解析返回IP分配策略和客户端域名IP选择策略
简单测试,先解析163个域名
C:\Users\cmcc>nslookup www.163.com
服务器: ns4.zj.chinamobile.com
Address: 211.140.188.188
非权威应答:
名称: c01.i05.cmbzj.hadns.net
Addresses: 111.1.38.160
111.1.38.159
223.94.95.114
223.94.95.119
Aliases: www.163.com
www.163.com.cloudcdn.net
c01.i05.hacdn.net
可以看到域名返回多个IP。 DNS服务器会对IP返回有一些策略,以保证客户端访问服务器的负载均衡或速度保证,如IP随机返回、根据最近的IP返回给用户等。主要的控制策略是调整IP 在列表中首先返回。解释 dns 对负载平衡的支持:
一般客户端(如浏览器)选择DNS返回的IP取第一个IP,如果第一个IP失败,则走第二个IP。也有一些客户端在连接到第一个IP后直接失效。
浏览器DNS缓存各环节的DNS缓存介绍
浏览器DNS缓存的时长与DNS服务器返回的TTL值无关。
浏览器获取网站域名的实际IP地址后,会缓存其IP谷歌浏览器清除DNS缓存的方法,减少网络请求的丢失。每个浏览器都有固定的 DNS 缓存时间,过期时间为 1 分钟,在此期间不会重新请求 DNS。浏览器查看自己的DNS缓存时间比较方便,输入
在地址栏中
://net-/#dns
可以看到浏览器缓存
Java DNS 缓存
Java Web 应用程序的 DNS 缓存由 JVM 的缓存策略控制。当一个类第一次创建一个带有域名的对象时(例如 ),JVM 将存储域名,它从 DNS 获取的信息(例如 IP 地址)存储在 DNS 缓存中。下次类使用域名时,会直接从DNS缓存中获取需要的信息,无需访问DNS服务器。有两种方法可以更改此值:
java.security.Security.setProperty("networkaddress.cache.ttl", 10);
Java 级缓存:
任何值:
任何值:缓存一个for的of
零:不缓存
值为 ()。对于 , 这个
在设置 a 时生成。当一个
没有设置,在这个
是缓存 30 。
.cache..ttl=10
.cache.ttl=-1
本文档中的文字更清楚地解释了上述值。 cache..ttl 是指缓存 DNS 否定回复的时间。
操作系统 DNS 缓存
OS缓存会参考DNS服务器响应的TTL值,但并不完全等于TTL值。
测试,以知乎的DNS解析为例:
C:\windows\system32>ipconfig /displaydns
记录名称。 . . . . . . :
记录类型。 . . . . . . : 1
是时候活着了。 . . . . . . :323(秒)
数据长度。 . . . . . . : 4
部分。 . . . . . . . . : 答案
一个(主机)记录。 . . . : 60.28.215.71
记录名称。 . . . . . . :
记录类型。 . . . . . . : 1
是时候活着了。 . . . . . . : 323
数据长度。 . . . . . . : 4
部分。 . . . . . . . . : 答案
一个(主机)记录。 . . . : 60.28.215.70
通过域名解析命令获取ISP的域名服务中的TTL时间:
C:\Users\cmcc>nslookup -d www.zhihu.com
服务器:
:211.140.188.188
得到:
:
= 查询,id = 2,rcode =
标志:、想要、有用。
= 1, = 2, = 2, = 18
:
,类型 = A,类 = IN
:
->
= 60.28.215.71
ttl = 900(15 分钟)
->
= 60.28.215.70
ttl = 900(15 分钟)
:
->
=
ttl = 136(2 分 16 秒)
可以看到本地 ISP 服务器上的缓存时间是 15 分钟。即使本地操作系统缓存被刷新,它仍然存在于 ISP 上。
上次DNS缓存设置时间在注册表中的位置是/////
键名 t 是 DNS 缓存条目的最大 TTL 值。在 XP 和 2003 系统中,此项的名称是。
这在MSDN中有详细描述:
DNS域TTL与操作系统的DNS缓存策略的关系解释得很详细:
t 的值为 DWORD == 86400 = 1 天
如果 DNS 区域 TTL
如果 DNS 区域 TTL > t,则使用 t
以下命令系统可用:
ipconfig /displaydns 显示本机dns, 生存时间, 80-8000都有
ipconfig /flushdns 刷新windows dns缓存
适用于 600 (10 ) by 。是 10 的。
DNS
在 4.0 (Ice Cream) 和 中,DNS 既由 C 又由 C 控制,这意味着 DNS TTL 不能。在后面,是由 C 和 DNS TTLs 完成的。
IOS
根据官方文档,DNS缓存在iOS设备上每24小时刷新一次
其他系统的 DNS 相关命令
MAC
- 清除缓存
Linux
/etc/init.d/nscd 清除缓存
ISP DNS 缓存
ISP(电信运营商)缓存有些不可靠,有的缓存服务器(不多)会忽略网站DNS提供的TTL,自行设置更长的TTL,导致无法及时获取新IP顶级 DNS 已更新地址。
可以看出,在向Root DNS请求域名解析的过程中,影响DNS获取的层数太多。缓存是一把双刃剑,提高了DNS获取的速度,同时也影响了IP变化时DNS的无能。及时更新到最新。
评论留言