Zum Inhalt springen

Domain Name System

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 16. Mai 2003 um 01:55 Uhr durch Gurt (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.


Allgemeines

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, welches 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) möglich.
  • <type> beschreibt den Typ des Resource Records. Die häufigsten Typen im DNS sind SOA (Start of Authority), A (Adresse eines Hosts), MX (Mail Exchange), NS (Nameserver), ...
  • <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).

Die meistgenutzte Nameserversoftware ist der BIND (Berkeley Internet Name Domain).

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 in naher Zukunft aber ändern. Damit das neue System mit dem bisherigen kompatibel ist, werden die erweiterten Zeichensätze mit erlaubten Zeichen kodiert, also auf derzeit gültige Namen abgebildet. Wie die Namen genau abgebildet werden ist noch nicht definiert. Es gibt derzeit verschiedene Systeme die miteinander konkurrieren.


Sonstiges

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-Server, die dafür sorgen, dass sich auch solche rasch ändernden Adressen immer demselben Rechnernamen schnell zugeordnet werden können.

Weblinks: