DNS (Domain Name System)
What is DNS?
Each computer directly connected to the Internet has at least one specific IP address. However, users do not want to work with numerical addresses such as 194.153.205.26 but with a domin name or more specifically addresses (called FQDN addresses) such as www.commentcamarche.net.
It is possible to associate names in normal language with numerical addresses thanks to a system called DNS (Domain Name System).
This correlation between the IP addresses and the associated domain name is called domain name resolution (or address resolution).
Host names
At the beginning of TCP/IP, since the networks were not very extensive, or in other words the number of computer connected to the same network was low, network administrators created files called manual conversion tables. These manual conversion tables were sequential files, generally called hosts or hosts.txt, associating on each line the IP address of the machine and the related literal name called the host name.
Introduction to the Domain Name System
However, the previous system of conversion tables required manual updating of the tables for all computers in the event of an addition or modification of a machine name. So with the explosion in the size of networks and their interconnection, it was necessary to implement a management system for names which was hierarchical and easier to administrate. The system called Domain Name System (DNS) was developed in November 1983 by Paul Mockapetris (RFC 882 and RFC 883) then revised in 1987 in RFCs 1034 and 1035. DNS has been subject to many RFCs.
This system offers:
- an hierarchical namespace allowing the uniqueness of a name to be guaranteed in a tree structure, like Unix file systems.
- a system of distribution servers enabling namespace to be made available.
- a client system making it possible to “resolve” domain names, i.e. interrogate the servers to find out the IP address corresponding to a name.
Namespace
The structure of the DNS system relies on a tree structure where the higher level domains (called TLD, for Top Level Domains) are defined, attached to a root node represented by a dot.
Each node of the tree is called a domain name. Each node has a label with a maximum length of 63 characters.
All domain names therefore make up an inverse tree where each node is separated from the following node by a dot (“.”).
The end of a branch is called the host, and corresponds to a machine or entity on the network. The host name given to it must be unique in the respective domain, or if the need arises in the sub-domain. For example a domain’s web server generally bears the name www.
The word “domain” formally corresponds to the suffix of a domain name, i.e. the tree structure’s collection of node labels, with the exception of the host.
The absolute name relating to all the node labels of a tree structure, separated by dots, and finished by a final dot is called the FQDN address (Fully Qualified Domain Name). The maximum depth of the tree structure is 127 levels and the maximum length of a FQDN name is 255 characters. The FQDN address makes it possible to uniquely locate a machine on the network of networks. So, www.commentcamarche.net. is an FQDN address.
Domain name servers
The machines called domain name servers make it possible to establish the link between domain names and IP addresses of machines on a network.
Every domain has a domain name server, called a primary domain name server, as well as a secondary domain name server, able to take over from the primary domain name server in the event of unavailability.
Every domain name server is declared in the domain name server of the immediately higher level, meaning authority can implicitly be delegated over the domains. The name system is a distributed architecture, where each entity is responsible for the management of its domain name. Therefore, there is no organization with responsibility for the management of all domain names.
The servers relating to the top level domains (TLD) are called “root name servers“. There are 13 of them, distributed around the planet with the names “a.root-servers.net” to “m.root-servers.net”.
A domain name server defines a zone, i.e. a collection of domains over which the server has authority. The domain name system is transparent for the user, nevertheless, the following points must be remembered:
- Each computer must be configured with the address of a machine capable of transforming any name into an IP address. This machine is called the Domain Name Server. Don’t panic: when you connect to the Internet, the service provider will automatically change your network parameters to make these domain name servers available to you.
- The IP address of a second Domain Name Server (secondary Domain Name Server) must also be defined: the secondary domain name server can take over from the primary domain name server in the event of malfunction.
The most commonly used server is called BIND (Berkeley Internet Name Domain). This is free software available under UNIX systems, initially developed by the University of Berkeley in California and now maintained by ISC (Internet Systems Consortium).
Domain name resolution
The consistent mechanism for finding the IP address relating to a host name is called “domain name resolution“. The application making it possible to conduct this operation (generally integrated in the operating system is called “resolving“.
When an application wants to connect to a known host by its domain name (e.g. “www.commentcamarche.net”), it interrogates a domain name server defined in its network configuration. In fact, each machine connected to the network has the IP addresses of its service provider’s two domain name servers in its configuration.
A request is then sent to the first domain name server (called the “primary domain name server”). If this domain name server has the record in its cache, it sends it to the application, if not, it interrogates a root server (in our case a server relating to the TLD “.net”). The root name server sends a list of domain name servers with authority over the domain (in this case, the IP addresses of the primary and secondary domain name servers for commentcamarche.net).
The primary domain name server with authority over the domain will then be interrogated and will return the corresponding record to the domain host (in our case www).
Record types
A DNS is a distributed database containing records known as RR (Resource Records), relating to domain names. They alone are concerned with reading the information after the people responsible for the administration of a domain, the operation of domain name servers being totally transparent to users.
Because of the cache system enabling the DNS system to be distributed, the records for each domain have a lifetime known as TTL (Time to Live) enabling the intermediary servers to know the information’s expiry date and therefore know if it is necessary to verify it or not.
Generally, a DNS record contains the following information:
Domain name (FQDN) | TTL | Type | Class | RData |
---|---|---|---|---|
www.commentcamarche.net. | 3600 | A | IN | 163.5.255.85 |
- Domain name: the domain name must be a FQDN name, i.e. must end in a dot. If the dot is missing, the domain name is relative, that is the principal domain name will suffix the entered domain;
- Type: a value out of 16 bits specifying the type of resource described by the record. The resource type may be one of the following:
- A: this is a base type establishing the correspondence between the canonical name and an IP address. Moreover, there can be several A records relating to different network machines (servers).
- CNAME (Canonical Name): this enables an alias to be linked to the canonical name. It is particularly useful for supplying alternative names relating to different services on the same machine.
- HINFO: this is solely a descriptive field allowing the description in particular of the host’s hardware (CPU) and operating system (OS). You are generally advised not to complete it in order to avoid supplying information which can be useful to computer pirates.
- MX (Mail eXchange): relates to the email server. When a user sends an email to an address (user@domain), the outgoing mail server interrogates the domain name server with authority over the domain in order to obtain the MX record. There can be several MX records per domain, in order to supply a repetition in the event of the breakdown of the principal email server. So, the MX record allows a priority with a value between 0 and 65,535 to be defined:
www.commentcamarche.net. IN MX 10 mail.commentcamarche.net.
-
- NS: relates to the domain name server with authority over the domain.
- PTR: a pointer towards another part of the domain namespace.
- SOA (Start Of Authority): the SOA field allows the description of the domain name server with authority over the zone, as well as the email address of the technical contact (where the “@” character is replaced by a dot).
- Class: the class can either be IN (relating to internet protocols, so this is the system used in our case), or CH (for the chaotic system);
- RDATA: this is the data relating to the record. Here is the expected information according to the record type:
- A: a 32 bit IP address;
- CNAME: a domain name;
- MX: a priority 16 bit value, followed by the host name;
- NS: a host name;
- PTR: a domain name;
- SOA: several fields.
Top level domains
There are two categories of TLD (Top Level Domains):
- Domains known as “generic”, called gTLD (generic TLD). gTLDs are top level generic domain names offering a classification according to the sector of activity. So each gTLD has its own access rules:
- historic gTLD:
- .arpa relates to machines from the original network;
- .com initially related to companies with a commercial purpose. However, this TLD became the “default TLD” and the purchase of domains with this extension is possible, including by individuals.
- .edu relates to educational organizations;
- .gov relates to governmental organizations;
- .int relates to international organizations;
- .edu relates to military organizations;
- .net initially related to organizations dealing with the networks. Over several years this TLD has become a common TLD. The purchase of domains with this extension is possible, including by individuals.
- .org usually relate to not for profit organizations.
- new gTLD introduced in November 2000 by ICANN:
- .aero relates to the aeronautical industry;
- .biz (business) relating to commercial companies;
- .museum relating to museums;
- .name relating to the name of people or imaginary people;
- .info relates to organizations dealing with information;
- .coop relating to cooperatives;
- .pro relating to liberal professions.
- special gTLD:
- .arpa relates to the network management infrastructures. The arpa gTLD also serve for the inverse resolution of network machines, enabling the name relating to an IP address to be found.
- historic gTLD:
- Domains known as “national”, called ccTLD (country code TLD). The ccTLD relate to the different countries and their names relate to the country name abbreviations defined by the ISO 3166 standard. The table below summarises the list of ccTLD.
Code | Country |
---|---|
AC | Ascension Islands |
AD | Andorra |
AE | United Arab Emirates |
AF | Afghanistan |
AG | Antigua and Barbuda |
AI | Anguilla |
AL | Albania |
AM | Armenia |
AN | Netherlands Antilles |
AO | Angola |
AQ | Antarctica |
AR | Argentina |
AS | American Samoa |
AT | Austria |
AU | Australia |
AW | Aruba |
AZ | Azerbaijan |
BA | Bosnia-Herzegovina |
BB | Barbados |
BD | Bangladesh |
BE | Belgium |
BF | Burkina Faso |
BG | Bulgaria |
BH | Bahrain |
BI | Burundi |
BJ | Benin |
BM | Bermuda |
BN | Brunei |
BO | Bolivia |
BR | Brazil |
BS | Bahamas |
BT | Bhutan |
BV | Bouvet Island |
BW | Botswana |
BY | Belorussia |
BZ | Belize |
CA | Canada |
CC | Cocos Islands |
CD | Democratic Republic of Congo |
CF | Central African Republic |
CG | Congo |
CH | Switzerland |
CI | Ivory Coast |
CK | Cook Islands |
CL | Chile |
CM | Cameroon |
CN | China |
CO | Columbia |
COM | Commercial organization |
CR | Costa Rica |
CU | Cuba |
CV | Cape Verde |
CX | Christmas Island |
CY | Cyprus |
CZ | Czech Republic |
DE | Germany |
DJ | Djibouti |
DK | Denmark |
DM | Dominique |
DO | Dominican Republic |
DZ | Algeria |
EC | Ecuador |
EDU | Organisation with educational links |
EE | Estonia |
EG | Egypt |
EH | Western Sahara |
ER | Eritrea |
ES | Spain |
ET | Ethiopia |
EU | Europe |
FI | Finland |
FJ | Fiji |
FK | Falkland Islands (Malvinas) |
FM | Micronesia |
FO | Faeroe Islands |
FR | France |
FX | France (European Territory) |
GA | Gabon |
GB | Great Britain |
GD | Grenada |
GE | Georgia |
GF | French Guyana |
GG | Guernsey |
GH | Ghana |
GI | Gibraltar |
GL | Greenland |
GM | Gambia |
GN | Guinea |
GOV | Government organization |
GP | Guadeloupe |
GQ | Equatorial Guinea |
GR | Greece |
GS | South Georgia |
GT | Guatemala |
GU | Guam (USA) |
GW | Guinea Bissau |
GY | Guyana |
HK | Hong Kong |
HM | Heard and McDonald Islands |
HN | Honduras |
HR | Croatia |
HT | Haiti |
HU | Hungary |
ID | Indonesia |
IE | Ireland |
IL | Israel |
IM | Isle of Man |
IN | India |
IO | British Indian Ocean Territory |
IQ | Iraq |
IR | Iran |
IS | Iceland |
IT | Italy |
JM | Jamaica |
JO | Jordan |
JP | Japan |
KE | Kenya |
KG | Kyrgyzstan |
KH | Cambodia |
KI | Kiribati |
KM | Comoros |
KN | Saint Kitts and Nevis |
KP | North Korea |
KR | South Korea |
KW | Kuwait |
KY | Cayman Islands |
KZ | Kazakhstan |
LA | Laos |
LB | Lebanon |
LC | Saint Lucia |
LI | Liechtenstein |
LK | Sri Lanka |
LR | Liberia |
LS | Lesotho |
LT | Lithuania |
LU | Luxembourg |
LV | Latvia |
LY | Libya |
MA | Morocco |
MC | Monaco |
MD | Moldova |
MG | Madagascar |
MH | Marshall Islands |
MK | Macedonia |
ML | Mali |
MIL | Military organization |
MM | Myanmar |
MN | Mongolia |
MO | Macau |
MP | Northern Mariana Islands |
MQ | Martinique |
MR | Mauritania |
MS | Montserrat |
MU | Maurice Island |
MV | Maldives |
MW | Malawi |
MX | Mexico |
MY | Malaysia |
MZ | Mozambique |
NA | Namibia |
NC | New Caledonia |
NE | Niger |
NET | Organisation with Internet links |
NF | Norfolk Islands |
NG | Nigeria |
NI | Nicaragua |
NL | The Netherlands |
NO | Norway |
NP | Nepal |
NR | Nauru |
NT | Neutral Zone |
NU | Niue |
NZ | New Zealand |
OM | Oman |
ORG | Non referenced organization |
PA | Panama |
PE | Peru |
PF | French Polynesia |
PG | Papua New Guinea |
PH | Philippines |
PK | Pakistan |
PL | Poland |
PM | Saint-Pierre and Miquelon |
PN | Pitcairn |
PR | Puerto Rico (USA) |
PS | Palestinian Territories |
PT | Portugal |
PY | Paraguay |
PW | Palau |
QA | Qatar |
RE | Réunion |
RO | Romania |
RU | Russian Federation |
RW | Rwanda |
SA | Saudi Arabia |
SB | Solomon Islands |
SC | Seychelles |
SD | Sudan |
SE | Sweden |
SG | Singapore |
SH | Saint Helena |
SI | Slovenia |
SJ | Svalbard and Jan Mayen Islands |
SK | Slovak Republic |
SL | Sierra Leone |
SM | San Marin |
SN | Senegal |
SO | Somalia |
SR | Suriname |
ST | Sao Tomé and Principe |
SU | Soviet Union |
SV | El Salvador |
SY | Syria |
SZ | Swaziland |
TC | Turks and Caicos Islands |
TD | Chad |
TF | French Austral Territories |
TG | Togo |
TH | Thailand |
TJ | Tajikistan |
TK | Tokelau |
TM | Turkmenistan |
TN | Tunisia |
TO | Tonga |
TP | East Timor |
TR | Turkey |
TT | Trinidad and Tobago |
TV | Tuvalu |
TW | Taiwan |
TZ | Tanzania |
UA | Ukraine |
UG | Uganda |
UK | United Kingdom |
UM | US Minor Outlying Islands |
US | United States |
UY | Uruguay |
UZ | Uzbekistan |
VA | Vatican City |
VC | Saint-Vincent and the Grenadines |
VE | Venezuela |
VG | British Virgin Islands |
VI | American Virgin Islands |
VN | Vietnam |
VU | Vanuatu |
WF | Wallis and Futuna |
WS | Western Samoa |
YE | Yemen |
YT | Mayotte |
YU | Yugoslavia |
ZA | South Africa |
ZM | Zambia |
ZR | Zaire |
ZW | Zimbabwe |