DNS (Domain Name System) 是一个用于将主机名转换为 IP 地址的分布式数据库。
DNS 的作用
- 名字到 IP 地址的转换:主功能。
- 主机别名:规范名 (Canonical Name) 与别名。
- 邮件服务器别名。
- 负载分配:一个规范名对应多个 IP 地址(冗余服务器)。
为何不采用集中式 DNS?
- 单点故障风险。
- 通信量巨大。
- 维护困难。
- 不具有扩展性。 重点
层次域名空间
DNS 采用层次树状结构的命名方法。
- 根域名服务器:解析过程的起点。
- 顶级域名 (TLD) 服务器:负责
com,org,net,edu等及国家顶级域cn,uk等。 - 权威 DNS 服务器:负责组织内特定主机的解析。
- 本地 DNS 服务器:不属于等级结构,但作为代理将请求转发到等级结构中。 重点
缓存优化:顶级域服务器通常缓存在本地 DNS 服务器中,因此根服务器的访问频率实际上并不高。
域名解析过程
解析方式分为递归和迭代。
- 递归查询 (Recursive Query):
- 客户机将解析负担完全交给联系的名字服务器。
- 代价较高:给被联系的服务器带来沉重的负担。
- 迭代查询 (Iterative Query): 重点
- ” 我不知道该名字,但你可以询问这个服务器 ”。
- 服务器返回下一个该联系的 DNS 服务器地址。大多数情况下,本地服务器到根服务器的查询采用迭代查询。
- DNS 缓存:为了提高效率,DNS 服务器会缓存最近获得的映射,并在一段时间后超时失效。 重点
DNS 记录 (Resource Records, RR)
RR 格式为:(name, value, type, ttl)。
- Type=A:
name是主机名,value是 IP 地址。 - Type=NS:
name是域,value是该域权威服务器的主机名。 - Type=CNAME:
name是别名,value是规范主机名。 - Type=MX:
name是别名,value是邮件服务器的主机名。
DNS 协议
- 使用 UDP协议,端口号为 53。
- 报文格式:查询和回答报文具有相同的格式。
- 标识符:16 位,用于匹配查询和回答。
- 标志:指示查询/回答、是否希望递归、递归是否可用、回答是否权威。