查询期间发生的情况
本部分介绍当 32 位客户端在其自己的域中搜索名称时,网络如何处理查询。
当客户端应用程序调用 RpcNsBindingImportBegin 时,驻留在客户端计算机上的定位符将尝试满足此请求。 如果缓存中没有任何内容,它将 RPC 的请求转发到主定位符。 如果主定位符在其缓存中找不到任何内容,则会使用邮件槽广播将请求发送到域中的所有计算机。 如果存在匹配项,则每台计算机上的定位符将通过定向邮件槽进行响应。 (例如,如果该计算机上的某个进程导出了接口。) 将整理响应,并从客户端的进程定位符完成 RPC,该定位符将回复客户端进程本身。
在域中,客户端定位符在以下位置搜索主定位符:
- 在主域控制器上
- 在每个备份域控制器上
如果未找到匹配项,则客户端定位符将自身声明为主定位符。 因此,如果在本地无法满足查询,它将广播查询。
在工作组中,客户端定位符维护其定位符已广播的计算机的缓存。 它使用运行时间最长的一个作为主定位符。 如果该计算机不可用,则使用下一台广播时间最长的计算机,依此类比。 如果客户端需要主定位符,并且缓存为空,它会通过发送请求主定位符响应的特殊邮件槽广播来补充缓存。 如果没有响应,客户端定位器会将自身声明为主定位符,如果无法在本地满足这些查询,则会广播查询。
如果客户端应用程序是基于 16 位或基于 MS-DOS 的程序,则会更改。 在这种情况下,客户端计算机上没有运行定位符,Rpcns1.dll 或 Rpcnslm.rpc 包含用于查找主定位符的代码。 所有请求都直接转发到主定位器。
这些准则对客户端域中的名称有效,例如“/.:/ 的名称”entryname”。 如果客户端通过使用“/.../DOMAIN/entryname;”从另一个域请求名称,客户端定位器会将请求转发到指定的域,如果它没有答案,该域将广播该域。 如果域已关闭或实际上是工作组,则请求将失败。
注意
在名称服务中使用条目时,请记住以下事项:
- 客户端不能使用“/.../DOMAIN/entryname”语法在其自己的域中查找条目。 使用语法“/.:/entryname”。 但是,可以使用“/.../DOMAIN/entryname”查找另一个域中的条目。
- “/.../DOMAIN/entryname”中的域名必须为大写。 查找匹配项时,定位符区分大小写。
- 定位符条目名称也区分大小写,但不需要大写。
- 当客户端使用“/.:/entryname“语法,定位符不会搜索其他域中的条目,即使它们与登录域具有信任关系。
- 广播不会跨 LAN 段 (例如子网) 。 因此,在具有多个子网的组织中,定位符的用途有限。