查看浏览器DNS缓存

概述:本文主要介绍如何在浏览器查看DNS缓存,同时罗列了DNS查询的一些顺序

[toc]

DNS 缓存与解析

DNS 缓存分类

1、浏览器缓存

浏览器会根据一定频率缓存DNS记录;

2、本地DNS缓存

如果浏览器缓存中找不到解析记录,就会去询问操作系统中的缓存;

3、本地HOSTS文件

HOSTS是记录域名与IP地址一一映射关系的本地文件,Windows系统中位于 C:\Windows\System32\drivers\etc

4、路由器DNS缓存

我们常用的路由器也带有自动缓存功能,路由器DNS被篡改会造成域名劫持,将访问网址定位到另外一个服务器;

5、递归服务器缓存

递归服务器在将解析结果告知客户端的同时,将记录缓存下来,当下次请求同一个域名时,直接会将记录返回,而无需再进行全球查询。

DNS 解析顺序

DNS解析顺序是 “先查缓存,再递归解析”,查询顺序为:浏览器缓存 -> 系统缓存 -> 路由器缓存 -> 递归服务器缓存 -> 递归查询

www.baidu.com 这个域名为例进行查询,具体流程如下:

1. 搜索浏览器自带的DNS缓存

当收到访问请求后,浏览器首先会查询浏览器自身的DNS缓存,这个缓存时间比较短(chrome://net-internals/#dns 这里可以查询缓存的dns记录),且只能容纳 1000条缓存,如果缓存中有对应条目,返回结果,解析到此结束。

在chrome打开 chrome://net-internals/#dns

如上所示,浏览器解析到了 www.baidu.com 的ip

2. 查询操作系统缓存和hosts本地文件

如果浏览器缓存中没有找到对应条目(ipconfig/displaydns可以查看),操作系统也会有一个域名解析的过程,浏览器会先搜索操作系统的DNS缓存中是否有这个域名解析记录,如果有返回结果,解析结束。

此外,电脑本地文件HOSTS中可以设定域名到IP地址的指向关系。如果HOSTS文件中保存有该域名的记录,浏览器会首先使用这个IP地址,并将其结果缓存下来,缓存时间同样受域名失效时间和缓存空间大小决定。

3. 查询路由器缓存

如果浏览器和操作系统中没有域名解析记录,就会查询路由器中的DNS缓存,如果路由器DNS缓存中有解析条目,直接返回结果,解析结束。

4. 递归解析服务器缓存

如果本机和路由器DNS缓存中没有该域名的解析记录,浏览器就会向递归服务器发起请求,如果递归服务器缓存有该域名解析条目,返回结果,解析结束。

5. 查询根域名服务器

如果递归服务器缓存中没有结果,就会委托递归服务器发起全球查询,首先递归服务器会向根域名服务器发起解析请求。根域名服务器告知.com顶级域名服务器地址。

6. 查询顶级域名服务器

递归服务器向.com顶级域名服务器发起DNS请求,.com顶级服务器告知example.com所属权威域名服务器地址。

7. 查询权威域名服务器

递归服务器向example.com的权威域名服务器地址发起请求,权威服务器告知www.example.com所对应的IP地址。

8. 返回解析结果

得到www.example.com的IP地址后,递归服务器将结果告知客户端,客户端对该IP地址发起访问。整个DNS解析流程到此结束。


查看浏览器DNS缓存
https://hodlyounger.github.io/B_Code/网络编程/DNS/【网络编程】查看浏览器DNS缓存/
作者
mingming
发布于
2023年10月27日
许可协议