学习日志:DNS解析

DNS 负责将域名解析为 IP 地址

域名

域名是一个具有层次的结构,从上到下一次为根域名、顶级域名、二级域名、三级域名...

例如 www.xxx.com,www 为三级域名、xxx 为二级域名、com 为顶级域名,系统为用户做了兼容,域名末尾的根域名.一般不需要输入

在域名的每一层都会有一个域名服务器,如下图:

除此之外,还有电脑默认的本地域名服务器

迭代查询

域名缓存

在域名服务器解析的时候,使用缓存保存域名和 IP 地址的映射

计算机中 DNS 的记录也分成了两种缓存方式

  • 浏览器缓存:浏览器在获取网站域名的实际 IP 地址后会对其进行缓存,减少网络请求的损耗
  • 操作系统缓存:操作系统的缓存其实是用户自己配置的 hosts 文件 

查询过程

解析域名的过程如下:

  • 首先搜索浏览器的 DNS 缓存,缓存中维护一张域名与 IP 地址的对应表
  • 若没有命中,则继续搜索操作系统的 DNS 缓存
  • 若仍然没有命中,则操作系统将域名发送至本地域名服务器,本地域名服务器首先查看所要求查询的域名是不是自己能回答的,如果能回答,则直接给予回答,如是不能回答,再查看自己的 DNS 缓存,采用递归查询自己的 DNS 缓存,查找成功则返回结果
  • 若本地域名服务器的 DNS 缓存没有命中,则本地域名服务器向上级域名服务器进行迭代查询
  • 首先本地域名服务器向根域名服务器发起请求,根域名服务器返回顶级域名服务器的地址给本地服务器
  • 本地域名服务器拿到这个顶级域名服务器的地址后,就向其发起请求,获取权限域名服务器的地址 
  • 本地域名服务器根据权限域名服务器的地址向其发起请求,最终得到该域名对应的 IP 地址
  • 本地域名服务器将得到的 IP 地址返回给操作系统,同时自己将 IP 地址缓存起来
  • 操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起来
  • 至此,浏览器就得到了域名对应的 IP 地址,并将 IP 地址缓存起来

顶级域名服务器在收到 DNS 查询请求后,也是先查询自己的缓存,如果有所请求的 DNS 域名的记录项,则相接把对应的记录项返回给本地名称服务器,否则向本地名称服务器返回所请求的 DNS 域名中的二级域名所对应的二级域名服务器地址(对应的是权限域名服务器)。然后本地名称服务器继续按照前面介绍的方法一次次地向三级、四级域名服务器查询,直到最终的对应域名所在区域权威名称服务器返回到最终的记录给本地名称服务器)

流程如下图所示:

DNS 客户端和本地域名服务器是递归,而本地名称服务器和其他名称服务器之间是迭代。也就是下图中的(a)情形。

其实 DNS 递归查询又可以分 2 种情况,即

  1. DNS 客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代
  2. DNS 客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间也是递归

迭代与递归 

一、主机向本地域名服务器的查询一般都是采用递归查询

        所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以 DNS 客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。

        因此,递归查询返回的查询结果或者是所要查询的 IP 地址或者是报错,表示无法查询到所需的IP地址。

二、本地域名服务器向根域名服务器的查询的迭代查询

       迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。

        然后让本地服务器继续进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。

        顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。

        最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机

文章来源1

文章来源2

文章来源3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要解决DNS服务器解析故障,可以采取以下措施: 1. 检查网络连接:首先,确保服务器的网络连接正常。检查网络设备(例如路由器和交换机)是否正常工作,确保服务器能够正常连接到互联网。 2. 检查DNS服务器设置:检查DNS服务器的设置,确保其配置正确。确认DNS服务器的IP地址和域名正确,并确保没有任何错误的设置。 3. 检查配置文件和日志:检查DNS服务器的配置文件和日志,查找可能的问题。检查配置文件中的语法错误或不匹配的设置,并查看日志文件以获取关于故障的更多信息。 4. 重启DNS服务器:如果发现DNS服务器出现故障,尝试重新启动该服务器。有时候,重启可以解决临时的故障。 5. 检查防火墙和安全设置:确保防火墙和其他安全设置没有阻止DNS服务器的正常运行。检查防火墙规则和访问控制列表,确保DNS流量可以通过。 6. 更新软件和固件:确保DNS服务器、操作系统和相关软件的版本都是最新的。更新软件和固件可以修复潜在的漏洞和问题,提高解析的稳定性和性能。 7. 使用备用DNS服务器:如果主要的DNS服务器出现故障,可以使用备用的DNS服务器来提供解析服务。使用多个DNS服务器可以提高可用性,并减少单点故障的影响。 8. 联系网络运营商或DNS服务提供商:如果以上措施都无法解决问题,可能需要联系网络运营商或DNS服务提供商寻求更进一步的帮助。他们可能有更深入的了解和专业的解决措施来解决故障。 在解决DNS服务器解析故障时,应始终保持耐心和方法论。根据具体情况采取适当的措施并进行逐步排除,最终找到并解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值