
3.6 目录服务
DCE的目录服务的基本目的是:
(1)提供统一命名机制、名字服务。
(2)提供位置透明。
目录服务存在两个层次:提供信元目录服务(CDS)、信元间X.500全局目录服务(GDS)或Internet域名服务(DNS)。
DCE目录服务是按信元组织的。每一个信元目录服务(Cell Directory Service,CDS)记录着信元中资源的名称和属性。每一个资源都有一个惟一的名称,它由信元名和信元内所使用的名字组成。为了定义一个资源,目录服务需要一种定位信元的方法。系统支持两种机制:
(1)全局目录服务GDS(Global Directory Service)。
(2)域名系统DNS(Domain Name System)。
GDS是DCE的“亲生”信元定位机制,它使用X.500标准。由于许多DCE用户都使用了Internet,所以系统也支持Internet的标准命名系统DNS。虽然有一个惟一的资源定位系统是最好的选择,但是,出于多种原因,这种方法不可行。
图3-8显示了这些部件之间的关系。在图中可以看到,目录服务的另一个部件——全局目录代理GDA(Global Directory Agent),它主要被CDS用来与GDS和DNS进行交互。当CDS需要查找一个远程名称时,它会请求GDA来完成这项工作。这种设计使CDS与GDS、DNS中所使用的协议无关。与CDS和GDS一样,GDA也是通过使用上述的RPC来进行申请和返回结果的后台进程。

图3-8 CDS、GDS、GDA和DNS的关系图
3.6.1 名字
DCE中的每个资源都有一个独立的名字。所有名字的集合就构成了DCE的名字空间,每个名字最多可由五部分组成。
(1)前缀:它表示这个名字是全局的还是信元本地的。
(2)信元名:它既可以使用X.500符号,也可以使用DNS符号进行定义。
(3)名字:每一个命名实体都有一组用来对它进行说明的属性。DNS是Internet上的主机和其他资源的命名方案。
(4)连接类:它非常类似于UNIX系统中的一个安装点(Mount Point),它使得查询在文件系统或安全保证系统等不同命名系统之间必须进行转换。
(5)应用名:这是资源名字本身。
3.6.2 信元目录服务
CDS管理一个信元的所有名字。它们是分层管理的,虽然在UNIX系统中也存在符号链接(称为软连接)。
CDS由两个主要部件组成来实现。
(1)CDS服务器:是一个运行在服务器机器上的后台进程。它接收所有查询请求,在本地票据交换所中查找,最后返回相应的结果。
(2)CDS管理员:是一个运行在客户机上的后台进程。它的主要功能是截获客户机的请求。客户机申请查询目录中的数据就是通过CDS管理员完成的,它同时缓存当前的结果以供系统今后使用。由于CDS服务器定期广播自身所在的位置,所以CDS管理员可以知道它们的位置。
图3-9是客户机、CDS管理员及服务器之间交互的简单例子。为了查找一个名字,客户机对它的本地CDS管理员执行一个RPC调用,然后这个管理员就会查找它的缓存。如果它找到了结果就会立即返回响应,如图中的1→4所示。如果没有,它就会通过网络到CDS服务器执行RPC调用。在这种情况下,CDS服务器就会在它的票据交换所中找到所请求的名字,然后再返回给管理员,如图中的1→2,2→3,3→4。管理员在将结果返回给客户机之前,会先将结果进行缓存。

图3-9 客户机查找名字(在CDS中)
如果客户机查找的名字在已知的CDS服务器中没有找到,则按如图3-10所示的标记进行查找。在信元中有两个CDS服务器,但是管理员只知道一个出了错的服务器的位置,即S1。当这个CDS服务器发现它没有所需要的目录时,如图中的1→2→3→6,它就会查找根目录,以获得正确的CDS服务器链接,即S2。拥有正确的信息之后,管理员就可以重新进行尝试,同时在返回结果之前仍然对它进行缓存,如图中的1→4→5→6。

图3-10 客户机查找名字(不在CDS中)