The purpose of DNS is to provide hostname to IP address mappings for systems on a TCP/IP network. This allows computers to be addressed with a more memorable hostname rather than using numeric IP addresses. Adding this layer of abstraction also allows for host names to be grouped together logically rather than by the physical addressing dictated by network structure.
Because the DNS name space is meant to encompass the entire Internet, scalability is a major concern. This dictates the distributed nature of the system. The Internet name space is divided into more manageable chunks called Domains and Subdomains. Authority for administering a domain can be delegated to other organizations such as individual companies or individual departments inside a company or university. There are too many hostnames on the Internet to easily keep them all on one server. But by making each domain owner responsible for their own hostnames, the task is divided into easily administered pieces.
Top Level Domains
In order to begin dividing the network into manageable chunks, the top level domains were dictated by the original primary users of the Internet.
With the international spread of the Internet, additional domains were established to reflect national and local boundaries. For a complete list of the international domain names, see this page at the www.IANA.org site. Some examples of these domains are:
The first type of domain name is called an organizational domain name, and the second is called a geographical domain. Due to the early US-centric nature of the Internet, most US hostnames are in organizational domains, while hostnames for foreign companies, universities and network providers are often in their nation specific domain. For contact information regarding the different DNS domain registries, see the www.iana.org web site.
Top Level Authority
In order to coordinate name assignments, top level name authority rests with a specific organization for each domain. Geographic domains are the responsibility of the government for each named domain. "mil" and "gov" domains are the responsibility of the US government, and "net", "com", and "org" domains are the responsibility of Network Solutions, a private company formed by the US Government and given the contract to administer those given domains.
In order to register for net, com, and org domain names, you must apply for the name to Network Solutions, pay an application fee, a yearly maintenance fee, and must have a name server on the Internet that will respond to queries for your names in your domain.
A top level authority delegates authority for the domains underneath it. By doing this, the higher level authority only needs to know how to point requests to the proper source. Network Solutions knows that IBM handles the hostnames for ibm.com, so it directs requests for www.ibm.com to the name server 220.127.116.11 (ns.watson.ibm.com). The authoritative name server for a given domain does not have to be run by the actual owner of the domain. For instance, while 3X Cincinnati owns the rights to 3xcvg.com, PSI Net handles name resolution for our domain via "pri1.dns.psi.net".
As mentioned earlier, larger companies may further subdivide their networks in order to more easily manage their name space. For instance, the web server for IBM software support is www.software.ibm.com. "software.ibm.com" is the subdomain within IBM for the software division. Sun Microsystems has a subdomain "usec.sun.com" which contains their US East Coast network operations.
Clients, and Servers
A DNS client is a system that uses DNS to resolve host names to IP addresses. A DNS client typically is configured to communicate with one to three DNS servers, usually either on their local network, or on the network of their ISP. Systems that obtain their IP addresses dynamically via BOOTP or DHCP will typically also obtain their DNS server addresses dynamically as well. The client will contact their DNS servers for all DNS queries regardless of whether their DNS server is the authoritative server for a given domain or not. If a client is requesting an IP address for a host within it's own domain, it will typically only need to use the first part of the fully qualified DNS name. For instance, if you issue the command "ping www" from a computer set up on the network for "yourcompany.com", the hostname www will be interpreted as "www.yourcompany.com".
A DNS server listens for name requests for names in any domain. If the server knows how to respond to a given name request, it will respond immediately to the client. If the name is not one that the server is familiar with, it will need to find out what name server is the authoritative source for that given domain. This information is contained on the root server for the top level domain that the name belongs to. For instance, the Internet root domain servers can tell you that the authoritative server for Microsoft.com is 18.104.22.168 (dns1.microsoft.com).
Once a DNS server has learned the IP address for a given host, it will cache this information for some period of time. This allows for greatly improved performance for subsequent requests for a given IP address.
A DNS server can be the authoritative source for zero, one, or many domain names. If the server is not the source for any domain names, it is called a caching only server. This can be used as a way to improve system performance by locating a caching server on LAN to prevent systems from having to go across a WAN connection just to obtain IP addresses.
An example of a server that handles many domains would be one like pri1.dns.psi.net. PSI Net typically handles the name resolution for PSI Net customers. This cuts down on the network traffic across a customer's WAN connection, and relieves the customer of the burden of having to administer and maintain the availability of their own DNS server.
More about Caching
Name caching is an important scalability and performance feature for the DNS name space. Obtaining an IP address for a distant host can often take up to a second, especially if it has to cross a congested network segment. If names had to be obtained from the authoritative source every time they were requested, network latency would be noticeably increased. This would also create a much larger load on the authoritative server for popular destinations such as microsoft.com, yahoo.com, etc.
This also allows for greater network reliability. If no names were cached and a name server went down, no clients would be able to connect to hosts within that domain, even if they were up and available. With name caching, if dns1.microsoft.com were down, most people would still be able to reach www.microsoft.com because that address is likely to already be in their DNS server's cache.
The length of time that a domain name is kept in a server's cache is determined on a per domain basis by the authoritative server for that domain name. In this way, the owner of a domain name can tune the frequency of cache refreshes based on how frequently its name/ip address mappings change, and based on the name lookup load that server is able to handle.
A drawback to caching is that it introduces a lag time between the time that a hostname/IP address mapping is changed and when it actually propagates throughout the Internet. A typical value for this Time To Live value is one day. This means that a name change can take between zero and 24 hours to be noticed by a given client, depending on when that client's local DNS server last cached the name.
This time lag can be managed either by reducing a TTL value for a domain 24 hours prior to making a name change, or by keeping a providing duplicate servers during the time that it takes a name change to take affect.