The motivation for the creation of domain names and the DNS system stems from the different ways of identifying devices in a computer network. Computers identify each other with numerical designations, which is the easiest and most natural way for them, and using name designations would be too complicated and slow for them. On the other hand, people do not like to remember identification numbers and various codes, but prefer to assign simple and easy-to-remember names that their brain remembers well. Appropriate naming is gaining in importance at a time when various organizations, groups, companies and individuals need to present themselves to others on the Internet and it is necessary for them to choose clear and easy-to-remember markings of the place where their presentation can be found.
Therefore, because computers communicate between each other with network numbers while people use names, there must be a mechanism that allows people to communicate with computers. This is one of the main tasks of the Domain Name System (DNS), which takes care of the translation between numeric identifiers (IPv4 addresses, hereinafter referred to as IP addresses, unless it is explicitly stated that it is a different version of the IP protocol) and naming (domain names).
But this is not the only feature of DNS. The second major problem arises when there are a large number of domain names, when it is necessary to give the naming system a clear order and to avoid a situation where one name is used multiple times. Related to this is the question of how to work with a huge number of names at all and how to derive the necessary numerical identification of devices in the network as quickly as possible. It is impossible for one DNS server to contain a list of all existing names, and it would be a problem to ensure that all DNS servers are synchronized so that their complete lists are always current and correct. Therefore, the whole system is operated in a hierarchical way, where the DNS servers divide the conversion tables between themselves and in addition have information about which server contains which information.
On the Internet, communication is based on the TCP / IP protocols. The IP network protocol introduces a unique number for each device (or computer interface) that is connected to the network. This is the so-called IP address (we are only talking about IPv4 here), which is a 32-bit number that people divide into 4 parts of 8 bits for better readability and convert them to decimals.
On the Internet, names are not assigned to IP addresses permanently, but are conceived as a general name for a place on the network, i.e. not exclusively as the name of a specific computer. For these domain names, the respective IP addresses may change as needed if the physical location of the information associated with that name changes. The actual location in the network is therefore not related to the name, unlike IP addresses, for which this is partly true (these are assigned mainly by continents and then usually no longer relocate). The structure of a domain name is usually given by information, i.e., for example, websites that are located under this name (company name, designation of area of interest, etc.).
The domain name space on the Internet consists of a tree structure. The root of the tree is one special domain, which is called the zero-order domain, and is indicated by a dot. The names of the direct descendants of each node (i.e. “brothers”) must be different. The whole domain name is then formed by the path from the root to some node in the tree, where the jump between the node and its successor on the next level is marked by a dot. The resulting name is written in the opposite direction, the root is on the far right. Domains at the second level below the root are called first level domains or top level domains (TLDs), e.g. cz domains. The domains on the next level are called Second Level Domain (SLD), i.e. cuni.cz. Second level domains will be of most interest to us.
The parts of the name between the dots (that is, the names of the individual nodes of the tree) can only consist of characters of the English alphabet, numbers and a hyphen (but this must not be at the beginning or end). The difference between uppercase and lowercase characters doesn’t matter. This part can be a maximum of 63 characters long, and the entire domain name can be a maximum of 255 characters.