DNS 是互联网的繁荣下隐藏在幕后的中坚力量, 为大家的网络请求提供便利并保驾护航, 学习并理解 DNS 的基础知识可以为工作及生活提供必要的便利;
本文主要梳理与 DNS 相关的常识;
DNS 的记录类型
A 记录
Address, 记录域名到 IPV4 地址;
AAAA 记录
记录域名到 IPV6 地址;
CNAME 记录
记录域名的别名;
表示重定向到某个域名的解析;
NS 记录
记录域名由哪台域名服务器来进行解析;
表示代理解析;
MX 记录
记录邮件地址到邮件服务器的地址;
TXT 记录
记录域名的注释说明信息;
DNS 服务器的类型
按解析的数据源分类
主服务器
在一个区中, 主 DNS 服务器从自己本机的数据文件中读取该区的 DNS 数据信息;
辅助服务器
辅助服务器是次级备份, 在根主服务器故障时提供冗余支持, 不直接参与解析 (主从架构), 其从区的主 DNS 服务器中读取该区的 DNS 数据信息;
当一个辅助 DNS 服务器启动时, 它需要与主 DNS 服务器通信, 并加载数据信息, 叫做区传送 (Zone Transfer);
镜像服务器
镜像服务器是主域名服务器的完整副本, 与主服务器实时同步, 确保数据一致性, 用于分散全球 DNS 的查询压力, 提升解析速度和可靠性;
按解析的域名分类
根服务器
对根域名 (.) 提供 DNS 服务的服务器;
当 local DNS 达到 TTL 缓存失效, 就需要向根服务器发起请求;
13 台 IPV4 根服务器的地理分布:
- 美国: 1 台主服务器, 9 台辅助服务器;
- 日本: 1 台辅助服务器;
- 英国: 1 台辅助服务器;
- 瑞典: 1 台辅助服务器;
中国发起的「雪人计划: 下一代互联网工程中心」, 旨在取代以美国为主导的 IPV4, 25 台 IPV6 根服务器的地理分布:
顶级服务器
对顶级域名提供 DNS 服务的服务器;
常用顶级域名举例:
- .com
- .net
- .org
- .edu
- .gov
- .top
国家顶级域名举例:
- .cn (中国顶级域名)
- .io (查戈斯群岛顶级域名)
- .cc (科科斯群岛顶级域名)
权威服务器
解析具体域名的服务器;
DNS 传输层协议
DNS 使用的端口号是 53
, 并且同时支持 UDP 和 TCP 协议:
- 客户端优先使用 UDP 发送 DNS 请求, 响应报文亦使用 UDP 封装:
- 当报文长度不超过 512 字节时, 服务器正常响应;
- 当报文长度超过 512 字节时, 服务器只返回前 512 字节 (UDP 报文的最大长度限制为 512 字节), 同时将删减标志位 (TC) 置位,表示报文进行了删减;DNS 响应的 TC 标志位
- 客户端接收响应的处理:
- 当客户端收到没有 TC 标志位的响应时, 正常消费;
- 当客户端收到 TC 置位的响应报文后, 采用 TCP 重新封装查询请求, DNS 服务器将使用 TCP 重新返回大于 512 字节的完整内容;
具体场景举例:
- 客户端向 DNS 服务器查询域名, 一般返回的内容都不超过 512 字节, 用 UDP 传输;
- 当向根服务器发起请求时, 为了让返回内容不超过 512 字节, 早期只能限制返回 9 个根服务器的 NS 记录 / A 记录, 后来因为协议的改进与精简, 可以返回 13 个 (为了节省报文长度, 每个服务器使用单个字母命名, 这就是 IPv4 根服务器从 A ~ M 命名的原因);
- 当向根服务器发起请求时, 为了让返回内容不超过 512 字节, 早期只能限制返回 9 个根服务器的 NS 记录 / A 记录, 后来因为协议的改进与精简, 可以返回 13 个 (为了节省报文长度, 每个服务器使用单个字母命名, 这就是 IPv4 根服务器从 A ~ M 命名的原因);
- 辅助 DNS 服务器会定时 (一般是 3 小时) 向主域名服务器进行查询以便了解数据是否有变动, 如有变动, 则会执行一次区域传送; 区域传送将使用 TCP, 因为数据同步传送的数据量比一个客户端的请求和应答的数据量要多得多;主从同步区域传送