Domain Name Service

Dies ist keine vollständige Dokumentation des DNS-Protokolls. Für einen kompletten Überblick verweise ich auf die entsprechenden RFCs.

Bei Integern, die aus mehr als einem Byte bestehen, wird das MSB zuerst übertragen (entspricht Big Endian).

Header
Question (Anfrage an Name-Server)
Answer (RR mit der Antwort)
Authority (RR der auf eine Authority zeigt)
Additional (RR mit zusätzlichen Informationen)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
ID
QR OPCODE AA TC RD RA Z RCODE
QDCOUNT
ANCOUNT
NSCOUNT
ARCOUNT
  • ID - 16 Bit, wird von Anfrage in Antwort übernommen
  • QR - 0 ⇒ Query, 1 ⇒ Response
  • OPCODE - 4 Bits, Art der Anfrage, wird von Anfrage in Antwort kopiert
    • 0 - Standard Query
    • 1 - Inverse Query
    • 2 - Server Status Query
    • 3 - 15 - Reserviert
  • AA - Authoritive Answer, Bit wird in Antworten gesetzt, wenn der antwortende Name-Server eine Authority for the Domain-Namen im Question-Abschnitt ist
  • TC - TrunCation - Nachricht wurde abgeschnitten
  • RD - Recursion Desired - kann in einer Anfrage gesetzt sein und wird in die Antwort kopiert, Anfrage soll rekursiv ausgeführt werden, Unterstützung dieses Features ist optional
  • RA - Recursion Available - Bit ist in Antwort gesetzt, wenn Rekursive Anfragen durch Name-Server unterstützt werden
  • Z - Reserviert, muss immmer auf 0 stehen
  • RCODE - Response Code, 4 Bits, werden in der Antwort gesetzt
    • 0 - Kein Fehler
    • 1 - Name-Server konnte Anfrage nicht interpretieren
    • 2 - Server Failure, Anfrage konnte durch ein Problem mit dem Name-Server nicht durchgeführt werden
    • 3 - Name Error, kann von einem Authoritive-Name-Server gesetzt werden, wenn der angefragte Domain-Name nicht existiert
    • 4 - Not implemented, der Art der Anfrage wird von dem Name-Server nicht unterstützt
    • 5 - Refused, Anfrage wurde von Name-Server abgewiesen
    • 6 - 15 - Reserviert
  • QDCOUNT - 16 Bit Unsigned Integer, Anzahl der Einträge im Question-Abschnitt
  • ANCOUNT - 16 Bit Unsigned Integer, Anzahl der Einträge im Answer-Abschnitt
  • NSCOUNT - 16 Bit Unsigned Integer, Anzahl der Einträge im Authority-Abschnitt
  • ARCOUNT - 16 Bit Unsigned Integer, Anzahl der Einträge im Additional-Abschnitt
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
QNAME
QTYPE
QCLASS

Die Answer-, Authority- und Additional-Abschnitte haben alle den gleichen Aufbau. Sie bestehen aus einer variablen Anzahl von Resource Records, deren Anzahl in den entsprechenden Feldern im Header angegeben ist

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
NAME
TYPE
CLASS
TTL
TTL
RDLENGTH
RDATA

NAME

Domain-Name als Folge von Labels, jedem Label ist seine Länge als Byte vorangestellt, abgeschlossen durch ein 0-Byte.

Beispiel:

0x03 w w w 0x0F m a r t i n - p r o c h n o w 0x02 d e 0x00

Dabei gelten folgende Beschränkungen:

  • Label dürfen maximal 63 Byte groß sein
  • Namen dürfen maximal 255 Byte groß sein

Es gibt einen Kompressionsmechanismus, um die unnötige mehrfache Angabe desselben Domain-Namens zu vermeiden.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 1 Offset

Der Offset gibt die Position vom Start der Nachricht an.

TYPE

2 Byte, Typ des Resource Records (nicht mehr genutzte und experimentelle Typen sind hier nicht aufgelistet)

  • 1 - A - Host-Address
  • 2 - NS - Authoritive-Name-Server
  • 5 - CNAME - Kanonischer Name für ein Alias
  • 6 - SOA - Markiert den Start einer Zone-Authority
  • 11 - WKS - Well known service description
  • 12 - PTR - Domain name pointer
  • 13 - HINFO - Host Information
  • 14 - MINFO - Mailbox- oder Mail-Listen-Information
  • 15 - MX - Mail exchange
  • 16 - TXT - Text string

CLASS

2 Bytes, Klasse des Resource Records (nicht mehr genutzte Klassen sind hier nicht aufgelistet)

  • 1 - IN - Internet
  • 3 - CH - CHAOS class
  • 4 - HS - Hesiod [Dyer 87]
  • 255 - beliebige Klasse

TTL

32 Bit Unsigned Integer, Zeit in Sekunden, die der Resource Record ge-cached werden soll/kann

RDLENGTH

16 Bit Integer, gibt die Länge des RDATA-Feldes in Byte an

RDATA

Enthält die Beschreibung der Ressource, abhängig von TYPE und CLASS

CNAME

Domain-Name, siehe NAME

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
CNAME
MX
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
PREFERENCE
EXCHANGE
  • PREFERENCE - 16 Bit Integer, Priorität
  • EXCHANGE - Domain-Name, siehe NAME
NS

Enthält den Domain-Namen des Name-Servers, der für die angegebene Domain verantwortlich ist.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
NSDNAME
TXT

Enthält Text - nicht mehr und nicht weniger

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
TXT-DATA
A

IPv4-Adresse der angegebenen Domain

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Byte 1 Byte 2 Byte 3 Byte 4
  • Zuletzt geändert: 2017-04-05 11:10