Ever wonder when you type a address for example www.google.com in the browser, how the browser know where to fetch the contents of the website. DNS is what makes it possible for a browser to access a website. DNS is the system which translates domain names www.google.com to a numerical IP addresses 220.127.116.11. Routers in the Internet network rely on IP addresses to lookup next-hops for packets, packets are the chunks of the content you requested.
DNS servers eliminate the need for humans to memorize IP addresses, which are not easy to memorize, especially in case of an IPV6 address such as 2001:0db8:85a3:0000:0000:8a2e:0370:7334.
There are many challenges to implementing DNS, Here are some of the most important ones: 1. There are hundreds of millions of domains. 2. There are hundreds of billions of DNS lookups a day. 3. Domains and IP addresses are added and updated continuously.
To solve these problems, DNS is implemented as a distributed directory service. A DNS lookup is addressed to a DNS server. Each DNS server stores a database of domain names to IP addresses; if it cannot find a domain name being queried in this database it forwards the request to other DNS servers. These requests can get forwarded all the way up to the root name servers, which are responsible for top-level domains. Each server porvides a highly reliable service and these servers are replicated across multiple locations.
Due to this distributed nature of DNS, DNS lookups may take lot of forwarded calls to finally get the IP address of the domain, therefore the key to performance is the heavy use of caching, in the client itself and as well as in the DNS servers. Chances are when you make a request to www.google.com the IP address of the domain is already stored in your computer, or at the very least in the router.