【TCP/IP】9. 域名系统(DNS)
9. 域名系统(DNS)
- 9. 域名系统(DNS)
- 概述
- 9.1 命名机制与名字管理
- 9.1.1 命名机制分类
- 9.1.2 层次型命名的树形结构
- 9.2 因特网域名
- 9.2.1 域名结构
- 9.2.2 域与区域的区别
- 9.3 DNS 服务器
- 9.4 域名解析
- 9.4.1 解析类型
- 9.4.2 解析方式
- 9.4.3 解析效率优化
- 9.5 DNS 报文格式
- 9.5.1 首部字段(12 字节)
- 9.5.2 问题部分
- 9.5.3 回答 / 授权 / 附加部分
- 9.6 DNS 资源记录
- 9.7 DNS 配置及数据库文件
- 9.7.1 配置文件(named.conf)
- 9.7.2 Cache 文件(named.cache)
- 9.7.3 正向查询文件(如 named.hosts)
- 9.7.4 反向查询文件(如 named.rev)
- 本章要点
9. 域名系统(DNS)
概述
DNS(Domain Name System)是 TCP/IP 应用层的核心协议,用于实现主机名与 IP 地址的映射,解决 IP 地址(点分十进制)抽象、难记忆的问题。其核心作用是在三个层次的主机标识系统中(物理地址→IP 地址→主机名),实现高层主机名与中层 IP 地址的映射,与 ARP(IP→物理地址)共同构成完整的地址映射体系。
9.1 命名机制与名字管理
DNS 采用层次型命名机制,通过树形结构组织名字空间,实现主机名的全局唯一性、便于管理和映射。
9.1.1 命名机制分类
机制类型 | 特点 | 局限性 |
---|---|---|
无层次命名 | 主机名无结构,由中央机构集中管理,通过主机文件实现映射 | 不适合大规模网络,易冲突,管理效率低 |
层次型命名 | 名字空间呈树形结构,按管理机构层次划分,分散管理 | 保证唯一性,适应大规模网络,映射效率高 |
9.1.2 层次型命名的树形结构
- 根域:唯一的顶层节点,通常省略,如需显式表示则以 “.” 结尾。
- 节点标号:树中每个节点有唯一标号(由字母、数字、连字符组成,不超过 63 字节)。
- 管理方式:上层机构将子名字空间授权给下层机构管理,每层只需保证自身子节点标号唯一,即可确保全局唯一性。
9.2 因特网域名
域名是层次型命名机制的具体体现,由圆点 “.” 分隔的标号序列构成,反映树形结构中从叶节点到根节点的路径。
9.2.1 域名结构
- 完全合格域名(FQDN):包含从主机到根的完整标号序列,以 “.” 结尾(如
serv.njust.edu.cn.
)。 - 层次划分:从高到低依次为:
- 根域:顶层,无标号;
- 顶级域:分为三类:
- 通用顶级域名(gTLD):按组织类型划分,如
com
(商业)、org
(非盈利)、edu
(教育)、gov
(政府)等;新增biz
、info
、mobi
等。 - 国家代码顶级域名(ccTLD):按国家 / 地区划分,如
cn
(中国)、uk
(英国)、hk
(香港)等(2 个字母)。 - arpa 域:专用技术域,用于反向解析(
in-addr.arpa
对应 IPv4,ip6.arpa
对应 IPv6)。
- 通用顶级域名(gTLD):按组织类型划分,如
- 次级域(二级域):由顶级域授权,对应具体组织 / 机构(如
edu.cn
下的njust.edu.cn
)。 - 子域:次级域进一步划分的子空间(如
net.njust.edu.cn
)。 - 主机名:最底层,标识具体主机(如
serv
在serv.njust.edu.cn
中)。
9.2.2 域与区域的区别
- 域:树形结构中的完整子树(如
njust.edu.cn
)。 - 区域(Zone):DNS 服务器的管理单元,可是域的一部分或完整域(如
njust.edu.cn
的服务器可能只管理net.njust.edu.cn
子域)。
9.3 DNS 服务器
DNS 服务器是存储域名 - IP 映射信息、响应解析请求的核心设备,按功能分为三类:
服务器类型 | 功能 | 特点 |
---|---|---|
主名字服务器 | 存储区域文件的原始版本,负责区域信息的修改 | 拥有唯一可写的区域文件,是区域的权威源 |
次名字服务器 | 从主服务器复制区域文件(只读),通过 “区域传输” 同步更新 | 提供冗余,减轻主服务器负载,增强可靠性 |
惟高速缓存名字服务器 | 无区域文件,缓存解析结果,非授权响应 | 通过缓存加速解析,启动后逐步积累信息,依赖 TTL(生存时间)刷新缓存 |
9.4 域名解析
域名解析是根据主机名查询 IP(正向)或根据 IP 查询主机名(反向)的过程,通过 DNS 服务器与客户端的交互完成。
9.4.1 解析类型
- 正向解析:域名→IP 地址(或其他资源记录)。
- 反向解析:IP 地址→域名,通过
in-addr.arpa
域实现(IP 地址字节反转后拼接in-addr.arpa
,如202.119.80.126
→126.80.119.202.in-addr.arpa
)。
9.4.2 解析方式
- 递归解析:
- 客户端向服务器发送请求,服务器必须返回最终结果(成功或失败),无需客户端进一步操作。
- 适用于客户端解析器(如用户主机)。
- 反复解析:
- 服务器若无法解析,返回可能能解析的服务器地址,客户端需向新服务器重复请求,直至获得结果。
- 适用于服务器之间的解析(如本地服务器查询根服务器)。
9.4.3 解析效率优化
- 两步解析:先查本地服务器,失败再自顶向下查询根服务器,平衡效率与层次管理。
- 高速缓存:服务器缓存解析结果,标注 TTL(生存时间),过期后删除,减少重复查询。
- 缓存有效性:非授权结果需注明来源,客户端可选择向授权服务器验证;TTL 确保缓存及时更新。
9.5 DNS 报文格式
DNS 请求与响应报文格式相同,由首部、问题部分、回答部分、授权部分、附加信息部分组成。
9.5.1 首部字段(12 字节)
字段 | 长度(比特) | 含义 |
---|---|---|
标识 | 16 | 匹配请求与响应 |
标志 | 16 | 含多个子字段: - QR(1 比特):0 = 请求,1 = 响应; - OpCode(4 比特):0 = 标准查询,1 = 反向查询,2 = 服务器状态; - AA(1 比特):1 = 授权服务器; - TC(1 比特):1 = 报文被截断(超过 512 字节); - RD(1 比特):1 = 请求递归解析; - RA(1 比特):1 = 服务器支持递归; - rCode(4 比特):0 = 成功,3 = 域名不存在等 |
问题数 | 16 | 问题部分的记录数 |
回答数 | 16 | 回答部分的记录数(请求报文为 0) |
授权数 | 16 | 授权部分的记录数(请求报文为 0) |
附加数 | 16 | 附加信息部分的记录数(请求报文为 0) |
9.5.2 问题部分
由多个问题记录组成,格式为:
- 查询名:可变长,以 “长度 + 标号” 形式表示(如
serv.njust.edu.cn
→4serv5njust3edu2cn0
)。 - 查询类(16 比特):1 = 因特网(IN)。
- 查询类型(16 比特):指定查询的资源类型,如 A(IPv4)、AAAA(IPv6)、NS(名字服务器)等。
9.5.3 回答 / 授权 / 附加部分
由资源记录组成,格式为:
- 域名:可变长,支持压缩(以指针指向报文中重复域名,节省空间)。
- 类型(16 比特):同查询类型。
- 类(16 比特):同查询类。
- TTL(32 比特):缓存生存时间(秒)。
- 资源数据长度(16 比特):资源数据的字节数。
- 资源数据:根据类型不同,可为 IP 地址(A 记录)、域名(NS 记录)等。
9.6 DNS 资源记录
资源记录是 DNS 数据库的基本单元,存储域名与 IP(或其他信息)的映射,常用类型如下:
类型 | 代码 | 作用 | 语法示例 |
---|---|---|---|
A | 1 | 域名→IPv4 地址 | serv.njust.edu.cn. IN A 202.119.80.126 |
AAAA | 28 | 域名→IPv6 地址 | host IN AAAA 2001:db8::1 |
NS | 2 | 标识区域的授权服务器 | njust.edu.cn. IN NS serv.njust.edu.cn. |
SOA | 6 | 授权开始,定义区域主服务器及参数 | @ IN SOA serv.njust.edu.cn. hostmaster.njust.edu.cn. ( serial refresh retry expire TTL ) (@ 表示当前域) |
CNAME | 5 | 定义主机别名 | www IN CNAME serv.njust.edu.cn. (www 是serv 的别名) |
PTR | 12 | IP→域名(反向解析) | 126.80.119.202.in-addr.arpa. IN PTR serv.njust.edu.cn. |
MX | 15 | 邮件交换服务器,含优先级(值越小优先级越高) | njust.edu.cn. IN MX 10 msrv.njust.edu.cn. (优先级 10 的邮件服务器) |
9.7 DNS 配置及数据库文件
以 BIND(Berkeley Internet Name Daemon)软件为例,DNS 服务器配置依赖以下文件:
9.7.1 配置文件(named.conf)
定义服务器管理的区域、文件路径等,示例:
directory "/etc/db"; # 其他文件路径
};
zone "." { # 根域type hint; # 根服务器信息file "named.cache";
};
zone "njust.edu.cn" { # 主区域type master; # 主服务器file "named.hosts"; # 正向查询文件
};
zone "80.119.202.in-addr.arpa" { # 反向区域type master;file "named.rev"; # 反向查询文件
};
9.7.2 Cache 文件(named.cache)
存储根域名服务器信息,用于初始化解析,示例:
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4
# 其他根服务器记录...
9.7.3 正向查询文件(如 named.hosts)
存储域名→IP 映射,示例:
@ IN SOA serv.njust.edu.cn. hostmaster.njust.edu.cn. (1998030501 # serial(版本号)10800 # refresh(3小时,同步间隔)3600 # retry(1小时,重试间隔)604800 # expire(7天,过期时间)86400 # TTL(1天)
)
@ IN NS serv.njust.edu.cn. # 授权服务器
serv.njust.edu.cn. IN A 202.119.80.126 # 主机IP
www IN CNAME serv.njust.edu.cn. # 别名
njust.edu.cn. IN MX 10 msrv.njust.edu.cn. # 邮件服务器
9.7.4 反向查询文件(如 named.rev)
存储 IP→域名映射,示例(对应 202.119.80.0 网段):
80.119.202.in-addr.arpa. IN SOA serv.njust.edu.cn. hostmaster.njust.edu.cn. (1998030501 # serial10800 # refresh3600 # retry604800 # expire86400 # TTL
)
@ IN NS serv.njust.edu.cn.
126 IN PTR serv.njust.edu.cn. # 202.119.80.126→serv
127 IN PTR msrv.njust.edu.cn. # 202.119.80.127→msrv
本章要点
- DNS 采用层次型命名机制,通过树形结构组织域名空间,实现主机名的全局唯一性和分散管理。
- 域名由根域、顶级域(gTLD/ccTLD/arpa)、次级域、子域和主机名构成,FQDN 包含完整路径。
- DNS 服务器分主服务器(原始区域文件)、次服务器(复制同步)、惟高速缓存服务器(缓存解析结果),使用 UDP/TCP 的 53 号端口。
- 解析方式包括递归(服务器返回最终结果)和反复(客户端多次请求),反向解析通过
in-addr.arpa
域实现。 - DNS 报文含首部、问题、回答、授权、附加部分,资源记录是核心数据单元(如 A、NS、SOA、MX 等)。
- BIND 配置依赖 named.conf(区域定义)、cache 文件(根服务器)、正向 / 反向查询文件(映射记录)。