DNS (Domain Name System) 是一个用于将主机名转换为 IP 地址的分布式数据库。

DNS 的作用

  • 名字到 IP 地址的转换:主功能。
  • 主机别名:规范名 (Canonical Name) 与别名。
  • 邮件服务器别名
  • 负载分配:一个规范名对应多个 IP 地址(冗余服务器)。

为何不采用集中式 DNS?

  • 单点故障风险。
  • 通信量巨大。
  • 维护困难。
  • 不具有扩展性。 重点

层次域名空间

DNS 采用层次树状结构的命名方法。

  1. 根域名服务器:解析过程的起点。
  2. 顶级域名 (TLD) 服务器:负责 com, org, net, edu 等及国家顶级域 cn, uk 等。
  3. 权威 DNS 服务器:负责组织内特定主机的解析。
  4. 本地 DNS 服务器:不属于等级结构,但作为代理将请求转发到等级结构中。 重点

缓存优化:顶级域服务器通常缓存在本地 DNS 服务器中,因此根服务器的访问频率实际上并不高。

域名解析过程

解析方式分为递归和迭代。

  • 递归查询 (Recursive Query)
    • 客户机将解析负担完全交给联系的名字服务器。
    • 代价较高:给被联系的服务器带来沉重的负担。
  • 迭代查询 (Iterative Query)重点
    • ” 我不知道该名字,但你可以询问这个服务器 ”。
    • 服务器返回下一个该联系的 DNS 服务器地址。大多数情况下,本地服务器到根服务器的查询采用迭代查询。
  • DNS 缓存:为了提高效率,DNS 服务器会缓存最近获得的映射,并在一段时间后超时失效。 重点

DNS 记录 (Resource Records, RR)

RR 格式为:(name, value, type, ttl)

  • Type=Aname 是主机名,value 是 IP 地址。
  • Type=NSname 是域,value 是该域权威服务器的主机名。
  • Type=CNAMEname 是别名,value 是规范主机名。
  • Type=MXname 是别名,value 是邮件服务器的主机名。

DNS 协议

  • 使用 UDP协议,端口号为 53。
  • 报文格式:查询和回答报文具有相同的格式。
  • 标识符:16 位,用于匹配查询和回答。
  • 标志:指示查询/回答、是否希望递归、递归是否可用、回答是否权威。