In order for an application to send and receive data with
a remote process, it must have several pieces of information. The first
is the IP address of the system that the remote program is running on.
Although this address is internally represented by a 32-bit number, it
is typically expressed in either dot-notation or by a logical name called
a hostname. Like an address in dot-notation, hostnames are divided
into several pieces separated by periods, called domains. Domains
are hierarchical, with the top-level domains defining the type of organization
that network belongs to, with sub-domains further identifying the specific
network.
In this figure, the top-level domains are "gov" (government agencies),
"com" (commercial organizations), "edu" (educational institutions) and
"net" (Internet service providers). The fully qualified domain name
is the specified by naming the host and each parent sub-domain above it,
separating them with periods. For example, the fully qualified domain name
for the "mars" host would be "mars.olympus.com". In other words, the system
"mars" is part of the "olympus" domain (a company's local network) which
in turn is part of the "com" domain (a domain used by all commercial enterprises).
In order to use a hostname instead of a dot-address to identify a specific
system or network, there must be some correlation between the two. This
is accomplished by one of two means: a local host table or a name server.
A host table is a text file that lists the IP address of a host, followed
by the names that it's known by. Typically this file is named hosts
and is found in the same directory in which the TCP/IP software has been
installed. A name server, on the other hand, is a system (actually, a program
running on a system) which can be presented with a hostname and will return
that host's IP address. This approach is advantageous because the host
information for the entire network is maintained in one centralized location,
rather than being scattered about on every host on the network. |