DNS记录会有一个ttl值(time to live),单位是秒,意思是这个记录最大有效期是多少。操作系统缓存会参考ttl值,但是不完全等于ttl值,而浏览器DNS缓存的时间跟ttl值无关,每种浏览器都使用一个固定值。
DNS查询请求类型:
1、权威答复:权威答复是返回给客户的正向答复,并且设置了DNS消息中的权威位。此答复代表从具有权威的DNS服务器处发出。
2、正向答复:正向答复包含了匹配客户端解析请求的资源记录。
3、参考答复:参考答复只在DNS服务器工作在迭代模式下使用,包含了其他有助于客户端解析请求的信息。例如,当DNS服务器不能为客户端发起的解析请求找到某个匹配值时,则向DNS客户端发送参考回复,告诉它有助于解析请求的信息。
4、否定答复:否定答复指出权威服务器在解析客户端的请求时可能遇到了以下两种情况之一:
权威DNS服务器报告客户端查询的名字不存在;
权威DNS服务器报告存在对应的名字,但是不存在指定类型的资源记录。
DNS服务器解析返回IP分配策略与客户端对域名IP选择策略,无论正向答复还是否定答复,DNS客户端都将结果保存在自己的本地缓存中
浏览器缓存:
浏览器在获取网站域名的实际IP地址后会对其IP进行缓存,减少网络请求的损耗。每种浏览器都有一个固定的DNS缓存时间。
参考浏览器DNS缓存时间:
本地缓存:
每种操作系统都有自己的DNS缓存时间控制。
1、Windows DNS默认值是MaxCacheTTL,它的默认值是86400s,也就是一天。
2、MacOS遵循DNS协议中的TTL,根据各种网络协议不同对不同的域名采用不同的缓存时间策略。在IPv4包头中TTL是一个8 bit字段,它位于IPv4包的第9个字节。
参考本地DNS缓存时间:
在命令行执行nslookup指令可以看到一个域名对应的IP地址,并且可以帮助我们判断是否有DNS劫持。随便解析一个网站,比如
www.jd.com 应该返回的是正常的地址
然后再解析一个不存在的网站,比如123123.aaaa.com.cn如果返回的结果是
DNS request timed out.
timeout was 2 seconds.
那么证明你的DNS没有被劫持。
如果返回的结果是一个IP地址,比如说网通的返回地址是230.xxx.xxx.xxx,那么证明你的DNS被劫持了。
通过了解浏览器、本地缓存可以帮助我们更好的为用户服务。
1、大型的互联网公司都有IP流量监控,当发生网络故障或劫持时可以第一时间发现。
2、页面是我们与用户面对面沟通的渠道和方式,当我们的网页和服务呈现在用户面前时,我们要了解我们提供的服务是如何影响到用户的体验的,比如我们前端页面的JS、CSS等文件的动态版本号处理方式结合缓存是如何变化的,每次发版会对什么样的用户有影响,都需要严谨。
3、机房内部的各个应用程序服务,比如Zookeeper、Redis、RPC、DB在DNS缓存变化时,可能引起的网络抖动,是否会对用户请求造成影响,也是我们必须要注意的问题。
通俗点讲,应该是: 在自己的配置文件中直接写名了域名与主机对应关系并被授权管理该域时,可以认为这个dns是该域的权威dns。 相对的说,如果是从你的缓存中查找到的不是你自己配置文件中写明的对应关系,那么该dns对所查询的域就不是权威dns。欢迎分享,转载请注明来源:夏雨云
评论列表(0条)