Let me try to do this justice while maintaining an easy to understand tone:
A DNS resolves an IP to a domain name, basically how to stated above. If you run your own DNS server, and your ISP doesn't block port 53 (the standard DNS port IIRC) then you can certainly do that resolving yourself. However, it is really labor intensive to do this, when there are services available that do this for free ( http://zoneedit.com
). But should you want to learn and play (as I do
) then feel free to read on. Your DNS server will contain zones, this zone data is basically the info needed by the world to translate your IP/domain. Your DNS server will communicate with other DNS servers, that communicate with other DNS servers... until they reach the backbone (which contains about 13 primary DNS servers, again IIRC...). These are the DNS servers that your ISP's DNS servers likely communicate with directly. Now, assuming you want to get to linuxquestions.org, you just type into your browser address bar:
And what happens is as follows (kind of):
You send the request to your ISP's DNS server (assuming you don't have your own yet) and they check their cache file to see if they have this resolved already locally. If not, they then turn and send a request out to another DNS server, farther up the chain, to see if it has this info, if not it either returns a non-existent page (a contact error of sorts, try going to a domain that doesn't exist and you'll see what I mean), or it returns the resolve info, and then your ISP's DNS server returns the info to you and bam, you are on LQ. Now the next time you go the linuxquestions.org, your ISP's DNS servers don't really have to go out and get the info (depending on how often they flush their cache) so the resolve is faster.
Where is your DNS server info stored?
If you decide to try to run your DNS server, you'll edit this file to your personal IP rather than your ISP's DNS server IP's that are currently in that file.