When a DNS client needs to look up a name used in a program, it queries DNS
servers to resolve the name. Each query message the client sends contains three
pieces of information, specifying a question for the server to answer:
- A specified DNS domain name, stated as a fully qualified domain name (FQDN)
- A specified query type, which can either specify a resource record by type
or a specialized type of query operation
- A specified class for the DNS domain name.
For Windows DNS servers, this should always be specified as the Internet (IN)
For example, the name specified could be the FQDN for a computer, such as
"host-a.example.microsoft.com.", and the query type specified to look for an
address (A) resource record by that name. Think of a DNS query as a client
asking a server a two-part question, such as "Do you have any A resource records
for a computer named 'hostname.example.microsoft.com.'?" When the client
receives an answer from the server, it reads and interprets the answered A
resource record, learning the IP address for the computer it asked for by name.
DNS queries resolve in a number of different ways. A client can sometimes
answer a query locally using cached information obtained from a previous query.
The DNS server can use its own cache of resource record information to answer a
query. A DNS server can also query or contact other DNS servers on behalf of the
requesting client to fully resolve the name, then send an answer back to the
client. This process is known as recursion.
In addition, the client itself can attempt to contact additional DNS servers
to resolve a name. When a client does so, it uses separate and additional
queries based on referral answers from servers. This process is known as
In general, the DNS query process occurs in two parts:
- A name query begins at a client computer and is passed to a resolver, the
DNS Client service, for resolution.
- When the query cannot be resolved locally, DNS servers can be queried as
needed to resolve the name.