施工中...
概述
原理描述
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
流程如下
- 检查本地的 hosts 文件,如果有则直接获得地址,如果没有,继续下一步
- 检查主机的本地缓存,没有则进行下一步
- 向设置的DNS服务器查询,如果有则回应,没有则由DNS再向上查询,最终到根域 # 这一步没有测试过,只是个人见解。
Port Number
通常DNS查询采用UDP的53端口,万一没有查询到完整的信息,会以TCP53端口再次查询(这一步没验证过),DNS Server 启动daemon时会侦听TCP和UDP的53端口。
之前看文档有提到的需要区域传输的情况,也是需要用到TCP53端口的。
区域查询授权
挖坑待补...