Zum Inhalt springen

Domain Name System

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 27. September 2003 um 02:05 Uhr durch Matthäus Wander (Diskussion | Beiträge) (Satzzeichen). Sie kann sich erheblich von der aktuellen Version unterscheiden.


Das Domain Name System (DNS) ist einer der wichtigsten Dienste im Internet. Das DNS ist eine verteilte Datenbank, die den Namensraum im Internet verwaltet. Das geschieht im Wesentlichen durch die Umsetzung von Namen in Adressen. Das Ganze ist vergleichbar mit einem Telefonbuch, das die Namen der Teilnehmer in ihre Telefonnummer auflöst. Das DNS ist notwendig, weil Menschen sich Namen weitaus einfacher merken können als Zahlenkolonnen. So kann man sich den Namen www.wikipedia.de sehr einfach merken, die dazugehörende IP-Adresse 130.94.122.195 dagegen nicht ganz so einfach.

Das DNS wurde 1983 von Paul Mockapetris entworfen und im RFC 882 beschrieben. Der RFC 882 wurde inzwischen von den RFCs 1034 und 1035 abgelöst.

Das DNS löste die hosts-Dateien ab, die bis dahin für die Namensauflösung zuständig waren.

Das DNS zeichnet sich aus durch

  • dezentrale Verwaltung
  • hierarchische Strukturierung des Namensraums in Baumform
  • Eindeutigkeit der Namen
  • Erweiterbarkeit

Komponenten des DNS

Das DNS besteht aus drei Hauptkomponenten

  • Domainnamensraum und die Resource Records (RR)
  • Nameservern
  • Resolver

Domainnamensraum

Der Domainnamensraum hat eine baumförmige Struktur. Die Blätter und Knoten des Baumes werden als Labels bezeichnet. Ein kompletter Domainname eines Objektes besteht aus der Verkettung aller Labels.

Label sind Zeichenketten (alphanumerisch, als einziges Sonderzeichen ist das '-' erlaubt) die mindestens ein Zeichen und maximal 63 Zeichen lang sind. Die einzelnen Label werden durch Punkte voneinander getrennt. Ein Domainname wird mit einem Punkt abgeschlossen (Der hinterste Punkt wird normalerweise weggelasssen, gehört rein formal aber zu einem vollständigen Domainnamen dazu).

Ein korrekter, vollständiger Domainname lautet z.B. www.wikipedia.de. (der Punkt gehört zum Domainnamen).

Ein Domainname darf inklusive aller Punkte maximal 255 Zeichen lang sein.

Ein Domainname wird immer von rechts nach links delegiert und aufgelöst, d.h. je weiter rechts ein Label steht, umso höher steht es im Baum. Der Punkt ganz rechts wird auch als root (Wurzel) im Namensraum bezeichnet.

Das erste Label (das, das ganz rechts steht) wird im allgemeinen auch als Top Level Domain (TLD) bezeichnet.

Resource Records (RR)

Daten, die ein Objekt im DNS beschreiben, werden als Satz von Resource Records dargestellt. Alle Resource Records eines Objektes werden als Zone bezeichnet.

Ein Resource Record ist immer folgendermaßen aufgebaut:

<name> [<ttl>] [<class>] <type> <rdata>

  • <name> Der Domainname des Objekts zu dem der Resource Record gehört
  • <ttl> time to live Gültigkeit des Resource Records (in Sekunden)
  • <class> Protokollgruppe zu der der Resource Record gehört. Üblicherweise wird IN (Internet) verwendet. Es sind aber auch die Klassen CH (Chaosnet) oder HS (Hesiod) sowie CS (CSNET, wird nicht mehr verwendet und wird lediglich noch als Beispiel in einigen obsoleten RFCs genannt) möglich.
  • <type> beschreibt den Typ des Resource Records. Im DNS mögliche Typen sind:
    • A IP-Adresse eines Hosts
    • CNAME Alias name für einen Host
    • HINFO Host information
    • MB Mailbox domain name (Experimentell)
    • MD Mail destination (nicht mehr in Gebrauch - heutzutage wird MX verwendet)
    • MF Mail forwarder (nicht mehr in Gebrauch - heutzutage wird MX verwendet)
    • MG Mail group member (Experimentell)
    • MINFO Mailbox oder mail list information
    • MR Mail rename domain name (Experimentell)
    • MX Mail Exchange
    • NULL Null Resource Record (Experimentell)
    • NS Hostname eines autoritativen Nameservers
    • PTR Domain Name Pointer (für das Reversemapping um IP Adressen Namen zuzuweisen)
    • SOA Start of Authority
    • TXT Text
    • WKS Well known service description
  • <rdata> (resource data) Daten die den Resource Record näher beschreiben (z.B. eine IP Adresse für einen A-RR, oder einen Hostnamen für einen NS-RR)

Nameserver

Nameserver sind Programme die einen oder mehrere Teile des Namensraumes autoritativ kennen, und diese auf Anfrage weitergeben. Nameserver werden von der höheren Ebene im Baum delegiert und sind dann für den Teilnamensraum unterhalb der delegierten Ebene zuständig (und können u.U. weitere Teilnamensräume unterhalb dieser Ebene delegieren). Die Baumstruktur stellt die eindeutige Zuordnung eines Nameservers zu einem Teil des Namensraum sicher.

Normale Anfragen werden auf Port 53 UDP beantwortet. Transfers kompletter Zonen werden auf Port 53 TCP durchgeführt.

Früher sprach man von primary und secondary Nameserver, heute spricht man von autoritativen Nameservern. Ein autoritativer Nameserver ist ein Nameserver, der gesicherte Informationen über eine Zone hat. Dem gegenüber steht ein nicht-autoritativer Nameserver der Informationen über eine Zone sozusagen aus zweiter oder dritter Hand hat, also nicht sicher sagen kann, dass die Information korrekt ist (da sie sich z.B. schon geändert haben kann).

Nameserver können auch als caching Nameserver agieren. Dabei speichern sie die einmal von einem Resolver angefragten Informationen zwischen, damit diese bei einer erneuten Anfrage schneller vorliegt. Dies ist meistens sinnvoll, da sich die Informationen im DNS nicht sehr schnell ändern. Die Daten im Cache des Nameservers verfallen nach der TTL (time to live). Das kann u.U. aber auch bedeuten, dass der Nameserver in dieser Zeit falsche Informationen liefern kann, wenn sich die Daten zwischenzeitlich geändert haben.

Damit ein Nameserver Informationen über andere Teile des Namensraumes finden kann, werden ihm Informationen über die sog. Root-Server in Form einer statischen Datei hinterlegt. Diese Cachedateien enthalten die Namen und IP Adressen der Root-Server. Derzeit gibt es 13 Root-Server (Server A bis M).

Nameserversoftware

  • BIND (Berkeley Internet Name Domain) ist der Ur-Nameserver und heute noch die meistgenutzte Nameserversoftware. BIND ist Open Source Software.
  • djbdns (entwickelt von Dan Bernstein) gilt als sehr sicher und erfreut sich steigender Beliebtheit.
  • PowerDNS ist eine Implementierung, die vor allem für das direkte Betreiben von Zonen aus SQL-Datenbanken bekannt ist.
  • NSD ist optimiert für Server die ausschließlich autoritative Antworten liefern sollen.


Resolver

Resolver sind Programme die Informationen aus den Nameservern abrufen können. Sie bilden die Schnittstelle zum Nameserverdienst. Resolver sind entweder eigene Programme, oder sie sind in Applikationen (z.B. einen Browser) eingebunden.

Ein Resolver arbeitet entweder iterativ oder rekursiv.

Bei einer rekursiven Anfrage schickt der Resolver eine Anfrage an einen ihm bekannten Nameserver und gibt als Antwort entweder den gewünschten Resource Record (wenn der befragte Nameserver selber rekursiv arbeitet) oder "gibt es nicht". Rekursiv arbeitende Resolver überlassen also die Arbeit anderen und funktionieren so wie manches andere im Internet: Ich weiß ein bisschen was und ich kenne jemanden der mehr weiß.

Bei einer iterativen Anfrage bekommt der Resolver entweder den gewünschten Resource Record oder einen weiteren Namserver, den er als nächsten fragt. Der Resolver hangelt sich so von Nameserver zu Nameserver bis er bei einem autoritativen Nameserver landet. Die so gewonnene Antwort gibt der Resolver dann weiter.

Die Root-Server arbeiten ausschließlich iterativ. Sie wären sonst mit der Anzahl der Anfragen schlicht überlastet.

Bekannte Resolver sind die Programme nslookup und dig.

Erweiterung des DNS

Bisher sind die Label -wie beschrieben- auf alphanumerische Zeichen und das Zeichen '-' eingeschränkt. Dies hängt vor allem damit zusammen, dass das DNS (wie auch das Internet ursprünglich) in den USA entwickelt wurde. Allerdings gibt es in vielen Ländern Zeichen, die nicht in einem Label verwendet werden dürfen (in Deutschland zum Beispiel die Umlaute), bzw. es gibt komplett andere Schriftsysteme (z.B. Chinesisch). Namen mit diesen Zeichen sind bisher nicht möglich.

Dies soll sich aber in naher Zukunft durch die Einführung von IDN (RFC 3490) ändern. Um das neue System mit dem bisherigen kompatibel zu halten, werden die erweiterten Zeichensätze mit erlaubten Zeichen kodiert, also auf derzeit gültige Namen abgebildet. Die erweiterten Zeichensätze werden dabei zunächst gemäß dem nameprep-Algorithmus (RFC 3491) normalisiert, und anschließend per punycode (RFC 3492) auf den für DNS verwendbaren Zeichensatz abgebildet. Das Voransetzen des durch die IANA festgelegten IDNA-Prefix xn-- vor das Ergebnis der Kodierung ergibt das vollständige IDN-Label.

Eine weitere aktuelle Erweiterung des DNS stellt ENUM (RFC 2916) dar. Diese Anwendung ermöglicht die Addressierung von Internet-Diensten über Telefonnummern, also das "Anwählen" von per Internet erreichbaren Geräten mit dem aus dem Telefonnetz bekannten Adreßschema. Aus dem breiten Spektrum der Einsatzmöglichkeiten bietet sich insbesondere die Verwendung für Voice over IP Services an.

DynDNS

Es kann nur Rechnern mit fester, sich also nur sehr selten ändernden IP-Adresse ein fester Rechnername zugeordnet werden. Da jedoch sehr viele Nutzer mit Heimrechnern eine variable IP-Adresse haben (mit jeder Einwahl in das Internet wird eine andere IP-Adresse aus einem Pool zugeteilt), gibt es inzwischen DynDNS-Betreiber, die dafür sorgen, dass man auch mit solch rasch ändernden Adressen möglichst immer über den selben Rechnernamen erreichbar ist.

  • RFCs
    • RFC 1034 - Domain Names - Concepts and Facilities
    • RFC 1035 - Domain Names - Implementation and Specification