DNS 协议简介
dns(Domain Name System) 是一个全球化的分布式数据库系统, 用于存储域名和互联网 IP 地址的映射关系 dns 协议是计算机协议栈应用层中, 应用最广泛的协议之一用户每一次打开浏览器在互联网上遨游, 都伴随着 dns 协议的工作, 帮助我们定位互联网主机和资源
而作为程序开发者, 新项目新应用上线时, 如果需要申请新域名并进行配置和管理, 也要求我们对 dns 协议足够了解
DNS 工作原理
dns 系统主要分为权威 dns 和递归 dns
权威 dns
权威 dns 由域名解析服务商建设, 用于域名管理服务, 主要工作就是管理某个或多个特定域的 dns 解析工作一般较大的公司, 如百度阿里等等, 都维护自身的权威 dns 服务器小公司注册域名后, 往往由域名注册商提供 dns 解析服务
比如, 所有以 taobao.com 结尾的域名, 都由 taobao 权威 dns 来管理和解析当然, taobao.com 权威域名需要向上一级 com 注册
权威 dns 域名系统是有层级的树形结构, 每一层权威 dns 都需要向上一层注册:
(1) 最上层是根域名全球有 13 台根域名服务器, 遍布在各大洲
(2) 顶级域, 如 com,org,cn 等, 都需要向根域名服务注册
(3) 各国家机构公司等, 他们的二级域名需要向顶级域名服务商注册如 taobao.com,baidu.com 都需要向 com 注册
以上都是权威域名, 承担着特定域名的解析和管理工作
递归 dns
递归 dns 通常有网络服务提供商来建设通过迭代地向权威 dns 查询域名, 来获取 dns 解析结果个人主机在启动后会自动配置好本地 dns 服务器, 递归 dns 解析服务由本地 dns 服务器来提供
在 mac 上, dns 服务器记录在 / etc/resolv.conf 中可以用 unix * 中的 dig 命令来追踪 dns 解析过程
dns 查询实践
一, 使用 dig 命令
- // 详细追溯递归 dns 解析流程
- dig +trace www.taobao.com
- // 直接解析 dns
- dig www.taobao.com
- dig +trace www.taobao.com
(1) 向本地 dns 服务器查询, 本地 dns 服务器返回根服务器地址
(2) 向根域名服务器查询, 返回 com 域名服务器地址
(3) 向 com 权威服务器查询, 返回 taobao.com 权威域名服务器地址
(3) 向 taobao.com 权威域名服务器查询, www.taobao.com 的 CNAME 记录和 A 记录
至此, 拿到了 dns 系统解析的最终结果
在递归 dns 中, 先查询根域名, 在查询 com 域名, 再查询 taobao.com 域名, 逐层查询, 是谓递归查询
每一个权威 dns 均由多台服务器提供服务, 实际中还可以配置相关策略来决定具体选择哪一台进行查询如果域名配置多个 A 记录就可以进行简单的负载均衡
本地 dns 会缓存每次查询的中间结果, 加速 dns 查询, 并且会根据 TTL 决定域名缓存失效时间
DNS 记录分类
dns 服务器中的记录分为多种, 每一种有不同的作用, 常见的是 A 记录, CNAME 记录, MX 记录
A 记录: IP 地址记录, 记录指向具体的 ip 地址
CNAME: 主机别名记录, 记录指向另一个域名
MX: 邮件服务记录
NS: 域名服务器记录
DNS 劫持
dns 协议基于 udp 协议, 属于不可靠协议 GFW 屏蔽网站的原理就是劫持并篡改了 dns 报文
使用 dig 命令追踪 facebook.com 的解析结果
本来应该通过递归 dns 查询, 向 com,facebook.com 等权威服务器逐层查询, GFW 却直接劫持了向根服务器的查询, 返回了错误的 dns 解析结果, 导致网站打不开
来源: https://www.cnblogs.com/timco/p/8681659.html