DNS Demystified 💪
Tags: devops, webdev, dns
Published: 2020-01-29 17:55:41

**DNS** stands for **Domain Name System**. Because of the numerous options/features of DNS, it's easy to get confused. Let's demystify DNS!

**Table of Content**

1.  What is DNS?
2.  How DNS works?
3.  What is **DNS Caching**?
4.  **DNS Records**
5.  FAQ

![](https://talk.hyvor.com/blog/wp-content/uploads/2020/01/photo-1558494949-ef010cbdcc31.jpg)

[Servers](https://unsplash.com/photos/M5tzZtFCOfs)

What is DNS?
------------

> DNS converts a hostname (example.com) to an IP Address (93.184.216.34)

When you connect your computer to the internet it gets a unique number that identifies it on the internet. This is called **Internet Protocol Address**, or IP Address in short. These IP addresses can be in [IPv4](https://en.wikipedia.org/wiki/IPv4)(192.62.9.1) or more complex [IPv6](https://en.wikipedia.org/wiki/IPv6) (2001:0db8:85a3:0000:0000:8a2e:0370:7334) formats.

However, humans are more capable of remembering meaningful (or not) names than numbers. For example, which one is easier for you? facebook.com or 192.161.82.254? When you have multiple websites, it makes much harder to remember numbers. Therefore, we use names (called **hostnames**) to access the websites on the internet.

**Examples**: google.com, facebook.com, wikipedia.com, en.wikipedia.com

After you enter a hostname (example.com) in your web browser, the browser has no idea where the server of example.com is. Then, the browser connects to the Domain Name System (DNS), which translates a **hostname** to an **IP address**, to find the actual IP address of the server.

DNS is a large collection of servers and databases that works in a procedure which is called **DNS protocol**.

![](https://talk.hyvor.com/blog/wp-content/uploads/2020/01/a7f51433-7b1b-4f00-84f6-313c622aa749.png)

A Simple Representation of How DNS Works

How DNS Works?
--------------

Even the above image shows it in two steps, the actual Domain Name System includes multiple steps and different types of servers specialized in certain tasks. First, let's see the types of servers and why they are there.

The Domain Name System mainly comprises 4 types of servers.

1.  **DNS Recursor** -- A person who is finding a book in a library
2.  **Root Nameserver** -- A corridor in the library
3.  **Top-Level Domain (TLD) Nameserver** -- A rack in that corridor named the book's category.
4.  **Authoritative Nameserver** -- The book

After we find the book, we can find the IP address of our hostname there. **However**, this library scene is an analogous situation not identical. Let's see what each server's responsibilities are.

#### Server 1: DNS Recursor

![DNS recursive resolver](https://www.cloudflare.com/img/learning/dns/dns-server-types/recursive-resolver.png)

Source: [Cloudflare](https://cloudflare.com/)

The first thing out from your computer but in the Domain Name System is the **DNS Recursor** (or Resolver). When we request example.com in the browser, the browser needs a way to find the IP address of it. So, it asks for help from the DNS Recursor.

The DNS Recursor is provided by your [Internet Service Provider](https://en.wikipedia.org/wiki/Internet_service_provider). However, it doesn't have any idea of the IP address of the given hostname. It will recursively send requests to other servers to find the exact IP.

*You have an address of a person abroad and need to find him. First, you go to his country. Then, his province. Then, his district. Then, his town. Then, his street. Finally, his house.*

The same logic is here. DNS Recursor needs to find the IP (person) of the hostname (address).

-   It first asks a **Root Nameserver** and will get the address of the TLD Nameserver.
-   It then asks the **TLD Nameserver** and will get the address of the authoritative nameserver.
-   It finally asks the **Authoritative Nameserver** and will get the actual IP of the server of the hostname. Yay! 🎉

#### Server 2: Root Nameserver

![DNS root nameserver](https://www.cloudflare.com/img/learning/dns/dns-server-types/root-nameserver.png)

Source: Cloudflare

There are only 13 Root Nameservers in the world ([source](https://www.ionos.com/digitalguide/server/know-how/what-is-a-root-server-definition-and-background/)) and all 13 are known to all the recursive nameservers. These ones too don't know what is the IP address of the hostname we are finding. (Shame? No.) It knows one invaluable thing: where the data regarding the hostname's Top-Level Domain is saved.

For instance, if the hostname is **example.com**, the root nameserver sends back the address of the Top-Level Nameserver of all the **.com** domains.

#### Server 3: TLD Nameserver

![DNS TLD nameserver](https://www.cloudflare.com/img/learning/dns/dns-server-types/tld-nameserver.png)

Source: Cloudflare

A TLD Nameserver maintains the data of all the domains of a specific Top-Level Domain, such as .com, .org, .io, etc. When the DNS Recursor requests the information of example.com, for example, the TLD Nameserver will return the address of the Authoritative Nameserver. (Don't worry it's the last step)

### Server 4: Authoritative Nameserver

![DNS authoritative nameserver](https://www.cloudflare.com/img/learning/dns/dns-server-types/authoritative-nameserver.png)

Source: Cloudflare

An Authoritative Nameserver is responsible to maintain information about a single domain. When the DNS Recursor requests example.com's IP address from its Authoritative Nameserver, it will run DNS Lookup to find the IP address. In this process, it will look for A or CNAME records (More on that later). If found, it returns the IP address of the hostname.

Let's sum it up...

-   You type example.com on your browser.
-   Your browser requests the IP address from the DNS Recursor (or Resolver)
-   The Recursor sends requests to the following step by step to find the address of the next one.
    -   Root Nameserver
    -   TLD Nameserver
-   Finally, the request to the Authoritative Nameserver of the domain will return the IP address of the requested hostname to the DNS Recursor to the browser.

Now, your browser will render and display the website! 💪 (If the website was found)

What is **DNS Caching**?
------------------------

You call your mom every day. It's much easier when you save her number at the top of your phone's favorite numbers list rather than searching for it every time you need it. Right?

The concept of DNS caching is similar to that. The meaning of [Caching](https://aws.amazon.com/caching/) is temporarily saving data in an easily-accessible location to retrieve easily without processing, mainly to improve performances. DNS caching involves the DNS, and it can be done at any of the DNS servers, at the user's OS or even at the user's browser. The nearer the cached data to the user's browser the faster it can be retrieved. (Logical right?)

Note: NDNS data is only cached for a predefined amount of time which is called **[TTL](https://en.wikipedia.org/wiki/Time_to_live)** (Time To Live).

**Example DNS Resolving with Caching:**

-   You request example.com from the browser.
-   The browser checks its cache for the DNS data.
    -   If found, it terminates the DNS resolving and sends the request directly to the IP address.
    -   If not, it asks for it from the DNS Recursor.
-   The DNS Recursor checks its cache for the DNS data of the requested domain.
    -   If found, it terminates the DNS resolving and sends the IP address back to the browser without further requests.
    -   If not, continues the DNS resolving process...
-   ......

You can understand that the request only reaches the Authoritative server rarely (unless the domain is new).

DNS Records
-----------

Have you ever set up your own domain for a website? Then, you must have been confused at this point: **DNS Records**.

Let's be practical. Suppose that you just bought your dream domain. The company where you bought the domain will (and must) provide you the facility to change the **nameserver address of the domain**. By default, they are usually pointed to a nameserver managed by that company itself. However, you can use a custom nameserver or a free service like Cloudflare. This process is called **pointing your domain to nameservers.** It isn't a new kind of nameserver but what we learned previously as "**Authoritative Nameserver**".

Then, you will get a web-based DNS record manager which is usually called **DNS Zone** where you can add/remove/edit DNS records for your newly bought domain.

The details of the domain are saved in these DNS records. It's like a file stack of an investigation -- it contains much information about your domain.

### Adding a DNS Record

Once you are in the DNS Zone of your domain, you can add a DNS record with the following data

-   Type -- one of the DNS Record types (below 5 or any other)
-   Host -- Use `@` for the root domain. Or, use a subdomain like `www`, `blog`.
-   Value -- Depends on the type.
-   TTL (optional) -- Time-to-live. Recommended to use Auto.
-   Priority (only for MX records) -- Set the priority (Don't worry. Your email service will give that)

### Types of DNS Records

While there is a bunch of DNS records, here are the most common ones.

| **Record Type** | **Stands For** | **Description** |
|------------------|---------------|-----------------|
| A | Address | Map a hostname to IPv4. The value should be an IP address. |
| AAAA | Address | Same as A with the exception of using IPv6. |
| CNAME | Canonical Name | Map a hostname to another hostname. If the server doesn't have a static IP, this can be useful. Commonly used to forward `www` to `@`. You can also forward to an external domain (`blog` to `my-blog.herukodns.com`) |
| MX | Mail Exchange | Direct mail to an email server. You can set priority to choose which one to use first. |
| TXT | Text | Store a note/value. Frequently used to verify your website. |

FAQ
---

**Q: Why such a complex process? Can't we have only one database?**
There are more than 0.3 billion domain names registered. Having all of the data and resolving hostnames from one server isn't practical. Therefore, in 1983, [Paul Mockapetris](https://en.wikipedia.org/wiki/Paul_Mockapetris) invented the DNS. It's a type of decentralizing for the ease of data handling and speed.

**Q: What is the difference between domain and hostname?**
Hostnames: example.com, blog.example.com, shop.example.com. Domain: only example.com. Got it? [Learn more here](https://superuser.com/questions/59093/difference-between-host-name-and-domain-name).

**Q:** **Why does it take time to see DNS record changes?**
It's because of DNS caching. Try clearing the DNS cache of your browser and OS. If it doesn't work yet, I have to say, you have to practice a little patience 😉.

In this article, we discussed what is DNS, how DNS works, DNS caching, and DNS records. If you have any questions to ask, please comment below.

Thank you!

*Originally Published on [Hyvor Talk Blog](https://talk.hyvor.com/blog/dns/). Hyvor Talk is a commenting platform for blogs. We also help our users to grow by sharing tips and blog posts.*