DNS:互联网的目录服务

DNS的主要任务

  • 一个分层的DNS服务器实现的分布式数据库
  • 一个使得主机能够查询分布式数据库的应用层协议

DNS是能够进行主机名到IP地址转换的目录服务。DNS协议运行在UDP之上,使用53号端口。

DNS提供的其他服务

  • 主机别名(host aliasing):应用程序可以通过调用DNS来获得主机别名对应的规范主机名(canonical hostname)和IP地址。
  • 邮件服务器别名(mail server aliasing):电子邮件应用程序可以调用DNS,对提供的主机名别名进行解析,获得主机的规范主机名和IP地址。

MX记录允许一个公司的邮件服务器和Web服务器使用相同(别名)的主机名。

  • 负载分配(load distribution):可以把一个IP地址集合与同一个规范主机名相联系。当发起DNS请求时,该服务器用整个集合进行响应,但在每个回答中循环这些地址次序。

DNS工作机理

集中式设计的问题:

  • 单点故障(a single point of failure):如果服务器崩溃,整个网络就会瘫痪。
  • 通信容量(traffic volume):单个DNS服务器处理所有DNS请求。
  • 远距离的集中式数据库(distant centralized database):单个DNS服务器不能可“临近”所有的查询客户。
  • 维护(maintenance):单个DNS服务器必须维护整个网络上所有主机的记录。

分布式、层次数据库

三种DNS服务器

  • 根DNS服务器:根服务器提供TLD服务器的IP地址。
  • 顶级域服务器:每个顶级域(如com,org,cn等),都有TLD服务器。TLD服务器提供权威DNS服务器的IP地址。
  • 权威DNS服务器:多数大学和大公司实现和维护自己的基本和辅助(备份)的权威DNS服务器。

本地DNS服务器:当主机发出DNS请求时,起着代理的作用,并将请求转发到DNS服务器层次结构中。

递归查询和迭代查询

假设主机thss.tsinghua.edu.cn想知道主机ss.xju.edu.cn的IP地址,同时两台主机的本地DNS服务器分别为dns.tsinghua.edu.cn和dns.xju.edu.cn,查询过程如下

  1. 主机thss.tsinghua.edu.cn向他的本地DNS服务器发送一个DNS查询报文。
  2. 本地DNS服务器将该报文转发到根DNS服务器。
  3. 根DNS服务器通过其cn前缀,向本地DNS服务器返回负责cn的TLD的IP地址列表。
  4. 本地DNS服务器再次向TLD服务器之一发送查询报文。
  5. TLD服务器通过通过edu.cn前缀,用权威DNS服务器的IP地址进行响应。
  6. 再次重复步骤4,得到xju.edu.cn的权威DNS服务器dns.xju.edu.cn的IP地址。
  7. 最后,本地DNS服务器直接向dns.xju.edu.cn发送查询报文。
  8. dns.xju.edu.cn用ss.xju.edu.cn的IP地址进行响应。

这个例子中,从thss.tsinghua.edu.cn到dns.tsinghua.edu.cn发出的查询是递归查询,因为该查询以自己的名义请求来获得该映射。后继的的几个查询时迭代查询,因为所有的回答都是直接返回给dns.tsinghua.edu.cn。

理论上讲,任何DNS查询既可以是迭代的也能是递归的

DNS记录

共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(Resource Record),RR是一个包含的4个字段的元组

(Name, Value, Type, TTL)

TTL是该记录的生存时间,决定了资源记录从缓存中删除的时间。

Type常见的四种类型

  • A:A记录提供了标准的主机名到IP地址的映射。
  • NS:NS记录用于沿着查询链来路由DNS查询。
  • CNAME:该记录能够向查询的主机提供一个主机名对应的规范主机名。
  • MX:MX记录允许邮件服务器主机名具有简单的别名。