DNS consists of two components
Nameserver:
This performs the task of looking up the names. Usually, there is one nameserver for a cluster of machines. If the nameserver does not contain the requested information, it will contact another nameserver. But it is not required for every server to know how to contact every other server. Every nameserver will know how to contact the root nameserver, and this in turn will know the location of every authoritative nameserver for all the second level domains.
Resolver:
This runs on a client machine to initiate DNS lookups. It contains a list of nameservers to use. As we have read, the function of each of these nameservers is to resolve name queries. There are three types of nameservers-primary nameserver, secondary nameserver, and caching nameserver. The secondary nameservers are configured for backup purposes. Caching nameservers only resolve name queries but do not maintain any DNS database files. It is important to note here that any change to primary nameservers needs to be propagated to secondary nameservers. This is because primary nameservers own the database records. The changes are propagated via a 'zone transfer'.
HOW "CACHING"WORKS
DNS uses principle of 'caching' for its operation. When a nameservers receives Information about a mapping, it caches this information .further queries for the same mapping will use this cached result, thereby reducing the search cost. The nameservers don't cache forever. The caching has a component called time to live (TTL) and the TTL determines how long a server will cache a piece of information. So when the nameservers caches receive an IP address, it receives the TTL with it. The nameserver caches the IP address for the period of time then discards it.
When a process needs to determine an IP address given a DNS address, it calls upon the local host to resolve the address. This can be done in variety of ways:
Table look up. On UNIX hosts, the table is /etc/hosts.
The process communicates with a local nameservers. This is named on a UNIX system.
By sending a massage to the remote system that is identified from the information in the file/etc/resolve.conf.