网络-DNS协议及DNS域名解析过程

DNS协议

作用:提供 主机名和IP地址间的映射关系
名字到IP地址的解析是由若干个域名Server组成的, 域名Server程序在专设的结点上运行, 运行这些程序的机器成为域名服务器(Domain Server). 域名服务器的四种类型

  1. 根域名服务器: 最高层次的域名服务器。记录着所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。在因特网上共有13组根域名服务器;

  2. 顶级域名服务器: 负责管理在该顶级域名服务器注册的所有二级域名。当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。

  3. 权限域名服务器: 是负责一个区域的域名服务器。当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的DNS客户,下一步应当找哪一个权限域名服务器。

  4. 本地域名服务器: 当一个主机发出 DNS查询请求时,这个查询请求报文就发送给本地域名服务器。每一个因特网服务提供者ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器
    在这里插入图片描述

DNS基于什么协议

DNS占用53号端口,同时使用TCP和UDP协议。那么DNS在什么情况下使用这两种协议?

DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议。

DNS区域传输的时候使用TCP协议:

1.辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因为数据同步传送的数据量比一个请求应答的数据量要多得多。

2.TCP是一种可靠连接,保证了数据的准确性。

域名解析时使用UDP协议:

客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。

DNS解析过程

  1. 首先浏览器会检查浏览器自身的DNS缓存中,是否有域名对应的DNS缓存(chrome缓存1分钟,大概有1000条缓存),没有的话进入第二步,否则解析完成
  2. 浏览器调用客户端一个称为解析器的库函数,将目的主机的域名作为参数传给解析器;
  3. 解析器通过网络向本地域名服务器53号端口发送一个以UDP数据报封装的 DNS 请求报文,询问与该域名对应的IP地址;
  4. 请求会在运营商的**DNS服务器(本地服务器)**上进行请求,如果找到对应的条目,且没有过期,则解析成功,否则进入第五步
  5. 运营商的DNS服务器,根据解析请求,迭代查询,首先找到根域名服务器的IP地址(这个DNS服务器内置13台根域DNS的IP地址),然后找到根域的DNS地址,发送请求
  6. 根域服务器收到请求后,根据域名,返回对应的顶级域的服务器ip地址,并返回给运营商DNS服务器
  7. 运营商DNS服务器接收到根域名服务器传回来的顶级域名服务器IP地址后,向顶级域名服务器发送请求
  8. 顶级域名服务器接收到请求后,返回该域名对应的权威域名服务器的ip地址,并返回给运行商DNS服务器
  9. 运营商DNS服务器获得权威域名服务器的响应信息后,返回给请求的主机,客户端解析器最终收到响应报文后,再将解析得到的IP地址返回给应用程序DNS解析完成。
    每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。可大大减轻根域名服务器的负荷,使因特网上的 DNS 查询请求和回答报文的数量大为减少。
    为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项。当权限域名服务器回答一个查询请求时,在响应报文中都指明绑定有效存在的时间值。

UDP协议

在这里插入图片描述
在这里插入图片描述

原文链接:https://blog.csdn.net/qq_35429629/article/details/104826462

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享