The term resolver can be used both as a generic term to describe any software entity that resolves names to IPs or more specifically to define a set of functions supplied as part of the standard C network/socket libraries (i.e. glibc6 in *nix systems) or supplied as part of a package (e.g. BIND). These functions are used by applications to answer questions such as 'what is the IP address of this host'. The most common method to invoke such resolver services, used by your browser among many other applications, is to use the POSIX socket functions 'gethostbyname' (or 'getaddrinfo' for sock2) for name to IP and 'gethostbyaddr' (replaced by 'getnameinfo' in sock2) for IP to name.
Resolvers are quite complicated and are defined to be capable of following referrals (they can work with systems that do not support recursive queries. However almost all resolvers (both Windows and *nix) are stub resolvers. A stub resolver is a minimal resolver which will only work with a DNS that does support recursive queries, specifically stub-resolvers cannot follow referrals. Some newer Windows systems (Windows 2K and XP) provide what is called a caching resolver. This resolver is a stub resolver but does maintain a cache of responses to minimize network access and increase performance.
There are a number of ways your system can resolve a name and the actual order will vary based on your configuration:
hosts files nisplus dnsIndicating look at /etc/hosts, then use NIS (Network Information Systems), then DNS (via resolv.conf)
order hosts,bindIndicating look at /etc/hosts then DNS (using resolv.conf)
hosts dns filesWhich means use DNS (via resolve.conf) then /etc/hosts.
If you want to know more about resolvers on *nix systems read Chapter 6 from the Linux Network Administrators Guide.
3 reverse map
4 dns types
5 install bind
8 dns records
12 bind api's
13 dns security
bits & bytes
notes & tips