In The Real World |
DNS resolving from program to OS-resolver to ISP-resolver to greater
system.
Users generally do not communicate directly with a DNS resolver. Instead
DNS-resolution takes place transparently in client-applications such as
web-browsers, mail-clients, and other Internet applications. When an application
makes a request which necessitates a DNS lookup, such programs send a resolution
request to the local DNS resolver in the local operating system, which in turn
handles the communications required.
The DNS resolver will almost invariably have a cache (see above) containing
recent lookups. If the cache can provide the answer to the request, the resolver
will return the value in the cache to the program that made the request. If the
cache does not contain the answer, the resolver will send the request to one or
more designated DNS servers. In the case of most home users, the Internet
service provider to which the machine connects will usually supply this DNS
server: such a user will either have configured that server's address manually
or allowed DHCP to set it; however, where systems administrators have configured
systems to use their own DNS servers, their DNS resolvers point to separately
maintained nameservers of the organization. In any event, the name server thus
queried will follow the process outlined above, until it either successfully
finds a result or does not. It then returns its results to the DNS resolver;
assuming it has found a result, the resolver duly caches that result for future
use, and hands the result back to the software which initiated the request.
Broken resolvers
An additional level of complexity emerges when resolvers violate the rules of
the DNS protocol. It has been suggested
that a number of large ISPs have configured their DNS servers to violate rules
(presumably to allow them to run on less-expensive hardware than a
fully-compliant resolver), such as by disobeying TTLs, or by indicating that a
domain name does not exist just because one of its name servers does not
respond.
As a final level of complexity, some applications (such as web-browsers) also
have their own DNS cache, in order to reduce the use of the DNS resolver library
itself. This practice can add extra difficulty when debugging DNS issues, as it
obscures the freshness of data, and/or what data comes from which cache. These
caches typically use very short caching times � of the order of one minute.
Internet Explorer offers a notable exception: recent versions cache DNS records
for half an hour.
|