DNS工作过程
- 在浏览器对某个域名发起请求时,需要先进行域名解析,解析为IP;
- 客户端通常不需要解析,会内置ip;省去解析过程;
- 浏览器通常会提供DNS缓存,如果能够直接获取ip,则直接使用;如果不能,则查询OS缓存;
- 当缓存都不存在对应的域名,则会查询本机host文件,用户可以在此配置固定的域名ip对;
- host也不存在,则会请求本地域名服务器,本地域名服务器本质是一个代理,也会具备缓存功能;
- 如果本地域名服务器也不存在此域名缓存,交由他来对上层的域名解析器发起解析请求;
- 本地域名服务器会递归地请求根域名服务器、顶级域名解析器、权威域名服务器;
- 首先请求根域名服务器,获取顶级域名解析器的地址,返回给本地域名服务器;
- 本地域名服务器再请求顶级域名解析器,获取权威域名服务器地址,通常就是baidu.com、bilibili.com的ip,返回给本地域名服务器;
- 本地域名服务器再请求对应的服务器,得到map.baidu.com、t.bilibili.com等域名,到此结束;
- 本地域名服务器拿到了IP,则缓存下来,返回给客户端;
迭代查询和递归查询
迭代查询:指本地域名服务器自己不断地请求,上层域名服务器;
递归查询:客户端请求本地域名服务器,由本地域名服务器代理,不断执行查询,只需要将最终结果返回给客户端;
DNS缓存
1. 浏览器DNS缓存
为了提高效率,浏览器会对解析完成的域名、ip进行缓存;但通常会设置1min左右过期时间,不同浏览器不同;
- 可以在浏览器解析域名:edge://net-internals/#dns
- 缓存错误或者ip更换但是缓存没有失效,则会导致无法请求对应的ip;
2. DNS服务器
操作系统,通常会提供DNS缓存服务;如windows可以通过以下命令:
- ipconfig /displaydns:展示DNS缓存;
- ipconfig /flushdns:清空DNS缓存;
域名服务器的种类
根域名服务器:由13个服务器进行管理;每个服务器拥有一个域名,以及多个节点;(13个域名服务器在全球有1000+的节点提供根域名解析服务)
- 由互联网管理机构建立;
- a.root-servers.net ~ m.root-servers.net
顶级域名服务器:com、cn、net等;
- 也叫二级域名,是在根域名服务器下注册的域名;
- 根域名服务器可以解析所有的二级域名;
权威域名服务器:由一些权威机构建立,为用户提供域名解析服务;
- 由顶级域名服务器管理;
本地域名服务器:负责转发DNS解析请求给上层域名服务器(权威域名服务器);只是一个查询代理,可以缓存一些解析结果;
- 可以是个人配置,也可以是局域网统一配置、也可以由网络服务商来提供;
- 电脑上配置公共DNS:如114.114.114.114、8.8.8.8
- 也可能是路由器IP,意思就是交给路由器向上层转发;