Skip to main content

Name service and name resolution

Short answer

A name service maps names to attributes, with types: simple, directory, and discovery. Name servers distribute the namespace via partitioning and replication. Resolution methods include iterative (client queries each server), recursive (servers chain queries), and multicast, often with caching.

Define name service and explain its types. Explain the collection of name servers as a distributed system for the resolution of resource names along with resolution methods.

Name service

A name service stores a collection of bindings between names and attributes (usually addresses) of resources, and answers lookup requests. It supports name resolution, finding the attributes of a resource from its name. Names are needed to identify resources independent of their location and to let them be shared. Examples: DNS, X.500/LDAP directory, CORBA naming service, the Jini lookup service.

Types of name service

  1. Name service (simple naming): maps a name to attributes (usually addresses); example DNS.
  2. Directory service: maps a name to a set of attributes and can search by attribute (find all printers in room 5); examples X.500, LDAP.
  3. Discovery service: finds services in a spontaneous network (Jini lookup).

Names can also be flat (unstructured identifiers) or structured (hierarchical, as in DNS and file paths).

Name servers as a distributed system

A single name server would be a bottleneck and a single point of failure, so the name space is partitioned among many name servers, with replication, caching and delegation (as in DNS zones). Each server holds part of the data and knows how to reach the others. A lookup may navigate over several servers.

 Client -> Local server -> Server X -> Server Y -> answer

Resolution (navigation) methods

  • Iterative navigation: the client (its resolver) contacts one name server. If that server cannot resolve the whole name, it returns the address of another server that can resolve more of it, and the client contacts that server in turn, until the name is resolved (DNS works this way by default).
  • Multicast navigation: the client multicasts the name to a group of name servers; only the server holding the binding replies (used for local discovery).
  • Non-recursive server-controlled navigation: the client sends the name to one server, which itself contacts the other servers one by one (or by multicast) and returns the final answer to the client.
  • Recursive server-controlled navigation: the contacted server passes the name to the server that holds the next part of the name space, which passes it on in turn; the result travels back along the chain to the client. It puts more load on servers, but lets them cache results, and works when clients cannot reach some servers directly.

Caching of results with timeouts, and replication of servers, improve performance and availability.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Distributed System chapter 2 questions →