第二章
2.5 DNS:因特网的目录服务
2.5.1 DNS 提供的服务
识别主机有两种方式:通过主机名或者 IP 地址。人们喜欢便于记忆的主机名标识方式,而
路由器喜欢定长的、有着层次结构的 IP 地址。那么我们就需要一种能进行主机名到 IP 地址
转换的目录服务,这就是域名系统(Domain Name System,DNS)的主要任务。
DNS 是:
① 一个由分层的 DNS 服务器(DNS server)实现的分布式数据库;
② 一个使得主机能够查询分布式数据库的应用层协议;
③ DNS 协议运行在 UDP 之上,使用 53 号端口。
除了进行主机名到 IP 地址的转换之外,DNS 还提供了一些重要的服务:
① 主机别名(host aliasing)。一个主机可能拥有一个或者多个别名。但一个主机只
有一个规范主机名(canonical hostname)。应用程序可以调用 DNS 来获得主机别
名对应的规范主机名以及主机的 IP 地址。
② 邮件服务器别名(mail server aliasing)。电子邮件应用程序可以调用 DNS,对提
供的邮件服务器别名进行解析,以获得该主机的规范主机名及其 IP 地址。
③ 负载分配(load distribuon)。DNS 也用于在冗余的服务器(如冗余的 Web 服务
器等)之间进行负载分配。
2.5.2 DNS 工作机理概述
当运行在用户主机上的某些应用程序(如 Web 浏览器或者邮件阅读器)需要将主机名转换
为 IP 地址,这些应用程序会调用 DNS 的客户端,并指明需要被转换的主机名。用户主机上
的 DNS 接收到后,向网络中发送一个 DNS 查询报文。所有的 DNS 请求和报文使用 UDP 数据
报经端口 53 发送。经过若干毫秒到若干秒的实验后,用户主机上的 DNS 接收到一个提供所
希望映射的 DNS 回答报文。这个映射结果被传递到调用 DNS 的应用程序上。
现如今,DNS 都使用分布式、层次数据库,因为集中式设计有许多层面上的问题,比如:
单点故障、通信容量、远距离集中式数据库、维护等,而且毫无扩展能力。