DNS(域名系统)解析
DNS解析器
DNS解析器是DNS查找的第一站,负责处理发出初始请求的客户端
最终会导致URL被转换为必要的IP地址
DNS查找
浏览器查找域名的IP地址。
浏览器DNS查找顺序一般是这样的:浏览器缓存→系统缓存→路由器缓存→ISP DNS 缓存→递归搜索。
-
浏览器缓存
不同的浏览器会存储各自一个固定时间,时长为2~30分钟不等 -
系统缓存
浏览器会做一个操作系统调用(windows里是gethostname) -
路由器缓存
浏览器将前面的查询请求发给路由器,它一般有自己的DNS缓存 -
若没有,检查ISP(网络服务提供商)有没有
每个ISP都会有自己的本地域名服务器,他会在url第一次访问时缓存该域名的指向 -
递归搜索
递归查询: 主机向本地域名服务器的查询
迭代查询: 本地域名服务器向根域名服务器的查询
递归搜索方式
- hosts文件:以静态映射的方式提供IP地址与主机名的对照表,类似ARP表
- 域:abc.com是一个域,它可以划分为多个区域,如abc.com和xyz.abc.com
递归查询
- 在hosts静态文件、DNS解析器缓存中查找某主机的ip地址
- 上一步无法找到,去DNS本地服务器(即域服务器)查找,其本质是去区域服务器、服务器缓存中查找
- 本地DNS服务器查不到就根据‘根提示文件’向负责顶级域‘.com’的DNS服务器查询
- ‘根DNS服务器’根据查询域名中的‘xyz.com’,再向xyz.com的区域服务器查询
- www.xyz.abc.com的DNS服务器直接解析该域名,将查询到的ip再原路返回给请求查询的主机
迭代查询
- 在hosts静态文件、DNS解析器缓存中查找某主机的ip地址
- 上一步无法找到,在DNS本地服务器(即域服务器)查找所有本层次的区域服务器
- 本地DNS服务器查不到就查询上一层次的所有区域服务器,以此类推直至根域名DNS服务器‘.’
- 到达根域名服务器后又向下查询,直至查到结果为止。
迭代查询与递归查询结合
- 在hosts静态文件、DNS解析器缓存中查找某主机的ip地址
- 上一步无法找到,去DNS本地服务器(即域服务器)查找,其本质是去区域服务器、服务器缓存中查找
- 本地DNS服务器查不到就根据‘根提示文件’向负责顶级域‘.com’的根DNS服务器查询
- 根DNS服务器直接将其区域DNS服务器的ip地址返回给本地服务器,而不用再向xyz.com的区域服务器查询
- 本地DNS服务器将结果返回给请求的主机
查询过程
- 主机先向其本地域名服务器进行递归查询,如果缓存中没有,继续下一步。
- 本地域名服务器采用迭代查询,先向一个根域名服务器查询。
- 根域名服务器告诉本地域名服务器,下一次查询的顶级域名服务器 dns.net。
- 本地域名服务器向顶级域名服务器 dns.net。
- 顶级域名服务器 dns.net,下一次应查询的权限域名服务器dns.xxsilence.net的IP地址。
- 本地域名服务器向权限域名服务器dns.xxsilence.net进行查询。
- 权限域名服务器dns.xxsilence.net告诉本地域名服务器,所查询的主机的IP地址。
- 本地域名服务器最后把查询结果告诉主机。
若有错误,希望大佬们指点指点,谢谢 ?