DNS

436 阅读2分钟

施工中...

概述

原理描述

DNS的层次架构

下图是从《鸟哥的Linux私房菜服务器篇》拍的

13台根服务器的信息

服务器类型

主服务器:负责维护区域内域名与IP的映射关系
从服务器:从主服务器获取信息,Master/Slave架构中,从服务器必须是依赖主的工作的,配置也是同步的
缓存服务器:将经常查询的域名信息保存在服务器本地,提高查询效率。

常见的记录类型

A记录:域名与IP地址的对应
NS记录:用来指定域名由哪个DNS服务器来解析,通常会用 ns.abc.com 这样的格式来命名,也就是说用户申请了 abc.com 这个域名,可以做一个A记录 ns.abc.com 指向用户自己的dns服务器,然后在这个dns服务器上配置相关的A记录,例如 oa.abc.com erp.abc.com 。# 这部分还没有理解透彻,可能是错的
MX记录
CNAME记录
SOA记录

递归查询与迭代查询

递归:用户向DNS服务器请求,如果DNS服务器中存在查询结果(不见得一定是A记录),则直接返回,否则继续向该服务器配置的其他DNS服务器发起请求,并将返回的查询结果提交给用户。
迭代:DNS服务器收到请求时,不直接回复查询结果,而是告诉用户另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,直到查到结果。

DNS查询流程

以PC为例,查询 www.baidu.com 流程如下

  1. 检查本地的 hosts 文件,如果有则直接获得地址,如果没有,继续下一步
  2. 检查主机的本地缓存,没有则进行下一步
  3. 向设置的DNS服务器查询,如果有则回应,没有则由DNS再向上查询,最终到根域 # 这一步没有测试过,只是个人见解。

Port Number

通常DNS查询采用UDP的53端口,万一没有查询到完整的信息,会以TCP53端口再次查询(这一步没验证过),DNS Server 启动daemon时会侦听TCP和UDP的53端口。
之前看文档有提到的需要区域传输的情况,也是需要用到TCP53端口的。

区域查询授权

挖坑待补...

参考资料

域名服务器记录类型列表