The Domain Name System ###################### .. warning:: This chapter is work-in-progress and may contain vastly incomplete information. The Domain Name System (short: DNS) is a global, hierarchical, distributed key-value database (BINGO!). It is currently specified by :rfc:`1034` and :rfc:`1035` as well as several complementing RFCs (which can be found by looking at the *Updated By* header in the linked RFCs). The DNS is split in *Zones*. Each Zone has a group of *Name Servers* which are responsible for answering queries for Names (keys) within that Zone. Within a Zone, there can be *Child Zones* for which entirely different Name Servers are responsible. The *Parent Zone* delegates that responsibility to the Child Zone with special *Resource Records* (key values). A *Zone* is thus a single administrative domain. This is not to be confused with a *Domain* in the sense of the DNS: A *Domain* may cover multiple Zones (for example, the ``de`` domain covers ``heise.de``, but also ``wikipedia.de``, which are different Zones). The *Root Zone* ``.`` is operated by the ICANN. Within the Root Zone, all the well-known *Top-Level Domains* such as ``com``, ``de``, ``eu`` and others exist. Those top level domains again delegate part of their namespace to customers via Child Zones. These customers are again free to delegate parts of their namespace to others and this is how the hierarchy is built. To obtain data from the DNS one must specify the *Fully Qualified Domain Name* (FQDN) one wants to query as well as the *Resource Record Type* (RRtype). The RRtype tells the servers which kind of data one is looking for. In the binary wire-format, RRtypes are represented by numbers. "Everywhere" else, they are represented by mnemonic names, such as ``A`` or ``CNAME``. +----------+----------------------------+--------------------------------+ |RRtype |Content type / Use |Value Example | +==========+============================+================================+ |``A`` |IPv4 address |138.201.4.137 | +----------+----------------------------+--------------------------------+ |``AAAA`` |IPv6 address |2a01:4f8:171:1d56:1010:1010:0:1 | +----------+----------------------------+--------------------------------+ |``CNAME`` |"redirect" to another FQDN |git.domain.example. | +----------+----------------------------+--------------------------------+ |``MX`` |Specify an inbound |23 mailin.domain.example. | | |mailserver for the domain | | | |name, as well as priority | | +----------+----------------------------+--------------------------------+ | | | | +----------+----------------------------+--------------------------------+ | | | | +----------+----------------------------+--------------------------------+ | | | | +----------+----------------------------+--------------------------------+