1第10章域名系统DNS域名系统是一种分级结构的基于域的命名方案和实现这种命名方案的分布式数据库,它主要用于将主机名和email地址映射到IP地址,在其他方面也有用途。简单地说,DNS的工作方式如下:为了将一个名字映射到一个IP地址,应用程序调用一个称为解析器的库例程,将名字作为参数传递进去;解析器将名字封装到一个UDP包中,发送给本地域名服务器;域名服务器查找映射表,将查到的IP地址封装到另一个UDP包中,发回给解析器;解析器再将IP地址返回给调用者。有了这个IP地址,应用程序就可以与目的方建立一个TCP连接或发送一个UDP包。2本章学习要点:•了解DNS的历史和背景•了解域名空间和资源记录•学习域名解析•了解域名服务器的操作•学习域名系统消息的格式•了解DNS高速缓存的重要性•学习DNS配置文件和资源记录格式•了解DNS存在的问题•了解动态DNS310.1DNS简介DNS(DomainNameSystem)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它主要是用来通过用户亲切而友好的名称代替枯燥而难记的IP地址以定位相应的计算机和相应服务。因此,要想让亲切而友好的名称能被网络所认识,则需要在名称和IP地址之间有一位“翻译官”,它能将相关的域名翻译成网络能接受的相应IP地址。410.2域名解析1.域名完全解析器2.域名stub解析器3.域名解析器操作10.3域名服务器域名系统是由相互通信的域名服务器来实现的。理解域名服务器如何工作的最简单方法是想象将它们放置在与命名等级对应的树结构中,其中根服务器知道解析每个顶级域的服务器,每个顶级域的服务器知道解析其所有二级子域的服务器,等等。但实际上命名等级与服务器树的关系并不是这么简单,服务器树没有几层,因为一个物理服务器可能含有大部分命名等级的所有信息,而且组织经常从它的所有子域中收集信息并存入一个服务器。10.4域名系统消息域名系统协议中的所有消息都使用一种统一的格式。这种格式如图10-4所示,这个消息帧被解析器发送到名称服务器。只有题头和问题部分用于形成查询。应答和/或查询转发使用相同的消息帧,但是要填入更多的部分(回答/权限/额外信息段)。10.5DNS高速缓存的重要性前面我们已经提到,大多数DNS服务器可以利用本地数据存储的形式(称为高速缓存),存储以前的名称查询结果。只有当服务器解析的名称或者地址不在高速缓存时,它才真正需要发出名称或地址解析的进一步查询。10.6DNS配置文件和资源记录格式回想DNS的来源,我们可以很容易地描述数据库文件的内容,该数据库组织DNS数据的方法是将HOSTS文件数据转换成对等的DNS数据,然后添加DNS本身使用的必要信息。它包括标识权限的源,处理邮件交换记录以及提供知名服务的信息。10.7DNS实用程序现实世界中的DNS应用程序具有两个主要的目的。第一个目的是为我们的用户提供名称解释,使他们能够得到其他网络提供的服务,另一个目的是提供权威的主机名称到IP的映射,使其他网络能够得到用户选择提供的所有服务,比如Web服务器、e-mail服务器,或者FTP服务器。这些服务的操作从机械观点来看是相同的,但是他们的管理通常存在很大的差异。10.8DNS存在的问题尽管DNS具有强大的功能和众多优势,但是它也存在一些缺陷。主要的缺陷是,对DNS数据库的正常修改要求由有资格的管理员——具有相应知识和具有区域文件必要访问权的人——直接操作DNS数据库文件,或者使用专用化工具(比如UNIX环境下的NSUPDATE)进行修改。10.9动态DNS(DDNS)动态域名系统(DynamicDomainNameSystem,DDNS)是一个定义域名系统扩展的协议,使得DNS服务器能够接受请求以动态地增加、更新以及删除DNS数据库中的表项。因为DDNS为已有的DNS服务器提供了一个功能超集,一个DDNS服务器能够同时服务静态域和动态域,这对于移植和总体DNS设计来说是受欢迎的特征。