Zum Hauptinhalt springen

2. Einführung (Introduction)

Dieses RFC führt Domänen-Stil-Namen (Domain Style Names), ihre Verwendung für Internet-Mail und Host-Adressunterstützung sowie die Protokolle und Server ein, die zur Implementierung von Domänennamen-Funktionen verwendet werden.

2.1. Die Geschichte der Domänennamen (The history of domain names)

Der Anstoß für die Entwicklung des Domänensystems war das Wachstum des Internets:

  • Host-Namen-zu-Adress-Zuordnungen (Host name to address mappings) wurden vom Network Information Center (NIC) in einer einzigen Datei (HOSTS.TXT) gepflegt, die von allen Hosts per FTP abgerufen wurde [RFC-952, RFC-953]. Die Gesamtnetzwerkbandbreite, die für die Verteilung einer neuen Version durch dieses Schema verbraucht wird, ist proportional zum Quadrat der Anzahl der Hosts im Netzwerk, und selbst wenn mehrere FTP-Ebenen verwendet werden, ist die ausgehende FTP-Last auf dem NIC-Host beträchtlich. Das explosive Wachstum der Anzahl von Hosts verhieß nichts Gutes für die Zukunft.

  • Die Netzwerkpopulation (The network population) änderte sich auch in ihrem Charakter. Die Timesharing-Hosts, die das ursprüngliche ARPANET bildeten, wurden durch lokale Netzwerke von Workstations ersetzt. Lokale Organisationen verwalteten ihre eigenen Namen und Adressen, mussten jedoch warten, bis das NIC HOSTS.TXT änderte, um Änderungen für das gesamte Internet sichtbar zu machen. Organisationen wünschten sich auch eine lokale Struktur im Namensraum (Name Space).

  • Die Anwendungen im Internet (The applications) wurden ausgefeilter und erzeugten einen Bedarf an einem allgemeinen Namensdienst.

Das Ergebnis waren mehrere Ideen über Namensräume und deren Verwaltung [IEN-116, RFC-799, RFC-819, RFC-830]. Die Vorschläge variierten, aber ein gemeinsamer Faden war die Idee eines hierarchischen Namensraums, wobei die Hierarchie grob der Organisationsstruktur entspricht und Namen "." als Zeichen verwenden, um die Grenze zwischen Hierarchieebenen zu markieren. Ein Design mit einer verteilten Datenbank und generalisierten Ressourcen wurde in [RFC-882, RFC-883] beschrieben. Basierend auf Erfahrungen mit mehreren Implementierungen entwickelte sich das System zu dem in diesem Memo beschriebenen Schema.

Die Begriffe "Domäne (Domain)" oder "Domänenname (Domain Name)" werden in vielen Kontexten verwendet, die über das hier beschriebene DNS hinausgehen. Sehr oft wird der Begriff Domänenname verwendet, um einen Namen mit durch Punkte angezeigter Struktur zu bezeichnen, aber ohne Bezug zum DNS. Dies gilt insbesondere für Mail-Adressierung [Quarterman 86].

2.2. DNS-Designziele (DNS design goals)

Die Designziele des DNS beeinflussen seine Struktur. Sie sind:

  • Konsistenter Namensraum (Consistent name space): Das primäre Ziel ist ein konsistenter Namensraum, der zur Referenzierung von Ressourcen verwendet wird. Um die durch Ad-hoc-Kodierungen verursachten Probleme zu vermeiden, sollten Namen nicht erforderlich sein, Netzwerk-Identifikatoren, Adressen, Routen oder ähnliche Informationen als Teil des Namens zu enthalten.

  • Verteilte Wartung (Distributed maintenance): Die schiere Größe der Datenbank und die Häufigkeit von Aktualisierungen deuten darauf hin, dass sie auf verteilte Weise gepflegt werden muss, mit lokalem Caching zur Leistungsverbesserung. Ansätze, die versuchen, eine konsistente Kopie der gesamten Datenbank zu sammeln, werden immer teurer und schwieriger und sollten daher vermieden werden. Das gleiche Prinzip gilt für die Struktur des Namensraums und insbesondere für Mechanismen zum Erstellen und Löschen von Namen; diese sollten ebenfalls verteilt sein.

  • Quellkontrolle von Kompromissen (Source control of tradeoffs): Wo es Kompromisse zwischen den Kosten für den Erwerb von Daten, der Geschwindigkeit von Updates und der Genauigkeit von Caches gibt, sollte die Quelle der Daten den Kompromiss kontrollieren.

  • Allgemeine Nützlichkeit (General utility): Die Kosten für die Implementierung einer solchen Einrichtung diktieren, dass sie allgemein nützlich und nicht auf eine einzelne Anwendung beschränkt sein sollte. Wir sollten in der Lage sein, Namen zu verwenden, um Host-Adressen, Mailbox-Daten und andere noch unbestimmte Informationen abzurufen. Alle mit einem Namen verbundenen Daten werden mit einem Typ markiert, und Abfragen können auf einen einzelnen Typ beschränkt werden.

  • Protokollunabhängigkeit (Protocol independence): Da wir möchten, dass der Namensraum in unterschiedlichen Netzwerken und Anwendungen nützlich ist, bieten wir die Fähigkeit, denselben Namensraum mit verschiedenen Protokollfamilien oder Verwaltung zu verwenden. Zum Beispiel unterscheiden sich Host-Adressformate zwischen Protokollen, obwohl alle Protokolle das Konzept der Adresse haben. Das DNS markiert alle Daten sowohl mit einer Klasse als auch mit dem Typ, sodass wir die parallele Verwendung verschiedener Formate für Daten vom Typ Adresse ermöglichen können.

  • Transportunabhängigkeit (Transport independence): Wir möchten, dass Nameserver-Transaktionen unabhängig vom Kommunikationssystem sind, das sie trägt. Einige Systeme möchten möglicherweise Datagramme für Abfragen und Antworten verwenden und nur virtuelle Verbindungen für Transaktionen einrichten, die Zuverlässigkeit benötigen (z. B. Datenbankaktualisierungen, lange Transaktionen); andere Systeme werden ausschließlich virtuelle Verbindungen verwenden.

  • Breite Host-Fähigkeitsspanne (Wide host capability range): Das System sollte über ein breites Spektrum von Host-Fähigkeiten hinweg nützlich sein. Sowohl Personal Computer als auch große Timesharing-Hosts sollten das System nutzen können, wenn auch möglicherweise auf unterschiedliche Weise.

2.3. Annahmen zur Nutzung (Assumptions about usage)

Die Organisation des Domänensystems leitet sich aus einigen Annahmen über die Bedürfnisse und Nutzungsmuster seiner Benutzergemeinschaft ab und ist so konzipiert, dass viele der komplizierten Probleme vermieden werden, die in allgemeinen Datenbanksystemen zu finden sind.

Die Annahmen sind:

  • Datenbankgröße (Database size): Die Größe der Gesamtdatenbank wird zunächst proportional zur Anzahl der das System verwendenden Hosts sein, wird aber schließlich proportional zur Anzahl der Benutzer auf diesen Hosts wachsen, wenn Mailboxen und andere Informationen zum Domänensystem hinzugefügt werden.

  • Aktualisierungshäufigkeit (Update frequency): Die meisten Daten im System werden sich sehr langsam ändern (z. B. Mailbox-Bindungen, Host-Adressen), aber das System sollte in der Lage sein, mit Teilmengen umzugehen, die sich schneller ändern (in der Größenordnung von Sekunden oder Minuten).

  • Administrative Grenzen (Administrative boundaries): Die zur Verteilung der Verantwortung für die Datenbank verwendeten administrativen Grenzen werden normalerweise Organisationen entsprechen, die einen oder mehrere Hosts haben. Jede Organisation, die Verantwortung für eine bestimmte Gruppe von Domänen hat, wird redundante Nameserver bereitstellen, entweder auf den eigenen Hosts der Organisation oder auf anderen Hosts, deren Nutzung die Organisation vereinbart.

  • Vertrauenswürdige Server (Trusted servers): Clients des Domänensystems sollten in der Lage sein, vertrauenswürdige Nameserver zu identifizieren, die sie bevorzugt verwenden möchten, bevor sie Verweise auf Nameserver außerhalb dieser "vertrauenswürdigen" Menge akzeptieren.

  • Verfügbarkeit vs. Konsistenz (Availability vs consistency): Der Zugriff auf Informationen ist wichtiger als sofortige Updates oder Konsistenzgarantien. Daher ermöglicht der Aktualisierungsprozess, dass Updates durch die Benutzer des Domänensystems durchsickern, anstatt zu garantieren, dass alle Kopien gleichzeitig aktualisiert werden. Wenn Updates aufgrund von Netzwerk- oder Host-Ausfällen nicht verfügbar sind, besteht der übliche Kurs darin, alten Informationen zu glauben, während die Bemühungen zur Aktualisierung fortgesetzt werden. Das allgemeine Modell ist, dass Kopien mit Timeouts zum Auffrischen verteilt werden. Der Distributor legt den Timeout-Wert fest und der Empfänger der Verteilung ist für die Durchführung der Auffrischung verantwortlich. In besonderen Situationen können sehr kurze Intervalle angegeben werden, oder der Eigentümer kann Kopien verbieten.

  • Abfrageauflösungsansätze (Query resolution approaches): In jedem System mit einer verteilten Datenbank kann einem bestimmten Nameserver eine Abfrage vorgelegt werden, die nur von einem anderen Server beantwortet werden kann. Die beiden allgemeinen Ansätze zum Umgang mit diesem Problem sind "rekursiv (Recursive)", bei dem der erste Server die Abfrage für den Client bei einem anderen Server verfolgt, und "iterativ (Iterative)", bei dem der Server den Client an einen anderen Server verweist und den Client die Abfrage verfolgen lässt. Beide Ansätze haben Vor- und Nachteile, aber der iterative Ansatz wird für den Datagramm-Zugriffsstil bevorzugt. Das Domänensystem erfordert die Implementierung des iterativen Ansatzes, erlaubt jedoch den rekursiven Ansatz als Option.

Datenherkunft und -verwaltung (Data origin and management)

Das Domänensystem geht davon aus, dass alle Daten in Masterdateien (Master Files) stammen, die über die Hosts verteilt sind, die das Domänensystem verwenden. Diese Masterdateien werden von lokalen Systemadministratoren aktualisiert. Masterdateien sind Textdateien, die von einem lokalen Nameserver gelesen werden und somit über die Nameserver für Benutzer des Domänensystems verfügbar werden. Benutzerprogramme greifen über Standardprogramme namens Resolver auf Nameserver zu.

Das Standardformat von Masterdateien ermöglicht deren Austausch zwischen Hosts (über FTP, Mail oder einen anderen Mechanismus); diese Einrichtung ist nützlich, wenn eine Organisation eine Domäne möchte, aber keinen Nameserver unterstützen möchte. Die Organisation kann die Masterdateien lokal mit einem Texteditor pflegen, sie auf einen fremden Host übertragen, der einen Nameserver betreibt, und dann mit dem Systemadministrator des Nameservers vereinbaren, die Dateien laden zu lassen.

Die Nameserver und Resolver jedes Hosts werden von einem lokalen Systemadministrator konfiguriert [RFC-1033]. Für einen Nameserver umfassen diese Konfigurationsdaten die Identität lokaler Masterdateien und Anweisungen, welche nicht-lokalen Masterdateien von fremden Servern geladen werden sollen. Der Nameserver verwendet die Masterdateien oder Kopien, um seine Zonen zu laden. Für Resolver identifizieren die Konfigurationsdaten die Nameserver, die die primären Informationsquellen sein sollten.

Das Domänensystem definiert Verfahren für den Zugriff auf die Daten und für Verweise auf andere Nameserver. Das Domänensystem definiert auch Verfahren zum Zwischenspeichern abgerufener Daten und zur periodischen Auffrischung von Daten, die vom Systemadministrator definiert werden.

Aufgabenteilung (Division of responsibilities)

Die Systemadministratoren stellen bereit:

  • Die Definition von Zonengrenzen
  • Masterdateien mit Daten
  • Aktualisierungen der Masterdateien
  • Aussagen über die gewünschten Auffrischungsrichtlinien

Das Domänensystem stellt bereit:

  • Standardformate für Ressourcendaten
  • Standardmethoden zur Abfrage der Datenbank
  • Standardmethoden für Nameserver, um lokale Daten von fremden Nameservern aufzufrischen

2.4. Elemente des DNS (Elements of the DNS)

Das DNS hat drei Hauptkomponenten:

DOMÄNENNAMEN-RAUM und RESSOURCENEINTRÄGE (DOMAIN NAME SPACE and RESOURCE RECORDS)

Der DOMÄNENNAMEN-RAUM und RESSOURCENEINTRÄGE (DOMAIN NAME SPACE and RESOURCE RECORDS) sind Spezifikationen für einen baumstrukturierten Namensraum und mit den Namen verbundene Daten. Konzeptionell benennt jeder Knoten und jedes Blatt des Domänennamensraum-Baums einen Satz von Informationen, und Abfrageoperationen sind Versuche, bestimmte Arten von Informationen aus einem bestimmten Satz zu extrahieren. Eine Abfrage benennt den interessierenden Domänennamen und beschreibt die Art der gewünschten Ressourceninformation. Zum Beispiel verwendet das Internet einige seiner Domänennamen zur Identifizierung von Hosts; Abfragen nach Adressressourcen geben Internet-Host-Adressen zurück.

NAMESERVER (NAME SERVERS)

NAMESERVER (NAME SERVERS) sind Serverprogramme, die Informationen über die Struktur des Domänenbaums und Set-Informationen enthalten. Ein Nameserver kann Struktur- oder Set-Informationen über jeden Teil des Domänenbaums zwischenspeichern, aber im Allgemeinen hat ein bestimmter Nameserver vollständige Informationen über eine Teilmenge des Domänenraums und Zeiger auf andere Nameserver, die verwendet werden können, um zu Informationen aus jedem Teil des Domänenbaums zu führen. Nameserver kennen die Teile des Domänenbaums, für die sie vollständige Informationen haben; ein Nameserver wird als AUTORITÄT (AUTHORITY) für diese Teile des Namensraums bezeichnet. Autoritative Informationen sind in Einheiten organisiert, die ZONEN (ZONEs) genannt werden, und diese Zonen können automatisch an die Nameserver verteilt werden, die redundanten Service für die Daten in einer Zone bereitstellen.

RESOLVER (RESOLVERS)

RESOLVER (RESOLVERS) sind Programme, die Informationen von Nameservern als Antwort auf Client-Anfragen extrahieren. Resolver müssen in der Lage sein, auf mindestens einen Nameserver zuzugreifen und die Informationen dieses Nameservers zu verwenden, um eine Abfrage direkt zu beantworten oder die Abfrage unter Verwendung von Verweisen auf andere Nameserver zu verfolgen. Ein Resolver wird typischerweise eine Systemroutine sein, die für Benutzerprogramme direkt zugänglich ist; daher ist kein Protokoll zwischen dem Resolver und dem Benutzerprogramm erforderlich.

Drei Ansichten des Domänensystems (Three views of the domain system)

Diese drei Komponenten entsprechen grob den drei Schichten oder Ansichten des Domänensystems:

  • Aus Sicht des Benutzers (From the user's point of view) wird auf das Domänensystem über eine einfache Prozedur oder einen OS-Aufruf an einen lokalen Resolver zugegriffen. Der Domänenraum besteht aus einem einzigen Baum, und der Benutzer kann Informationen aus jedem Abschnitt des Baums anfordern.

  • Aus Sicht des Resolvers (From the resolver's point of view) besteht das Domänensystem aus einer unbekannten Anzahl von Nameservern. Jeder Nameserver hat ein oder mehrere Teile der Daten des gesamten Domänenbaums, aber der Resolver betrachtet jede dieser Datenbanken als im Wesentlichen statisch.

  • Aus Sicht eines Nameservers (From a name server's point of view) besteht das Domänensystem aus separaten Sätzen lokaler Informationen, die Zonen genannt werden. Der Nameserver hat lokale Kopien einiger der Zonen. Der Nameserver muss seine Zonen periodisch von Masterkopien in lokalen Dateien oder fremden Nameservern auffrischen. Der Nameserver muss gleichzeitig Abfragen verarbeiten, die von Resolvern ankommen.

Im Interesse der Leistung können Implementierungen diese Funktionen koppeln. Zum Beispiel könnte ein Resolver auf demselben Rechner wie ein Nameserver eine Datenbank teilen, die aus den vom Nameserver verwalteten Zonen und dem vom Resolver verwalteten Cache besteht.