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缓存windows的步骤如下:
1、利用快捷键打开【运行窗口】,按住 win+r 或者点击开始,再点击运行打开;
2、在运行窗口中输入cmd,然后点击确定。
3、在打开的窗口中输入 ipconfig/flushdns 按回车键。
4、此时显示 “已成功刷新DNS解析缓存”
dns是domain name service的缩写,它的作用简单的说,可以理解为:将域名翻译成ip地址。互联网,或者服务器,是看不懂域名的,它们只懂IP地址,dns其实就是一个翻译,将服务器看不懂的语言翻译成它们看得懂的语言,这样用户在浏览器中输入域名,服务器就可以通过dns知道用户请求的是哪个网站,然后才将对应的网站内容返回给用户。
一般情况下,我们的电脑是不需要手动去清理DNS缓存的,不过有些时候,某些网站因域名DNS服务器地址变更,而我们的电脑还停留在历史访问的DNS缓存上,这样就会出现访问网站解析出错,需要手动去更新清除电脑DNS缓存。这样,当电脑重新访问某个存在DNS变更的网站时,能够重新获取到新的可用地址,从而可以正常访问。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)