The DARPA Domain Name project is an attempt to move from a centralized naming authority to a distributed one. In essence, the domain system computes a single binding from a character string known as a host name to another string known as the host address (a 32-bit integer). Besides the syntactic changes in names, the chief difference between the old-style names and domain names is that in the old system, a database containing the name-to-address bindings was distributed to each host where bindings were performed locally, while in the domain system computation of the name-to-address binding uses the internet to contact search the hierarchy of domains until a server is found that can perform the binding. Unfortunately, to make the system efficient, servers cache bindings they look up, and clients begin a search by contacting the nearest “leaf” server to avoid searching the hierarchy. If sufficient memory is available, the cache at a server corresponds exactly to old-style host tables. The domain scheme raises other questions. In principle, the hierarchical structure of domain names permits easy delegation of naming authority because it allows names within independent subtrees to be assigned by independent organizations. In practice, however, the hierarchical scheme collects together organizations under fixed top-level domains. Because extremely small organizations cannot afford to maintain a domain name server, they must be supported by (and obey the authority of) a domain server for the subhierarchy under which they lie. A hierarchical organization of names also imposes restrictions on the use of the system. For example, even though domain name servers contain (name, address) pairs, it is impossible to locate the desired binding given only the address.
Read full abstract