On modern local area networks, devices use a few different techniques to resolve names. Specifically, just to name a few, things like DNS, Avahi, zeroconf, mDNS, Bonjour, NetBIOS, WINS, or even manual hosts files. Some of these are, I believe, different terms for basically the same thing. Some use decentralized technologies, others rely on DHCP to distribute central addresses.
How do current common operating systems go through these different, possibly conflicting, name resolution techniques? What order do they use? Do different OSes have different behaviors?
When one asks for the IP of foobar
, when is the local search domain appended to the name -- after initial name resolution fails, before it asks something on the network, or some other time? Can (and/or do) DNS resolvers add search domains when trying to find an entry in their tables?
Why did the behavior of my clients change when I specified a local search domain (as opposed to blank) in my router?
Some of these methods support and/or use the .local
tld/search domain. Is this only an Avahi thing?
How does adding a .
on the end of a domain change things? Does this simply prevent searching "local domain"? When I lookup google.com
, why don't I need the trailing .
?
Why doesn't my DNS resolver search for google.com.local
or google.com.MyLocalSearchDomain
?
Can you have nested search domains?
Are NetBIOS and WINS the same thing? What about avahi, bonjour, and others?
Follow up question: how do each of these services work? I understand that DNS uses a more conventional style of (essentially) one central server that each client is configured to use. However, the decentralized methods must use some other techniques to auto-discover names. How do those work?