浏览器访问的DNS缓存机制,你需要知道的干货!

日期: 栏目:文章分享 浏览:1591 评论:0

===========================================

浏览器访问的DNS缓存机制

参考:////

===========================================

关于浏览器的DNS缓存机制,有一篇详细的文章描述://what---when-you--to-a-url/

简单来说,一条域名的DNS记录会在本地有两种缓存:浏览器缓存和操作系统(OS)缓存。

在浏览器中访问的时候,会优先访问浏览器缓存谷歌浏览器清除DNS缓存的方法,如果未命中则访问OS缓存,最后再访问DNS服务器(一般是ISP提供),然后DNS服务器会递归式的查找域名记录,然后返回。

DNS查询顺序:浏览器缓存→系统缓存→路由器缓存→ISP DNS 缓存→递归搜索

DNS记录会有一个TTL值(time to live),单位是秒,意思是这个记录最大有效期是多少。经过实验,OS缓存会参考TTL值,但是不完全等于TTL值,而浏览器DNS缓存的时间跟TTL值无关,每种浏览器都使用一个固定值。

谷歌浏览清除浏览记录_谷歌浏览器清除DNS缓存的方法_清除dns缓存没有用

经过测试,Mac下的DNS缓存时间是1分钟。下DNS缓存时间大约为10秒。

据说修改主机的Hosts文件,可以清除DNS缓存。为什么修改hosts文件之后,有时会立刻生效,有时却一直不生效呢?

其实原因很简单,Hosts修改的是OS的DNS缓存,而不是浏览器的DNS缓存:

例如:我00秒的时候使用访问过.hk,此时浏览器DNS缓存产生,然后我修改了hosts文件,将.hk指向本地127.0.0.1,然后在05秒的时候尝试再次访问这个地址,因为浏览器DNS缓存未过期,所以hosts修改无法体现出来。

另一种情况下,我很久都没有访问了,然后我修改了hosts文件,将其指向127.0.0.1,这时因为浏览器没有DNS缓存,所以会查询操作系统中的DNS缓存,结果此时hosts文件生效!

如何清除浏览器的DNS缓存呢?

1、

对每个域名会默认缓存60s。

://-urls/可以看到所有的配置界面。://dns或者://net-/#dns可以查看浏览器的dns缓存信息,点击“Clear host cache”+然后选择"clear cache"和 " flush ",可以清空的dns缓存。

谷歌浏览清除浏览记录_谷歌浏览器清除DNS缓存的方法_清除dns缓存没有用

2、

.:缓存的数量

.:dns缓存的时间

.:dns缓存的时间,设置为0表示不缓存

如果一个域名的DNS解析结果会有多个的话(A记录列表),浏览器是如何处理的呢?

浏览器会优先向第一个IP发起HTTP请求,如果不通,再向后面的IP发起HTTP请求。

有dns缓存功能谷歌浏览器清除DNS缓存的方法,但是默认缓存时间只有1分钟,可以通过修改该默认值加快DNS解析速度,方法如下:

打开一个新的窗口,地址栏输 入 about:,回车,进入设置界面。然后搜索 . ,把原来的60改成 6000(表示缓存6000秒),再搜索. 把默认的20改成1000(表示缓存1000条)。如果没 有上面两个项目,新建它们即可,新建条目类型为整数型。 当然也可以按照需要设置成其它的值。

但是dns缓存太久了也会出问题,比如有的网站ip换了,就无法访问了。

谷歌浏览器清除DNS缓存的方法_谷歌浏览清除浏览记录_清除dns缓存没有用

针对这样的问题,还可以安装一个 插件来开启或者 关闭dns cache功能,/zh-CN//addon/5914 。

IE解决方式:

禁用DNS缓存的方法,将下面内容保存为注册表文件,在运行写入注册表:

5.00

[\\\\\ ]

""=dword:

""=dword:

""=dword:

写入注册表以后IE将不再缓存DNS,我们对hosts便会立即生效,无需再重启浏览器。

谷歌浏览器清除DNS缓存的方法_清除dns缓存没有用_谷歌浏览清除浏览记录

如果需要恢复IE的DNS缓存,只需清楚我们之前写入的注册表内容。跟上面的方法一样:

5.00

[\\\\\ ]

""=-

""=-

""=-

================================

OS的TTL缓存

================================

不同的操作系统,它的TTL值是不相同的,默认情况下,Linux系统的TTL值为64或255, NT/2000/XP系统的TTL值为128, 98系统的TTL值为32,UNIX主机的TTL值为255。笔者单位使用的是 2000服务器,TTL值默认为128,如果将该值修改为255,那么局域网内的用户就会以为这个服务器是Linux系统或UNIX系统,那么他们就会针对Linux系统或UNIX系统来查找 2000服务器的安全漏洞,不过他们是不会找到什么安全漏洞的,这样一来,服务器就安全多了。

修改TTL值其实非常简单。通过注册表编辑器就可以实现,点击“开始→运行”,在“运行”对话框中输入“”命令并回车,弹出“注册表编辑器”对话框,展开“\\\\Tcpip\”,找到“”,将该值修改为十进制的“255”,重新启动服务器系统后即可。

操作系统下查看TTL时长:命令行执行 。目前Win查看是95s。

微软下如何清空dns

在微软下,你可以用命令 / ns来清空dns 缓存内容。

你也可以用命令 / 来查看dns缓存内容。

Mac OSX下如何清空dns缓存

在Mac OSX中,你可以用这个命令 - 来清空保留的缓存。

bash-2.05a$ -

标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。发布前请先查看评论规则:点我查看