DNS (Domain Name System)

In this blog I will be explaining about the basics of DNS which will include:

  • What is DNS?
  • What services does it provide?
  • How does it work?
  • Different types of DNS records.

What is DNS

The different preferences for host identifiers demand for a directory service in the internet which translates the hostnames to IP addresses. And this is the main task of the domain name system(DNS). So in short form DNS is a distributed database in the internet which stores the record for hostnames translations.

Services provided by DNS

  • Host aliasing: Some hostnames can be complicated and hence can have one or more alias name. e.g. disco.dance.entertainment.com can have two aliases such as entertainment.com and www.entertainment.com. In this case disco.dance.entertainment.com is known as canonical hostname. DNS can be invoked to obtain the canonical hostname for the supplied alias as well as the IP address of the host.
  • Load distribution: DNS can also be used for load distribution among replicated servers. The sites with heavy traffic or loads are replicated over multiple servers for high availability and other some other reasons(out of the scope of this blog). In this case when client makes query to the DNS server, it returns the set of IP addresses and rotates the ordering of IP addresses in each reply.
  • Mail Server aliasing: We have observed that the email ids are like blog@gmail.com , blog@outlook.com etc. However, the hostname of the gmail or outlook servers are more complicated than gmail.com or outlook.com and are less convenient to remember(something like `xyz.nyc.dom.gmail.com` and `abc.cad.dom.outlook.com`). So in this case DNS server can be invoked by mail application to obtain the canonical hostname(`xyz.nyc.dom.gmail.com`) for the alias hostname (gmail.com)as well as IP address.

How does DNS works?

From the perspective of invoking application, DNS is a simple translation service which is what most of people think about DNS.

Now we will see how does this translation happens. What could be a simple design of this service; we can have a single DNS server which contains all the mappings and the clients which needs any translations should query to this server directly. But in todays era with such a high volume of requests in the internet and with such a huge growing number of hosts, this design will not work.
Problems with this design are:
1. Single point of failure.
2. Latency issues. (As a server near to one part of world will be far for from other part of the world)
3. Huge Request Volume.

In order to deal with these issues the design of DNS has to be distributed in nature. DNS uses large number of servers which are distributed around the world and so are the mapping of the hosts.

There are three classes of DNS: Root DNS Server, Top-Level Domain(TLD) DNS Server and Authoritative DNS server organised in a hierarchy as shown below.

Image is inspired from the book Compute Networks: Top Down approach

Let me explain these classes with an example. Suppose a client wants the IP address of www.amazon.in.
1. Client will first connect to one of the root DNS server which will return the IP address of one of the TLD DNS server for domain in .
2. Client will then connect to one of the TLD DNS server which will return the IP address of one of the authoritative DNS server for amazon.in .
3. Finally client will connect to one of the authoritative DNS server of amazon.in which will return the IP address of www.amazon.in .

Generally there is another DNS server comes in picture known as local DNS server which is provided by ISPs.(Internet server providers). So clients generally talks to local DNS servers and it’s the responsibility of local DNS server to talk to the respective other DNS servers(root, tld, authoritative) to resolve the hostname. Local DNS server also caches the results with some TTL which can be used in further queries.

DNS look up via different class of DNS servers

Types of DNS records.

(Name, Value, Type, TTL)

There are four types of DNS recored.

  1. ForType=A ,Name is the hostname and Value is the IP address of the hostname. e.g. (www.random.com,, A, 10)is Type A record.
  2. ForType=NS ,Name is the domain (such as amazon.in) and Value is the hostname of the authoritative DNS server that knows how to obtain the IP address for the hosts in the domain. e.g (amazon.in, dns.amazon.in, NS, 10) is a type NS record.
  3. For Type=CNAME , Name is the aliased hostname and Value is the canonical hostname for that aliased hostname. e.g (entertainment.com, disco.dancer.entertainment.com, CNAME, 10)is Type CNAME record.
  4. For Type=MX , Name is the aliased hostname for mail server and Value is the canonical hostname of that aliased mail server. e.g.(entertainment.com, mail.disco.dancer.entertainment.com, MX, 10) . Point to note here is that by using MX record a company can have the same aliased name for mail server and for some other server, say it’s company’s website. For e.g. google.com can be a hostname for a website as will as hostname for a the google mail server, this can be distinguished using the type of DNS record.

You can use nslookup or dig commands on linux to check these different type of records. Like:

nslookup -type=A google.comServer:
Non-authoritative answer:
Name: google.com
nslookup -type=MX google.com
Non-authoritative answer:
google.com mail exchanger = 50 alt4.aspmx.l.google.com.
google.com mail exchanger = 30 alt2.aspmx.l.google.com.
google.com mail exchanger = 20 alt1.aspmx.l.google.com.
google.com mail exchanger = 10 aspmx.l.google.com.
google.com mail exchanger = 40 alt3.aspmx.l.google.com.
____________________________________________________________________nslookup -type=CNAME google.comServer:
Non-authoritative answer:
*** Can't find google.com: No answer
Authoritative answers can be found from:
origin = ns1.google.com
mail addr = dns-admin.google.com
serial = 367541562
refresh = 900
retry = 900
expire = 1800
minimum = 60
____________________________________________________________________nslookup -type=NS google.com
Non-authoritative answer:
google.com nameserver = ns4.google.com.
google.com nameserver = ns1.google.com.
google.com nameserver = ns2.google.com.
google.com nameserver = ns3.google.com.
Authoritative answers can be found from:

References: Computer networks Top down Approach

Writing or applying is the best way to validate your learning.