有人的地方,就有江湖,有DNS的缓存

优采云 发布时间: 2021-06-09 03:49

  有人的地方,就有江湖,有DNS的缓存

  有人的地方就有江湖,有DNS的地方就有缓存。

  为了提高域名查询的效率,设计了域名缓存机制。访问某个网站并获取其IP后,会缓存该域名和IP。下次访问时,您无需再次请求域名。服务器获取IP,直接使用缓存中的IP,提高了响应速度。当然,缓存有一个有效的时间(即TTL值)。过了有效时间,如果再次请求网站,仍然需要先请求域名解析。

  目前除了传统的递归DNS服务器(如运营商的Local DNS、114dns、谷歌公共DNS等),在本地缓存计算机DNS记录的方式还有两种:浏览器缓存和操作系统(操作系统)缓存。在浏览器中访问时,会先访问浏览器缓存,如果错过则访问OS缓存,最后访问递归DNS服务器,然后递归DNS服务器递归查找域名记录并返回结果。那么浏览器 DNS 缓存和操作系统 DNS 缓存呢?

  浏览器DNS缓存:首先,浏览器DNS缓存时间与DNS服务器返回的TTL值无关。浏览器获取网站域名的实际IP地址后,会缓存其IP,以减少网络请求的丢失。每个浏览器都有固定的 DNS 缓存时间。例如Chrome的过期时间为1分钟,在此期间不会再次请求DNS。常用浏览器的DNS缓存时间如下: Chrome:为了加快访问速度,谷歌Chrome采用了预取DNS记录并在本地建立DNS缓存的方式来加快网站的连接速度在 Chrome 地址栏中输入 chrome://net-internals/#dns 可以查看各个域名的 DNS 缓存时间。默认情况下,Chrome 会将每个域名缓存 60 秒:

  

  

  Firefox:Firefox 也有 DNS 缓存功能,但默认缓存时间只有 1 分钟。您可以修改默认值以加快 DNS 解析速度。方法如下: 打开一个新窗口,在地址栏中输入about:config,回车,进入Set界面。然后搜索network.dnsCacheExpiration,将原来的60改为6000(表示缓存6000秒),然后搜索network.dnsCacheEntries,将默认的20改为1000(表示缓存1000个条目)。如果你没有以上两个项目,就创建它们,新项目类型为整数类型。当然,也可以根据需要设置为其他值。但是如果dns缓存过长,就会出现问题。例如,如果某些网站ip 更改,则无法访问它们。对于此类问题,您也可以安装firefox插件来开启或关闭dns缓存功能。

  以下是之前第三方测试过的不同浏览器的DNS缓存时间

  

  (来源链接:)

  操作系统DNS缓存:操作系统缓存会参考DNS服务器响应的TTL值,但并不完全等于TTL值。

  视窗:

  Windows系统默认开启DNS缓存服务,名为DNSClient,可以缓存一些常用的域名。

  

  ipconfig/displaydns-这个命令可以显示你电脑当前缓存的域名

  

  ipconfig/flushdns-这条记录可以帮你立即清除缓存的记录

  

  Linux:

  Linux系统的nscd服务可以实现DNS缓存的功能。 nscd会缓存三个服务passwd、group、hosts,所以会记录三个库,分别对应源/etc/passwd、/etc/hosts和/etc/resolv.conf,每个库保存两个缓存,一个是如果记录找到了,没有找到一份。每个缓存都有一个生存时间 (TTL)。它的作用是增加缓存,加速DNS等解析。配置文件是/etc/nscd.conf。 redhat或centos下该服务默认是关闭的,可以通过services nscd start打开。缓存 DB 文件位于 /var/db/nscd 下。可以通过nscd -g查看统计信息,这里有一些:

  

  也可以通过strings /var/db/nscd/hosts命令查看缓存文件

  

  清除缓存

  1. nscd -i passwd

  2. nscd -i 组

  3. nscd -i 主机

  除了上述方法外,重启nscd服务也可以达到清除缓存的目的。

  了解DNS缓存机制还可以帮助您判断DNS解析是否无效。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线