PreviousNext

Partial Binding and the Endpoint Mapper

Binding handles imported by clients from the namespace normally contain only partial binding information. The exported binding information is sufficient to locate the DCE host daemon on the server's host (the machine the server resides on), but it does not yet include a specific endpoint (UDP or TCP port number) for the desired service on that host.

The reason for omitting dynamic endpoint information in exported binding handles is to avoid unnecessary multiplication of accesses to the namespace. Since dynamically generated endpoints are necessarily reassigned every time a server starts up, entering them into the namespace (and thus forcing CDS to propagate the new information throughout the various directory replicas) would greatly increase namespace housekeeping chores.

Thus, the last step in the binding process is obtaining an endpoint. The step is performed transparently as far as the client is concerned. It is accomplished by the endpoint mapper service of the DCE host daemon, dced, when the client makes its first call to the partially bound-to server. The endpoint mapper service manages its own private database of server endpoints for the host on which it is located. The endpoints are registered by the servers as part of their startup routine.

The binding information that accompanies a prospective client's first remote procedure call takes that call to the well-known endpoint of dced on the exporting server's host machine. The endpoint mapper now takes over. It looks up a valid endpoint for the requested service, copies it into the binding handle, and transfers the call to that endpoint. Subsequent calls from the client, which now has a binding with one of the server's endpoints, will bypass the endpoint mapper.

The endpoint mapper picks an appropriate endpoint for an incoming partial binding by matching interface UUIDs by default. Any endpoint that has been registered under an interface UUID that matches the incoming interface UUID, which identifies the interface requested by the prospective client, is eligible for selection. This mapping process is called forwarding when it occurs with connectionless protocols, and mapping when it occurs with connection-oriented protocols.

The following figure shows the endpoint mapper service completing a binding.


The Endpoint Mapper Service Completes a Binding

There is an exception to this scheme. Some servers are designed to occupy well-known addresses. The DCE host daemon itself, dced, is reached in this way, making its accessibility independent of whether or not the namespace is accessible. The endpoint(s) of a well-known address do not change; they are usually specified in the application's interface specification (contained in its .idl file). Bindings to servers that use well-known endpoints are already complete at the time of import; the endpoint mapper never sees these bindings.