3. Domain Name Space and RR Definitions (Domain-Namenraum und RR-Definitionen)
Dieses Kapitel definiert, wie Domainnamen im DNS kodiert werden und das Format von Ressourceneinträgen (Resource Records). Dies ist die technische Kernspezifikation für die Implementierung von DNS.
3.1. Name Space Definitions (Namenraum-Definitionen)
Domainnamen-Kodierung
Domainnamen in Nachrichten werden als Sequenz von Labels (Label-Sequenz) ausgedrückt.
Kodierungsformat:
Jedes Label wird dargestellt als:
[Längen-Byte (1 Byte)][Label-Inhalt (N Bytes)]
Beispiel: www.example.com
Kodiert als: 3www7example3com0
Detaillierte Erklärung:
- Jedes Label wird als ein Oktettt-Längenfeld dargestellt, gefolgt von dieser Anzahl von Oktetten
- Da jeder Domainname mit dem Null-Label der Wurzel endet, wird ein Domainname durch ein Längen-Byte von Null beendet
- Die beiden höchstwertigen Bits jedes Längen-Oktetts müssen (MUST) Null sein
- Die verbleibenden sechs Bits des Längenfeldes begrenzen das Label auf 63 Oktette oder weniger
Längenbeschränkungen:
Einzelnes Label: ≤ 63 Bytes
Vollständiger Domainname: ≤ 255 Bytes (einschließlich Längen-Bytes)
Label-Inhaltsregeln
Byte-Werte: Labels können beliebige 8-Bit-Werte in Oktetten enthalten, die ein Label bilden
Starke Empfehlung: Labels sollten (SHOULD) der bevorzugten Syntax folgen, die an anderer Stelle in diesem Memo beschrieben wird und mit bestehenden Host-Namenskonventionen kompatibel ist
Vergleichsregeln:
- Nameserver und Resolver müssen (MUST) Labels auf Groß-/Kleinschreibung-unabhängige Weise vergleichen
- ASCII mit Null-Parität annehmend (d.h. A=a)
- Nicht-alphabetische Codes müssen exakt übereinstimmen
3.2. RR Definitions (RR-Definitionen)
3.2.1. Format
Alle RRs (Resource Records, Ressourceneinträge) haben das gleiche Format auf oberster Ebene, das unten gezeigt wird:
1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| |
/ /
/ NAME /
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| TYPE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| CLASS |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| TTL |
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| RDLENGTH |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
/ RDATA /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Feldbeschreibungen:
-
NAME: Ein Besitzername (Owner Name), d.h. der Name des Knotens, zu dem dieser Ressourceneintrag gehört.
-
TYPE: Zwei Oktette, die einen der RR-TYPE-Codes enthalten.
-
CLASS: Zwei Oktette, die einen der RR-CLASS-Codes enthalten.
-
TTL: Eine vorzeichenbehaftete 32-Bit-Ganzzahl, die das Zeitintervall angibt, während dessen der Ressourceneintrag zwischengespeichert werden kann, bevor die Quelle der Information erneut konsultiert werden sollte. Nullwerte werden so interpretiert, dass der RR nur für die laufende Transaktion verwendet werden kann und nicht zwischengespeichert werden sollte.
-
RDLENGTH: Eine vorzeichenlose 16-Bit-Ganzzahl, die die Länge in Oktetten des RDATA-Feldes angibt.
-
RDATA: Eine Zeichenkette variabler Länge von Oktetten, die die Ressource beschreibt. Das Format dieser Information variiert je nach TYPE und CLASS des Ressourceneintrags.
3.2.2. TYPE Values (TYPE-Werte)
TYPE-Felder werden in Ressourceneinträgen verwendet. Beachten Sie, dass diese Typen eine Untermenge von QTYPEs sind.
| TYPE | Wert | Bedeutung |
|---|---|---|
| A | 1 | Host-Adresse |
| NS | 2 | Autoritativer Nameserver |
| MD | 3 | Mail-Ziel (Veraltet - MX verwenden) |
| MF | 4 | Mail-Weiterleiter (Veraltet - MX verwenden) |
| CNAME | 5 | Kanonischer Name für einen Alias |
| SOA | 6 | Beginn einer Autoritätszone |
| MB | 7 | Mailbox-Domainname (EXPERIMENTELL) |
| MG | 8 | Mail-Gruppenmitglied (EXPERIMENTELL) |
| MR | 9 | Mail-Umbenennungs-Domainname (EXPERIMENTELL) |
| NULL | 10 | Null-RR (EXPERIMENTELL) |
| WKS | 11 | Bekannte Dienstbeschreibung |
| PTR | 12 | Domainnamen-Zeiger |
| HINFO | 13 | Host-Information |
| MINFO | 14 | Mailbox- oder Mailinglisten-Information |
| MX | 15 | Mail-Austausch |
| TXT | 16 | Textzeichenketten |
3.2.3. QTYPE Values (QTYPE-Werte)
QTYPE-Felder erscheinen im Frageteil einer Abfrage. QTYPEs sind eine Obermenge von TYPEs, daher sind alle TYPEs gültige QTYPEs.
| QTYPE | Wert | Bedeutung |
|---|---|---|
| AXFR | 252 | Anforderung für einen Transfer einer gesamten Zone |
| MAILB | 253 | Anforderung für mailbox-bezogene Einträge (MB, MG oder MR) |
| MAILA | 254 | Anforderung für Mail-Agent-RRs (Veraltet - siehe MX) |
| * | 255 | Anforderung für alle Einträge |
3.2.4. CLASS Values (CLASS-Werte)
CLASS-Felder erscheinen in Ressourceneinträgen.
| CLASS | Wert | Bedeutung |
|---|---|---|
| IN | 1 | Das Internet |
| CS | 2 | Die CSNET-Klasse (Veraltet) |
| CH | 3 | Die CHAOS-Klasse |
| HS | 4 | Hesiod [Dyer 87] |
3.2.5. QCLASS Values (QCLASS-Werte)
QCLASS-Felder erscheinen im Frageabschnitt einer Abfrage. QCLASS-Werte sind eine Obermenge von CLASS-Werten.
| QCLASS | Wert | Bedeutung |
|---|---|---|
| * | 255 | Jede Klasse |
3.3. Standard RRs (Standard-RRs)
Die folgenden RR-Definitionen werden voraussichtlich in allen Implementierungen auftreten.
3.3.1. CNAME RDATA Format (CNAME-RDATA-Format)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ CNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Felder:
- CNAME: Ein Domainname, der den kanonischen oder primären Namen für den Besitzer angibt. Der Besitzername ist ein Alias.
CNAME-Verwendung:
- Ein CNAME-RR identifiziert seinen Besitzernamen als Alias
- Gibt den entsprechenden kanonischen Namen im RDATA-Abschnitt an
- Wenn ein CNAME-RR an einem Knoten vorhanden ist, sollten (SHOULD NOT) keine anderen Daten vorhanden sein
- Dies stellt sicher, dass die Daten für einen kanonischen Namen und seine Aliase nicht unterschiedlich sein können
3.3.2. HINFO RDATA Format (HINFO-RDATA-Format)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ CPU /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ OS /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Felder:
- CPU: Eine Zeichenkette, die den CPU-Typ angibt.
- OS: Eine Zeichenkette, die den Betriebssystemtyp angibt.
Zweck: HINFO-Einträge werden verwendet, um allgemeine Informationen über einen Host zu erhalten.
3.3.3. MB RDATA Format (MB-RDATA-Format) - EXPERIMENTELL
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ MADNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Felder:
- MADNAME: Ein Domainname, der einen Host angibt, der die angegebene Mailbox besitzt.
Status: EXPERIMENTELL
3.3.4. MD RDATA Format (MD-RDATA-Format) - Obsolet
Status: Obsolet - MX verwenden
3.3.5. MF RDATA Format (MF-RDATA-Format) - Obsolet
Status: Obsolet - MX verwenden
3.3.6. MG RDATA Format (MG-RDATA-Format) - EXPERIMENTELL
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ MGMNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Felder:
- MGMNAME: Ein Domainname, der eine Mailbox angibt, die Mitglied der durch den Domainnamen identifizierten Mailgruppe ist.
Status: EXPERIMENTELL
3.3.7. MINFO RDATA Format (MINFO-RDATA-Format) - EXPERIMENTELL
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ RMAILBX /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ EMAILBX /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Felder:
- RMAILBX: Ein Domainname, der die für die Mailbox verantwortliche Mailbox angibt.
- EMAILBX: Ein Domainname, der die Mailbox angibt, die Fehlermeldungen empfängt.
Status: EXPERIMENTELL
3.3.8. MR RDATA Format (MR-RDATA-Format) - EXPERIMENTELL
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ NEWNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Felder:
- NEWNAME: Ein Domainname, der den korrekten Namen der Mailbox angibt.
Status: EXPERIMENTELL
3.3.9. MX RDATA Format (MX-RDATA-Format)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| PREFERENCE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ EXCHANGE /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Felder:
- PREFERENCE: Eine 16-Bit-Ganzzahl, die die Präferenz angibt, die diesem RR unter anderen beim gleichen Besitzer gegeben wird. Niedrigere Werte werden bevorzugt.
- EXCHANGE: Ein Domainname, der einen Host angibt, der bereit ist, als Mail-Austausch für den Besitzernamen zu fungieren.
MX-Verwendung:
- MX-Einträge verursachen zusätzliche Sektion-Verarbeitung vom Typ A für den durch EXCHANGE angegebenen Host
- Die Verwendung von MX-RRs wird ausführlich in RFC-974 erläutert
3.3.10. NULL RDATA Format (NULL-RDATA-Format) - EXPERIMENTELL
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ `<anything>` /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Felder:
<anything>: Beliebiger Inhalt, maximal 65535 Oktette
Zweck:
- Der NULL-RR wird nicht für normale Operationen verwendet
- Kann für experimentelle Zwecke verwendet werden
- Kann beliebige Daten enthalten
Status: EXPERIMENTELL
3.3.11. NS RDATA Format (NS-RDATA-Format)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ NSDNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Felder:
- NSDNAME: Ein Domainname, der einen Host angibt, der für die angegebene Klasse und Domain autoritativ sein sollte.
NS-Verwendung:
- NS-Einträge verursachen sowohl die übliche zusätzliche Sektion-Verarbeitung zum Auffinden eines Typ-A-Eintrags
- Bei Verwendung in einer Verweisung signalisieren sie einen Delegierungspunkt im Namensraum
3.3.12. PTR RDATA Format (PTR-RDATA-Format)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ PTRDNAME /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Felder:
- PTRDNAME: Ein Domainname, der auf einen Ort im Domainnamenraum zeigt.
PTR-Verwendung:
- PTR-Einträge verursachen keine zusätzliche Sektion-Verarbeitung
- Diese RRs werden in speziellen Domains verwendet, um auf einen anderen Ort im Domainnamenraum zu zeigen
- Hauptsächlich für Reverse-DNS-Lookups in der IN-ADDR.ARPA-Domain verwendet
3.3.13. SOA RDATA Format (SOA-RDATA-Format)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ MNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ RNAME /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| SERIAL |
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| REFRESH |
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| RETRY |
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| EXPIRE |
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| MINIMUM |
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Felder:
- MNAME: Der Domainname des Nameservers, der die ursprüngliche oder primäre Quelle von Daten für diese Zone war.
- RNAME: Ein Domainname, der die Mailbox der für diese Zone verantwortlichen Person angibt.
- SERIAL: Die vorzeichenlose 32-Bit-Versionsnummer der Originalkopie der Zone.
- REFRESH: Ein 32-Bit-Zeitintervall, bevor die Zone aktualisiert werden sollte.
- RETRY: Ein 32-Bit-Zeitintervall, das vergehen sollte, bevor eine fehlgeschlagene Aktualisierung wiederholt werden sollte.
- EXPIRE: Ein 32-Bit-Zeitwert, der die Obergrenze des Zeitintervalls angibt, das vergehen kann, bevor die Zone nicht mehr autoritativ ist.
- MINIMUM: Das vorzeichenlose 32-Bit-Minimum-TTL-Feld, das mit jedem RR aus dieser Zone exportiert werden sollte.
3.3.14. TXT RDATA Format (TXT-RDATA-Format)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ TXT-DATA /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Felder:
- TXT-DATA: Eine oder mehrere Zeichenketten.
TXT-Verwendung:
- TXT-RRs werden verwendet, um beschreibenden Text zu enthalten
- Die Semantik des Textes hängt von der Domain ab, in der er gefunden wird
- Häufig für SPF, DKIM, Domain-Verifizierung usw. verwendet
3.4. Internet Specific RRs (Internet-spezifische RRs)
3.4.1. A RDATA Format (A-RDATA-Format)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ADDRESS |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Felder:
- ADDRESS: Eine 32-Bit-Internet-Adresse.
A-Eintrag-Verwendung:
- Hosts, die mehrere Internet-Adressen haben, werden mehrere A-Einträge haben
- Der RDATA-Abschnitt einer A-Zeile in einer Masterdatei ist eine Internet-Adresse, die als vier durch Punkte getrennte Dezimalzahlen ausgedrückt wird
Beispiel:
www.example.com. IN A 93.184.216.34
3.5. IN-ADDR.ARPA Domain (IN-ADDR.ARPA-Domain)
Die IN-ADDR.ARPA-Domain wird für Rückwärts-DNS-Lookups (Reverse DNS Lookups) verwendet - Zuordnung von IP-Adressen zu Domainnamen.
Struktur:
- Die Domain ist nach IP-Adress-Oktetten in umgekehrter Reihenfolge organisiert
- Jedes Oktett bildet ein Label im Domainnamen
Beispiel:
IP-Adresse: 93.184.216.34
IN-ADDR.ARPA-Name: 34.216.184.93.in-addr.arpa.
Verwendung:
- PTR-Einträge in der IN-ADDR.ARPA-Domain zeigen auf den kanonischen Hostnamen
- Dies ermöglicht Anwendungen, von einer Adresse zu einem Namen zu mappen
Beispiel-PTR-Eintrag:
34.216.184.93.in-addr.arpa. IN PTR www.example.com.
3.6. Defining New Types, Classes, and Special Namespaces (Definition neuer Typen, Klassen und spezieller Namenräume)
Das DNS ist so konzipiert, dass es erweiterbar ist. Neue RR-Typen und -Klassen können definiert werden, um neue Anwendungen und Dienste zu unterstützen.
Richtlinien:
- Neue Typen und Klassen sollten (SHOULD) bei der IANA registriert werden
- Implementierungen sollten (SHOULD) in der Lage sein, unbekannte Typen angemessen zu handhaben
- Unbekannte RR-Typen sollten (SHOULD) von Nameservern bewahrt und weitergeleitet werden
- Das allgemeine Format von RRs ermöglicht das Hinzufügen neuer Typen, ohne bestehende Implementierungen zu brechen
Weiter: 4. Messages (Nachrichten)