Domain Name System
Domain Name System
As far as most people are concerned, the Domain Name System (DNS) is a
black box.
I'd like to peek inside that box to find the answers to the following
questions:
How does a host name get converted to an IP address?
The IP address (and other information) for a host name is found by
tracing down a tree of information stored in domain name servers
distributed around the net.
If, for example, I wanted to determine the IP address of
aramis.rutgers.edu,
I would first ask a server at the root of the DNS tree, one
of which is
h.root-servers.net.
h.root-servers.net
does not know about
aramis.rutgers.edu,
but it knows a list of servers who should know about the
rutgers.edu
domain, so it responds that I should ask one of
dns1.rutgers.edu,
dns2.rutgers.edu,
or
dns3.rutgers.edu.
Asking
ns1.rutgers.edu,
I would learn that
aramis.rutgers.edu
had the IP address of
128.6.4.2.
Obviously, it would place a great load on the net (and the root
servers) if I had to go through this every time I needed a host's IP
address.
Fortunately, resolvers (the agents which do all the actual work shown
above) cache information they have already learned for a while.
(The actual length of time the information is good for is returned
with the answer from the server providing the information.)
If I can convert a hostname to an IP address, how come sometimes I
can't convert that same IP address back into a hostname?
It does seem silly on the face of it that my resolver knows (and can
tell me immediately) the IP address associated with a hostname, but
may claim not to know about, or even be able to determine, the
hostname associated with that IP address.
But more things are stored in the DNS system than hostnames and IP
addresses, for instance, mail exchange records.
If you ask to which machine should mail for
aramis.rutgers.edu
be delivered, you'd be told
mail.cs.rutgers.edu.
That information is cached too.
But it would not make sense to ask what the hostname is which has its
mail delivered to
mail.cs.rutgers.edu.
It would take extra effort for the resolver to be able to reverse just
the hostname to IP address pair of data.
Indeed, there are security reasons you would not want this to happen.
It's impossible to get to a host if the hostname to IP address mapping
is not working.
But there are fewer things you cannot do if the IP address to hostname
mapping is broken.
Therefore, broken IP address to hostname mapping may take longer to
notice and seem less essential to the data maintainers to fix.
How *does* an IP addresss get converted to a hostname?
IP addresses are looked up very much like hostname, but the "hostname"
you're looking up is made up of the 4 numbers in the IP address.
So if you wanted to look up
128.6.4.2,
you'd look in the DNS system for information on
2.4.6.128.IN-ADDR.ARPA.
The 4 numbers are reversed for ease of resolver handling - the order
is from least to most significant parts, like the hostname.
You can also get information on subnets this way.
For example, you can find out about the Rutgers class B subnet by
looking up
6.128.IN-ADDR.ARPA.
dig
is a handy program for poking around in the DNS system.
This page last updated February 15, 2008.