Home > Articles

  • Print
  • + Share This
This chapter is from the book

DNS Concepts

At one time or another, most of us have typed a universal resource locator (URL) to get to one of our favorite websites. Before you can view the website stored on a web server, that URL you typed must be resolved to an IP address, and this is where DNS servers come into play.

You might have also heard the term fully qualified domain name (FQDN). An FQDN contains both the hostname and a domain name. It uniquely identifies a host within a DNS hierarchy. For example, www.bayside.net is an FQDN. Every FQDN is broken down into different levels, each separated by a period. In the preceding example, .net is the top-level domain and bayside is the second-level domain. The top-level domain normally identifies the type of organization, such as a government organization (gov) or an educational organization (edu). The second-level domain indicates a specific domain within that top-level namespace, whereas the third level might indicate a specific host within that domain. In all cases, DNS servers are used to resolve FQDNs to IP addresses.

DNS Queries

A DNS query is a request for name resolution. Name resolution requests can be initiated by both DNS clients and DNS servers. A DNS client sends a query to a DNS server and a DNS server can send a query to another DNS server on behalf of a client.

DNS can use two different processes to resolve queries: recursive and iterative. With a recursive query, the DNS client requires the DNS server to respond with the IP address of the request or an error message that the requested name does not exist. The DNS server cannot refer the client to another DNS server if it cannot map the request to an IP address. When a DNS server receives a recursive request, it queries other DNS servers until it finds the information or until the query fails.

With an iterative query, the DNS server uses zone information and its cache to return the best possible answer to the client. If the DNS server does not have the requested information, it can refer the client to another DNS server. An iterative query is typically performed by a DNS server once it has received a recursive query from a DNS client.

For example, when a DNS client enters www.bayside.net into a browser, the following process occurs:

  1. A DNS client sends a recursive query to the local DNS server.
  2. Before forwarding the request to a root server, the DNS server checks its local cache to determine whether the name has recently been resolved. If there is an entry in the local cache, the IP address is returned to the client.
  3. If no entry exists in the cache for the hostname, an iterative query is sent by the DNS server to a root name server.
  4. The root name server refers the DNS server to a name server responsible for the first-level domain within the hostname. For example, the root name server would refer the request to the bayside.net DNS server.
  5. The original DNS server is referred to second-level DNS servers, and then third-level DNS servers, until one of them can resolve the host-name to an IP address and return the results back to the client.

DNS Forwarders

DNS servers often must communicate with DNS servers outside of the local network. A forwarder is an entry that is used when a DNS server receives DNS queries that it cannot resolve locally. It then forwards those requests to external DNS servers for resolution.

By configuring forwarders, you can specify which DNS servers are responsible for handling external traffic. Otherwise, all DNS servers can send queries outside of the local network, possibly exposing DNS information to untrusted hosts on the Internet. Configuring forwarding adds another level of security to the network because only servers identified as forwarders are permitted to forward queries outside the local network.

Additionally, if all DNS servers were allowed to forward queries outside the network, the result could be a large amount of unnecessary network traffic. This can become an important issue if the Internet connection is slow, costly, or already heavily used. Because a forwarder receives queries from local DNS servers, it builds up a large amount of cache information. This means that many of the queries received by the forwarder can be resolved from the cache instead of forwarding the requests outside the local network. This is obviously more efficient in terms of network traffic.

When a DNS server configured to use forwarding receives a DNS query from a DNS client, the following process occurs:

  1. The DNS server first attempts to resolve the request using its zone information and information within its local cache.
  2. If the request cannot be resolved locally, the DNS server sends a recursive query to the DNS server designated as the forwarder.
  3. The forwarder attempts to resolve the query. If the forwarder does not respond, the DNS server attempts to resolve the request by contacting the appropriate DNS server, as specified in the root hints. (Root hints list authoritative root servers for the Internet.)

Conditional Forwarder

A DNS server can be configured to send all queries that it cannot resolve locally to a forwarder, and you can also configure conditional forwarders. With conditional forwarders, DNS servers are configured to forward requests to different servers based on the DNS name within the query. When configuring conditional forwarding, you must specify the following information:

  • The domain name for which queries will be forwarded
  • The IP address of the DNS server for which unresolved queries for a specified domain should be forwarded

DNS Server Caching

Caching is designed to improve response times. A DNS server caches the queries that it resolves to improve response time and reduce network traffic.

When performing a recursive query on behalf of a client, the DNS server caches all the information it receives from other DNS servers. Information is kept in the cache for a specified amount of time known as the Time to Live (TTL). The TTL is set by the administrator for the primary zone.

When the data is cached, the TTL begins to count down. After the TTL expires, the data is deleted from the cache.

DNS clients also maintain a cache. If a DNS server resolves a query from its cache, it returns the remaining TTL for the data to the DNS client. The DNS client in turn, caches the information and uses the TTL to determine when the entry expires.

  • + Share This
  • 🔖 Save To Your Account