Domain System Server
Domain System Network software generally needs
a 32-bit Internet address in
order to open a connection or send a datagram.
However users prefer to deal with
computer names rather than numbers. Thus
there is a database that allows the
software to look up a name and find the
corresponding number. When the Internet
was small, this was easy. Each system
would have a file that listed all of the
other systems, giving both their
name and number. There are now too many
computers for this approach to be
practical. Thus these files have been replaced
by a set of name servers that
keep track of host names and the corresponding
Internet addresses. (In
fact these servers are somewhat more general than that.
This is just one
kind of information stored in the domain system.) Note that a
set of
interlocking servers are used, rather than a single central one. There
are
now so many different institutions connected to the Internet that it would
be
impractical for them to notify a central authority whenever they installed
or
moved a computer. Thus naming authority is delegated to individual
institutions.
The name servers form a tree, corresponding to
institutional structure. The
names themselves follow a similar structure. A
typical example is the name
BORAX.LCS.MIT.EDU. This is a computer at the
Laboratory for Computer Science (LCS)
at MIT. In order to find its Internet
address, you might potentially have to
consult 4 different servers. First,
you would ask a central server (called the
root) where the EDU server is. EDU
is a server that keeps track of educational
institutions. The root server
would give you the names and Internet addresses of
several servers for EDU.
(There are several servers at each level, to allow for
the possibly that one
might be down.) You would then ask EDU where the server
for MIT is. Again, it
would give you names and Internet addresses of several
servers for MIT.
Generally, not all of those servers would be at MIT, to allow
for the
possibility of a general power failure at MIT. Then you would ask MIT
where
the server for LCS is, and finally you would ask one of the LCS servers
about
BORAX. The final result would be the Internet address
for
BORAX.LCS.MIT.EDU. Each of these levels is referred to as a
"domain".
The entire name, BORAX.LCS.MIT.EDU, is called a "domain name".
(So are
the names of the higher-level domains, such as LCS.MIT.EDU, MIT.EDU,
and EDU.)
Fortunately, you don't really have to go through all of this
most of the time.
First of all, the root name servers also happen to be
the name servers for the
top-level domains such as EDU. Thus a single query
to a root server will get you
to MIT. Second, software generally remembers
answers that it got before. So once
we look up a name at LCS.MIT.EDU, our
software remembers where to find servers
for LCS.MIT.EDU, MIT.EDU, and EDU.
It also remembers the translation of
BORAX.LCS.MIT.EDU. Each of these
pieces of information has a "time to
live" associated with it. Typically this
is a few days. After that, the
information expires and has to be looked up
again. This allows institutions to
change things. The domain system is not
limited to finding out Internet
addresses. Each domain name is a node in a
database. The node can have records
that define a number of different
properties. Examples are Internet address,
computer type, and a list of
services provided by a computer. A program can ask
for a specific piece of
information, or all information about a given name. It
is possible for a node
in the database to be marked as an "alias" (or
nickname) for another node. It
is also possible to use the domain system to
store information about users,
mailing lists, or other objects. There is an
Internet standard defining
the operation of these databases, as well as the
protocols used to make
queries of them. Every network utility has to be able to
make such queries,
since this is now the official way to evaluate host names.
Generally
utilities will talk to a server on their own system. This server will
take
care of contacting the other servers for them. This keeps down the amount
of
code that has to be in each application program. The domain system
is
particularly important for handling computer mail. There are entry types
to
define what computer handles mail for a given name, to specify where
an
individual is to receive mail, and to define mailing lists.