DNS
Definitions of DNS
- Domain Name Server (or system) – An Internet
service that translates domain names into IP addresses.
- (Domain Name System) The Domain Name System is
the system that translates Internet domain names into IP numbers. A
"DNS Server" is a server that performs this kind of translation.
- DNS stands for Domain Name System. This System translates a domain
name such as rshweb.com into the Internet Protocol (IP) numbers
(209.203.234.42) to find the correct web site - in this case the site for Domain
Bank. The network of computers that constitute the Internet map domain
names to their corresponding IP numbers. The data is then made available
to all computers and users on the Internet.
How Domain Name Servers Work
If you spend any time on the Internet
sending e-mail or browsing the
Web, then you use domain name servers without even realizing it. Domain
name servers, or DNS, are an incredibly important but completely hidden part of
the Internet, and they are fascinating! The DNS system forms one of the largest
and most active distributed databases on the planet. Without DNS, the Internet
would shut down very quickly.
The Basics
When you use the
Web or send an e-mail message, you use a domain name to do it. For
example, the URL "http://www.crispindia.com" contains the domain name
crispindia.com. So does the e-mail address "devesh@crispindia.com."
Human-readable
names like "crispindia.com" are easy for people to remember, but they
don't do machines any good. All of the machines use names called IP addresses
to refer to one another. For example, the machine that humans refer to as
"www.crispindia.com" has the IP address 64.14.119.232. Every
time you use a domain name, you use the Internet's domain name servers (DNS) to
translate the human-readable domain name into the machine-readable IP address.
During a day of browsing and e-mailing, you might access the domain name
servers hundreds of times!
Domain name servers translate domain
names to IP addresses. That sounds like a simple task, and it would be --
except for five things:
- There are
billions of IP addresses currently in use, and most machines have a
human-readable name as well.
- There are
many billions of DNS requests made every day. A single person can easily
make a hundred or more DNS requests a day, and there are hundreds of
millions of people and machines using the Internet daily.
- Domain
names and IP addresses change daily.
- New domain
names get created daily.
- Millions of
people do the work to change and add domain names and IP addresses every day.
The DNS system
is a database, and no other database on the planet gets this many
requests. No other database on the planet has millions of people changing it
every day, either. That is what makes the DNS system so unique!
IP Addresses
To keep all of the
machines on the Internet straight, each machine is assigned a unique address
called an IP address. IP stands for Internet protocol, and these
addresses are 32-bit numbers normally
expressed as four "octets" in a "dotted decimal number." A
typical IP address looks like this:
64.14.119.232
The four numbers in an IP address are
called octets because they can have values between 0 and 255 (28
possibilities per octet).
Every machine on
the Internet has its own IP address. A server has a static IP address that does not change very often. A
home machine that is dialing up through a modem
often has an IP address that is assigned by the ISP when you dial in. That IP address is unique for your
session and may be different the next time you dial in. In this way, an ISP
only needs one IP address for each modem it supports, rather than for every
customer.
If you are
working on a Windows machine, you can view your current IP address with the
command WINIPCFG.EXE (IPCONFIG.EXE for Windows 2000/XP). On a UNIX
machine, type nslookup along with a machine name to display the IP
address of the machine (use the command hostname to learn the name of
your machine).
For more information on IP addresses,
see IANA.
As far as the
Internet's machines are concerned, an IP address is all that you need to talk
to a server. For example, you can type in your browser the URL http://
64.14.119.232 and you will arrive at the machine that contains the Web
server for crispindia.com. Domain names are strictly a human convenience.
Domain
Names
If we had to remember the IP addresses
of all of the Web sites we visit every day, we would all go nuts. Human beings
just are not that good at remembering strings of numbers. We are good at
remembering words, however, and that is where domain names come in. You
probably have hundreds of domain names stored in your head. For example:
- www.crispindia.com - a typical
name
- www.yahoo.com
- the world's best-known name
- www.mit.edu
- a popular EDU name
- encarta.msn.com
- a Web server that does not start with www
- www.bbc.co.uk
- a name using four parts rather than three
- ftp.microsoft.com
- an FTP server rather than a Web server
The COM, EDU and
UK
portions of these domain names are called the top-level domain or first-level
domain. There are several hundred top-level domain names, including COM,
EDU, GOV, MIL, NET, ORG and INT, as well as unique two-letter combinations for every country.
Within every top-level domain there is
a huge list of second-level domains. For example, in the COM first-level
domain, you've got:
- crispindia
- yahoo
- msn
- microsoft
- plus
millions of others...
Every name in
the COM top-level domain must be unique, but there can be duplication
across domains. For example, crispindia.com.com and crispindia.org
are completely different machines.
In the case of bbc.co.uk, it is a
third-level domain. Up to 127 levels are possible, although more than
four is rare.
The left-most
word, such as www or encarta, is the host name. It
specifies the name of a specific machine (with a specific IP address) in a
domain. A given domain can potentially contain millions of host names as long
as they are all unique within that domain.
Distributing Domain Names
Because all of
the names in a given domain need to be unique, there has to be a single entity
that controls the list and makes sure no duplicates arise. For example, the COM
domain cannot contain any duplicate names, and a company called Network Solutions is
in charge of maintaining this list. When you register a domain name, it goes
through one of several dozen registrars who work with Network Solutions to add names to the list.
Network Solutions, in turn, keeps a central database known as the whois database
that contains information about the owner and name servers for each domain. If
you go to the whois form, you can find
information about any domain currently in existence.
While it is
important to have a central authority keeping track of the database of names in
the COM (and other) top-level domain, you would not want to centralize the
database of all of the information in the COM domain. For example, Microsoft
has hundreds of thousands of IP addresses and host names. Microsoft wants to
maintain its own domain name server for the microsoft.com domain.
Similarly, Great Britain
probably wants to administrate the uk
top-level domain, and Australia
probably wants to administrate the au domain, and so on. For this reason,
the DNS system is a distributed database. Microsoft is completely
responsible for dealing with the name server for microsoft.com -- it maintains
the machines that implement its part of the DNS system, and Microsoft can
change the database for its domain whenever it wants to because it owns its
domain name servers.
Every domain has
a domain name server somewhere that handles its requests, and there is a person
maintaining the records in that DNS. This is one of the most amazing parts of
the DNS system -- it is completely distributed throughout the world on millions
of machines administered by millions of people, yet it behaves like a single,
integrated database!
The
Distributed System
Name servers do two things all day
long:
- They accept requests from programs
to convert domain names into IP addresses.
- They accept
requests from other name servers to convert domain names into IP
addresses.
When a request comes in, the name
server can do one of four things with it:
- It can answer the request with an
IP address because it already knows the IP address for the domain.
- It can
contact another name server and try to find the IP address for the name
requested. It may have to do this multiple times.
- It can say,
"I don't know the IP address for the domain you requested, but here's
the IP address for a name server that knows more than I do."
- It can
return an error message because the requested domain name is invalid or
does not exist.
When you type a
URL into your browser, the browser's first step is to convert the domain name
and host name into an IP address so that the browser can go request a Web page from the machine at that IP address.
To do this conversion, the browser has a conversation with a name server.
When you set up
your machine on the Internet, you (or the software that you installed to
connect to your ISP) had to tell your machine what name server it should use
for converting domain names to IP addresses. On some systems, the DNS is
dynamically fed to the machine when you connect to the ISP, and on other
machines it is hard-wired. If you are working on a Windows 95/98/ME machine,
you can view your current name server with the command WINIPCFG.EXE
(IPCONFIG for Windows 2000/XP). On a UNIX machine, type nslookup along
with your machine name. Any program on your machine that needs to talk to a
name server to resolve a domain name knows what name server to talk to because
it can get the IP address of your machine's name server from the operating system.
The browser
therefore contacts its name server and says, "I need for you to convert a
domain name to an IP address for me." For example, if you type "www.crispindia.com"
into your browser, the browser needs to convert that URL into an IP address.
The browser will hand "www.crispindia.com" to its default name server
and ask it to convert it.
The name server
may already know the IP address for www. crispindia.com.
That would be the case if another request to resolve www.crispindia.com came in
recently (name servers cache IP addresses to
speed things up). In that case, the name server can return the IP address
immediately. Let's assume, however, that the name server has to start from
scratch.
A name server
would start its search for an IP address by contacting one of the root name
servers. The root servers know the IP address for all of the name servers
that handle the top-level domains. Your name server would ask the root for www.crispindia.com,
and the root would say (assuming no caching), "I don't know the IP address
for www.crispindia.com, but here's the IP address for the COM name
server." Obviously, these root servers are vital to this whole process,
so:
- There are
many of them scattered all over the planet.
- Every name
server has a list of all of the known root servers. It contacts the first
root server in the list, and if that doesn't work it contacts the next one
in the list, and so on.
The root server
knows the IP addresses of the name servers handling the several hundred
top-level domains. It returns to your name server the IP address for a name server
for the COM domain. Your name server then sends a query to the COM name server
asking it if it knows the IP address for www.crispindia.com. The name server
for the COM domain knows the IP addresses for the name servers handling the CRISPINDIA.COM
domain, so it returns those. Your name server then contacts the name server for
CRISPINDIA.COM and asks if it knows the IP address for www.crispindia.com. It
does, so it returns the IP address to your name server, which returns it to the
browser, which can then contact the server for www.crispindia.com to get a Web
page.
One of the keys
to making this work is redundancy. There are multiple name servers at
every level, so if one fails, there are others to handle the requests. There
are, for example, three different machines running name servers for CRISPINDIA.COM
requests. All three would have to fail for there to be a problem.
The other key is
caching. Once a name server resolves a request, it caches all of the IP addresses it receives.
Once it has made a request to a root server for any COM domain, it knows the IP
address for a name server handling the COM domain, so it doesn't have to bug
the root servers again for that information. Name servers can do this for every
request, and this caching helps to keep things from bogging down.
Name servers do
not cache forever, though. The caching has a component, called the Time To
Live (TTL), that controls how long a server will cache a piece of
information. When the server receives an IP address, it receives the TTL with
it. The name server will cache the IP address for that period of time (ranging
from minutes to days) and then discard it. The TTL allows changes in name
servers to propagate. Not all name servers respect the TTL they receive,
however. When Crispindia moved its machines over to new servers, it took three
weeks for the transition to propagate throughout the Web. We put a little tag
that said "new server" in the upper left corner of the home page so
people could tell whether they were seeing the new or the old server during the
transition.
The Beauty of DNS
As you can see
from this description, DNS is a rather amazing distributed database. It handles
billions of requests for billions of names every day through a network of
millions of name servers administered by millions of people. Every time you
send an e-mail message or view a URL, you are making requests to multiple name
servers scattered all over the globe. What's amazing is that the process is
usually completely invisible and extremely reliable!
No comments:
Post a Comment