2.1 The Domain Namespace
DNS's distributed
database is
indexed by domain names. Each
domain name is essentially just a path in a large inverted tree,
called the domain namespace. The tree's hierarchical
structure, shown in Figure 2-1, is similar to the
structure of the Windows filesystem. The tree has a single root at
the top.[1] In the Windows
filesystem, this is called the root directory and is represented by a
backslash (\ ). DNS simply calls it "the
root." Like a filesystem, DNS's
tree can branch any number of ways at each intersection point, or
node. The depth of the tree is limited to 127 levels (a limit
you're not likely to
reach).[1] Clearly this is a computer
scientist's tree, not a
botanist's.
Figure 2-1. The structure of the DNS namespace

2.1.1 Domain Names
Each node in
the tree has a text
label (without dots) that can be up to 63
characters long. A null (zero-length) label is reserved for the root.
The full domain name of any node in the tree is the sequence of
labels on the path from that node to the root. Domain names are
always read from the node toward the root
("up" the tree), with dots
separating the names in the path.If the
root node's label actually appears in a
node's domain name, the name looks as though it ends
in a dot, as in "www.oreilly.com.".
(It actually ends with a dotthe separatorand the
root's null label.) When the root
node's label appears by itself, it is written as a
single dot, ".", for convenience.
Consequently, some software interprets a trailing dot in a domain
name to indicate that the domain name is
absolute. An absolute domain name is written
relative to the root and unambiguously specifies a
node's location in the hierarchy. An absolute domain
name is also referred to as a fully
qualified domain
name, often abbreviated FQDN. Names without
trailing dots are sometimes interpreted as relative to some domain
name other than the root, just as directory names without a leading
slash are often interpreted as relative to the current
directory. DNS
requires that sibling nodesnodes that are children of the same
parenthave different labels. This restriction guarantees that
a domain name uniquely identifies a single node in the tree. The
restriction really isn't a limitation, because the
labels need to be unique only among the children, not among all the
nodes in the tree. The same restriction applies to the Windows
filesystem: you can't give two sibling directories
or two files in the same directory the same name. As illustrated in
Figure 2-2, just as you can't have
two hobbes.pa.ca.us nodes in the
namespace,
you can't have two \Temp
directories. You can, however, have both a
hobbes.pa.ca.us node and a
hobbes.lg.ca.us node, as you can have both a
\Temp directory and a
\Windows\Temp directory.
Figure 2-2. Ensuring uniqueness in domain names and Windows pathnames

2.1.2 Domains
A
domain is simply a subtree of
the
domain
namespace. The domain name of a domain is the same as the domain name
of the node at the very top of the domain. So, for example, the top
of the purdue.edu domain is a node named
purdue.edu, as shown in Figure 2-3.
Figure 2-3. The purdue.edu domain

Likewise, in a filesystem, at the top of the
\Program Files directory
you'd expect to find a node called
\Program Files, as shown in
Figure 2-4.
Figure 2-4. The \Program Files directory

Any domain name in the subtree is considered a part of the domain.
Because a domain name can be in many subtrees, a domain name can also
be in many domains. For example, the domain name
pa.ca.us is part of the
ca.us domain and also part of the
us domain, as shown in Figure 2-5.
Figure 2-5. A node in multiple domains

So in the abstract, a domain is just a subtree of the domain
namespace. But if a domain is simply made up of domain names and
other domains, where are all the hosts? Domains are groups of hosts,
right?The hosts are there,
represented by domain names. Remember, domain names are just indexes
into the DNS database. The "hosts"
are the domain names that point to information about individual
hosts, and a domain contains all the hosts whose domain names are
within the domain. The hosts are related
logically, often by geography or organizational
affiliation, and not necessarily by network or address or hardware
type. You might have 10 different hosts, each of them on a different
network and perhaps even in a different country, all in the same
domain.One note of
caution: don't confuse domains in DNS with domains
in NIS. Though an NIS domain also refers to a group of hosts and both
types of domains have similarly structured names, the concepts are
quite different. NIS uses hierarchical names, but the hierarchy ends
there: hosts in the same NIS domain share certain data about hosts
and users, but they can't navigate the NIS namespace
to find data in other NIS domains. NT domains, which provide
account-management and security services, also don't
have any relationship to DNS domains. Active Directory domains,
however, are closely related to DNS. We discuss that relationship in
Chapter 8.Domain names at the leaves of the tree generally represent individual
hosts,
and they may point to network addresses, hardware information, and
mail-routing information. Domain names in the interior of the tree
can name a host and point to information about
the domain; they aren't restricted to one or the
other. Interior domain names can represent both the domain they
correspond to and a particular host on the network. For example,
hp.com is both the name of the Hewlett-Packard
Company's domain and a domain name that refers to
the hosts that run HP's main web server.The type of information retrieved when you use a domain name depends
on the context in which you use it. Sending mail to someone at
hp.com would return mail-routing information,
while telneting to the domain name would look up
the host information (in Figure 2-6 (for example,
hp.com's IP address).
Figure 2-6. An interior node with both host and domain data

A domain may have several subtrees of its own, called
subdomains.[2][2] The terms
"domain" and
"subdomain" are often used
interchangeably, or nearly so, in DNS documentation. Here, we use
"subdomain" only as a relative
term: a domain is a subdomain of another domain if the root of the
subdomain is within the domain.
A
simple way of determining if a domain is a
subdomain
of another domain is to
compare their domain names. A subdomain's domain
name ends with the domain name of its parent domain. For example, the
domain la.tyrell.com must be a subdomain of
tyrell.com, because
la.tyrell.com ends with
tyrell.com. It's also a
subdomain of com, as is
tyrell.com.Besides being referred to in relative
terms, as subdomains of other domains, domains are often referred to
by level. On mailing lists and in Usenet
newsgroups, you may see the terms top-level
domain or second-level
domain bandied about. These terms simply refer
to a domain's position in the domain namespace:A top-level domain is a child of the root.A first-level domain is a child of the root (a top-level domain).A second-level domain is a child of a first-level domain, and so on.
2.1.3 Resource Records
The data associated with domain names is
contained in resource
records, or RRs. Records are divided into
classes, each of which pertains to a type of network or software.
Currently, there are classes for internets (any TCP/IP-based
internet), networks based on the Chaosnet protocols, and networks
that use Hesiod software. (Chaosnet is an old network of largely
historic significance.) The internet class is by far the most
popular. (We're not really sure if anyone still uses
the Chaosnet class, and use of the Hesiod class is mostly confined to
MIT.) In this book, we concentrate on the internet class.Within a class, records come in several types, which correspond to
the different varieties of data that may be stored in the domain
namespace. Different classes may define different record types,
though some types are common to more than one class. For example,
almost every class defines
an
address type.
Each record type in a given class defines a particular record syntax
to which all resource records of that class and type must adhere.
(For details on resource record types and their syntaxes, see
Appendix A.)If this information seems sketchy, don't
worrywe'll cover the records in the internet
class in more detail later. The common records are described in Chapter 4, and a more comprehensive list is included as
part of Appendix A.