DNS缓存不仅在操作系统中生成,而且在浏览器,应用程序和IPS网络运营商中生成。这些DNS缓存的位置以及如何清除它们将在下面详细说明。
1、浏览器的DNS缓存时间与DNS服务器返回的TTL值无关。

2、应用程序的DNS缓存由应用程序控制。以Java为例,Java Web应用程序的DNS缓存受JVM的缓存策略控制
3、操作系统缓存将引用DNS服务器响应的TTL值,但并不完全等于TTL值。
身体
:
DNS查询请求类型
查询响应类型
DNS服务器对客户请求的响应类型很多,常见的有四种:
权威答复:权威答复是返回给客户的肯定答复,并且设置了DNS消息中的权威位。此回复是从权威的DNS服务器发送的;
转发答复:转发答复包含与客户端的解析请求匹配的资源记录;
参考答复:参考答复仅在DNS服务器以迭代模式工作时使用,并且包含有助于客户端解决请求的其他信息。例如,当DNS服务器找不到与客户端发起的解析请求匹配的值时,它将向DNS客户端发送参考回复,告诉其帮助解决该请求;
否定答复:否定答复表示权威服务器在解析客户端的请求时可能会遇到以下两种情况之一:
权威DNS服务器报告客户端查询的名称不存在;
权威DNS服务器报告存在相应的名称,但是没有指定类型的资源记录。
无论响应是肯定的还是否定的,DNS客户端都将结果保存在其本地缓存中。
DNS的TTL是指生存时间,即生存时间。
DNS服务器解析并返回IP分配策略和客户端的域名IP选择策略
一个简单的测试,首先解析163个域名
?

C:\ Users \ cmcc> nslookup
服务器:
地址:211.140.188.188
非权威性答复:
名称:
地址:111.1.38.160
111.1.38.159
223.94.95.114
223.94.95.119
别名:
可以看出该域名返回了多个IP。 DNS服务器将对IP返回采取一些策略,以确保客户端访问服务器的负载平衡或速度保证,例如IP的随机返回,向用户返回最近的IP等。主要控制策略是调整列表中返回的第一个IP。 RFC1794解释了dns对负载平衡的支持:
一般客户端(例如浏览器)为DNS返回的IP选择第一个IP。如果第一个IP出现故障,则转到第二个IP。还有一些客户端在连接到第一个IP后立即失败。
每个链接中的DNS缓存介绍浏览器DNS缓存
浏览器的DNS缓存时间与DNS服务器返回的TTL值无关。
浏览器在获取网站域名的实际IP地址后将缓存其IP,以减少网络请求的丢失。每个浏览器都有固定的DNS缓存时间。 Chrome的到期时间为1分钟,并且在此期间内将不会再次请求DNS。 Chrome浏览器更方便地查看其DNS缓存时间,请在地址栏中输入
chrome:// net-internals /#dns
您可以看到浏览器的缓存
Java DNS缓存

Java Web应用程序的DNS缓存由JVM缓存策略控制。当InetAddress类首次使用某个域名(例如)创建InetAddress对象时,JVM将从DNS获取该域名及其名称。信息(例如IP地址)存储在DNS缓存中。当InetAddress类下次使用此域名时,它将直接从DNS缓存中获取所需的信息,而不必访问DNS服务器。更改此值有两种方法:
java.security.Security.setProperty("networkaddress.cache.ttl", 10);
用于成功查找的Java级名称查找缓存策略:
任何负值:永远缓存
任何正值:缓存地址的秒数
零:不缓存
默认值为永远(FOREVER)。出于安全原因,这
设置安全管理器后,将永久进行
缓存。当有安全感
未设置管理器,此实现中的默认行为
要缓存30秒。
networkaddress.cache.negative.ttl = 10
networkaddress.cache.ttl = -1
此文件中的文字清楚地解释了上述值。 cache.negative.ttl是指缓存DNS否定回复的时间。
OS DNS缓存
操作系统缓存将引用DNS服务器响应的TTL值,但并不完全等于TTL值。
测试,以Zhihu的DNS解析为例:
C:\windows\system32>ipconfig /displaydns
记录名称.......:

记录类型......:1
生存时间...:323(秒)
数据长度......:4
Part ...:答案
一条(主机)记录。...:60.28.215.71
记录名称.......:
记录类型......:1
生存时间...:323
数据长度......:4
Part ...:答案
一条(主机)记录。...:60.28.215.70
通过域名解析命令获取ISP域名服务中的TTL时间:
C:\Users\cmcc>nslookup -d www.zhihu.com
服务器:
地址:211.140.188.188
得到答案:
标题:
opcode = QUERY,id = 2,rcode = NOERROR
标头标志:响应,想要递归,递归有效。

问题= 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上仍然存在。
Windows
Windows 2003之前的注册表中DNS缓存设置时间的位置为HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services / Dnscache / Parameters
键名称为MaxCacheEntryTtlLimit,它是DNS缓存条目的最大TTL。在XP和2003系统中,此项的名称为MaxCacheTtl。
MSDN中有详细的介绍:
详细说明DNS域TTL与操作系统的DNS缓存策略之间的关系:
MaxCacheEntryTtlLimit的默认值为DWORD = 0x15180 = 86400秒= 1天
如果DNS区域为TTL
如果DNS区域为TTL> MaxCacheEntryTtlLimit,则使用MaxCacheEntryTtlLimit
以下命令可用于Windows系统:
?
ipconfig / displaydns显示本地dns,生存期为80-8000可用
ipconfig / flushdns刷新Windows dns缓存
Android
默认情况下,地址被缓存600秒(10分钟)。查找失败将被缓存10秒钟。
DNS缓存
在Android4.0(冰淇淋三明治)和更早的版本中,DNS缓存是由InetAddress和C库执行的,这意味着无法正确兑现DNS TTL。在以后的版本中,缓存仅由C库完成,并且DNS TTL被采用。
IOS
根据官方文档,iOS设备上的DNS缓存每24小时刷新一次
其他系统与DNS相关的命令
MAC
lookupd-flushcache清除缓存
Linux
/etc/init.d/nscd restart清除缓存
ISP DNS缓存
ISP(电信运营商)高速缓存不可靠,某些高速缓存服务器(数量不多)将忽略网站DNS提供的TTL,并自行设置更长的TTL,导致无法在以下情况下及时获取新IP:顶级DNS已更新地址。
可以看出,在从根DNS请求域名解析的过程中,有太多级别会影响DNS的获取。缓存是一把双刃剑,它提高了DNS的获取速度,并且还影响了IP更改时DNS的无法使用。更新到最新的时间。
本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/tongxingongju/article-345986-1.html
……