The
primary function of DNS is to provide name resolution for requesting
clients, so the query mechanism is subsequently one of the most
important elements in the system. Two types of queries are commonly made
to a DNS database: recursive and iterative.
Performing Recursive Queries
Recursive queries are most
often performed by resolvers, or clients, that need a specific name
resolved by a DNS server. Recursive queries are also accomplished by a
DNS server if forwarders are configured to be used on a particular name
server. A recursive query essentially asks whether a particular record
can be resolved by a particular name server. The response to a recursive
query is either negative or positive. A common recursive query scenario
is illustrated in Figure 1.
Performing Iterative Queries
Iterative
queries ask a DNS server to either resolve the query or make a
best-guess referral to a DNS server that might contain more accurate
information about where the query can be resolved. Another iterative
query is then performed to the referred server and so on until a result,
positive or negative, is obtained.
In the example shown in Figure 10.11, Client1 in CompanyABC opens a web browser and attempts to browse to the website for www.microsoft.com.
A recursive query is initiated to the default name server; in this
case, Server1 is contacted. Because Server1 is authoritative only for
the companyabc.com namespace, and no entries exist for microsoft.com,
the query is sent to an “upstream” DNS server that is listed in the
root hints of the DNS server. That server, Server2, is not authoritative
for microsoft.com but sends a referral back to Server1 for Server3,
which is a name server for the .com namespace. Server3 knows that
Server4 handles name-resolution requests for microsoft.com and sends
that information back to Server1. A final iterative query is then sent
from Server1 to Server4, and Server4 successfully resolves www to the
proper IP address. Server1, with this information in hand, returns
Client1’s original recursive query with the proper IP address and
Client1’s browser successfully resolves www.microsoft.com.
This type of functionality
lies at the heart of the distributed nature of DNS and allows DNS
lookups to function as efficiently as they do.