Domain Name System Overview --------------------------- The Domain Name System (DNS) is a distributed database system that provides a mechanism for translating host names to IP addresses and IP addresses to host names. DNS operates in a client-server environment, with the client referred to as the resolver and the server referred to as the name server. The resolver software on a host machine initiates a request to a name server when trying to determine the IP address of a given hostname. This hostname resolution is required by programs such as Telnet and FTP. The name server provides the requested information to the resolver. The information is obtained from DNS database files resident on the name server host. These files contain the necessary information for translating host names to IP addresses and vice versa. There are two types of name servers defined in DNS, primary and secondary. Both types provide the same service of hostname resolution. The difference between the two is with the DNS database files. The primary name server keeps the master copy of a domain's DNS database files on its machine. Any additions or changes in the domain are made to these files. The secondary name server copies its domain's DNS database files from the primary server via a 'zone transfer' operation. Whenever a change is made to the primary servers DNS files, a serial number for the file must be incremented. The secondary server will periodically check with the primary to see if the serial number of the zone's configuration has changed. If it has, then the secondary will initiate another zone transfer of the DNS database files from the primary. DNS provides these two types of name servers to make administration easier. It also allows for redundancy in case one name server becomes unavailable, and can also be used to spread the name server load among multiple hosts. The most common implementation of DNS is a program called BIND, and it is found on (or is freely available for) most U*IX implementations. The actual network "daemon" that runs is called "named". In fact, BIND is so popular and its influence so widespread (it was the "reference implementation" mentioned in the RFC that originally described DNS) that even if your nameserver isn't BIND running under U*IX, the datafiles are probably identical to BIND's. BIND format is used in this tutorial. ------------------------------------------------------------------------------ Resources found on the web: --------------------------- These example files can be found (for a limited time only :-) at: http://comp.uark.edu/~sbour O'Reilly Online Catalog page for the book "DNS and BIND" (highly recommended): http://www.ora.com/catalog/dns2 TCP/IP tutorial (a bit old, but still a good starting place to learn more about TCP/IP): http://oac3.hsc.uth.tmc.edu/staff/snewton/tcp-tutorial/index.html Perl cgi script to maintain DNS information via the Web (rather complete, but *not* for the timid): http://webdns.lcs.mit.edu/cgi-bin/webdns