DNS
From Linux 101, The beginner's guide to all things Linux.
The Domain Name System or DNS is a system that stores information about host names and domain names on networks, such as the Internet. Most importantly, it provides an IP address for each host name, and lists the mail exchange servers accepting e-mail for each domain.
The DNS forms a vital part of the Internet, because hardware requires IP addresses to perform routing, but humans use host names and domain names, for example in URLs and e-mail addresses.
Paul Mockapetris invented the DNS in 1983; the original specifications appear in RFC 882. In 1987 the publication of RFC 1034 and RFC 1035 updated the DNS specification and made RFC 882 and RFC 883 obsolete. Several more recent RFCs have proposed various extensions to the core protocols.
Contents |
[edit] How the DNS works
A domain name consists of two or more parts (technically labels) separated by dots. The rightmost label conveys the top-level domain or TLD (for example, the address www.clemson.edu has the top-level domain edu). Each label to the left specifies a subdivision or subdomain (for example, clemson.edu is a subdomain of edu and www.clemson.edu is a subdomain of clemson.edu). In theory, this subdivision can go down to 127 levels deep, and each label can contain up to 63 characters, as long as the whole domain name does not exceed a total length of 254 characters. But in practice some domain registries have shorter limits than that.
The DNS consists of a hierarchical set of DNS servers. Each domain or subdomain has one or more authoritative DNS servers that publish information about that domain. The hierarchy of authoritative DNS servers matches the hierarchy of domains.
An example may clarify this. Suppose a web browser needs to find out the IP address of www.clemson.edu. The browser starts out knowing only the IP address of a DNS server -- usually one that is provided by the ISP. It asks the DNS server at that address for the address of www.clemson.edu. The DNS server then queries one of the root servers -- for example, 198.41.0.4. The root server replies with a delegation meaning roughly, "I don't know the address of www.clemson.edu, but I do know that the DNS server at 204.74.112.1 has information on the edu domain." The browser then asks that DNS server, which replies, "I don't know the address of www.clemson.edu, but I do know that the DNS server at 207.142.131.234 has information on the clemson.edu domain." The browser asks this third DNS server, which replies with the required IP address. The whole process thus utilises recursive searching.
A number of practical refinements to this system exist:
- Host names and IP addresses do not necessarily match on a one-to-one basis. Many host names may correspond to a single IP address: combined with virtual hosting, this allows a single machine to serve many web sites. Alternatively a single host name may correspond to many IP addresses: this can facilitate load balancing.
- The task of performing DNS lookups usually falls to a DNS cache which remembers (for a limited time) the answers to all the queries it has asked. An organization or Internet service provider may run a DNS cache for all its users. By default, the Time to Live (TTL) value specified by the authoritative name server governs the length of time for caching all DNS requests.
- To provide resilience in the event of computer failure, multiple DNS servers provide coverage of each domain. In particular, thirteen root servers exist worldwide. DNS programs or operating systems have the IP addresses of these servers built in. The USA hosts, at least nominally, all but three of the root servers. However, because many root servers actually implement anycast, where many different computers can share the same IP address to deliver a single service over a large geographic region, most of the physical (rather than nominal) root servers now operate outside the USA.
The DNS uses Transmission Control Protocol (TCP) and User Datagram Protocol (UDP) ports 53 to serve requests. Almost all DNS queries consist of a single UDP request from the client followed by a single UDP reply from the server. TCP is typically used only when the response data size exceeds 512 bytes, or for such tasks as Asynchronous Full Transfer Zone.
[edit] DNS records
Important categories of data stored in the DNS include the following:
- An A record or address record maps a host name to its IP address.
- A CNAME record or canonical name record makes one domain name an alias of another. The aliased domain gets all the subdomains and DNS records of the original.
- An MX record or mail exchange record maps a domain name to a list of mail exchange servers for that domain.
- A PTR record or pointer record maps a host name to the canonical name for that host. Setting up a PTR record for a host name in the in-addr.arpa domain that corresponds to an IP address implements Reverse DNS lookup for that address. For example (at the time of writing), www.icann.net has the IP address 192.0.34.164, but a PTR record maps 164.34.0.192.in-addr.arpa to its canonical name, referrals.icann.org.
- An NS record or name server record maps a domain name to a list of DNS servers for that domain.
- An SOA record or start of authority record specifies the DNS server providing authoritative information about an Internet domain.
Other kinds of records simply provide information (for example, an LOC record gives the physical location of a host), or experimental data (for example, a WKS record gives a list of servers offering some well-known service such as HTTP or POP3 for a domain).
[edit] International domain names
Domain names must use only a subset of ASCII characters, preventing many languages from representing their names and words natively. ICANN has approved the Punycode-based Internationalizing Domain Names in Applications (IDNA) system, which maps Unicode strings into the valid DNS character set, as a workaround to this issue, and some registries have adopted IDNA.
[edit] DNS software
Various flavors of DNS software implement the DNS. However, the popular software of choice is BIND (Berkeley Internet Name Domain).
[edit] Ownership of domains
One can find the owner of a domain name by looking in the whois database: for most gTLDs ICANN holds a basic WHOIS, with the detailed WHOIS maintained by the domain registry which controls that domain.
For each of the 240+ Country Code top-level domains (ccTLDs) the registry (as part of its many functions) usually holds the entire authoritative WHOIS database for that extension.
[edit] Politics
Many investigators have voiced criticism of the methods used currently to control ownership of domains. Most commonly, critics claim abuse by monopolies or near-monopolies such as VeriSign Inc., and problems with assignment of top-level domains. The international body ICANN (the Internet Corporation For Assigned Names and Numbers) oversees the domain name industry.
[edit] US Truth in Domain Names Act
The US "Truth in Domain Names Act", in combination with the PROTECT Act, forbids knowingly using a misleading domain name with the intent of attracting people into viewing a visual depiction of sexually explicit conduct on the Internet.

