[ zurück ] Icon

DNS-Resolver mit Delphi 3

Über den DNS-Dienst
  1. Dienstadresse
  2. Message-Sektionen
  3. Internet-Transport
  4. Header-Sektion
  5. Question-Sektion
  6. Answer-Sektion
  7. andere Sektionen
  8. RFC Quellen

Der Domain-Name-Service verwaltet eine verteilte Datenbank mit Internetadressen. Er ist ein hierarchisch gegliedertes System aus Servern, die rekursiv verbunden in den Ästen des gewaltigen Internet-Namensraumes agieren. Sein Aufbau ist in RFC1034 dokumentiert. Die genaue Kenntnis von Details ist aber für die Benutzung nicht notwendig. Wichtiger sind einige Festlegungen aus RFC1035. Hier sind die Datenformate der Resource-Records festgelegt, in die Sie die Anfragen und Antworten verpacken.

Im Rahmen dieser Webseite möchte ich keinesfalls die über 200 Seiten der RFCs erklären. Aber aus eigener Erfahrung weiß ich, daß man gelegentlich für eine Einstiegsinformation in ein spezielles Thema dankbar ist. Deshalb im Folgenden einige Kernprobleme bei der Benutzung des DNS-Dienstes:

1. Der DNS-Dienst arbeitet auf Port 53 des Internet. Die Adressen der Server erfahren Sie von Ihrem Provider. Falls mit automatischer Zuweisung des DNS-Servers gearbeitet wird, ist die Sache schon etwas problematischer. Das Systemprogramm "WinIPCfg" verrät Ihnen dann bei bestehender Verbindung Ihre beiden DNS-Server. Sie können aber notfalls jeden beliebigen DNS-Server anzapfen. Die Adressen der großen Online-Dienste sind:

Online-DienstDNS-ServernameIP-Adresse
 AOLdns-01.ns.aol.com, dns01.blue.aol.de152.163.159.232, 193.189.233.45
 Compuservearl-name-svc-1.compuserve.com
ns-2.mediaways.net
149.174.211.5
193.189.231.2
 Arcor.netns1.arcor-ip.de, ns2.arcor-ip.de145.253.2.11, 145.253.2.75
 germany.netns.germany.net151.189.0.25
 T-Onlinepns.dtag.de, dns00.btx.dtag.de194.25.0.125, 194.25.2.130
 uunet.deauth00.ns.de.uu.net, auth50.ns.de.uu.net

2. DNS benutzt Datenstrukturen, die teils aus Klartext, teils aus Zahlencodierungen bestehen. Jede Aktion benutzt einen Datenstrom (Message) aus mehreren Sektionen:
 +----------+----------+----------+-----------+------------+
 |  Header  | Question |  Answer  | Authority | Additional |
 +----------+----------+----------+-----------+------------+
Die letzten drei Sektionen müssen nicht vorhanden sein. Eine Anfrage endet in der Regel nach der Sektion Question.

3. Wird die Message per TCP/IP im Internet übertragen, stehen vor dem Header zwei Byte Längenangabe des nachfolgenden Datenstromes. Diese gehören nicht eigentlich in die Protokolldefinition von DNS.

4. Der Header hat eine feste Struktur:
 +--------+--------+---------+---------+---------+---------+
 |   ID   |  CODE  | QDCOUNT | ANCOUNT | NSCOUNT | ARCOUNT |
 +--------+--------+---------+---------+---------+---------+

5. Danach folgt ohne jedes Trennzeichen die nächste Sektion Question. Die Frage besteht aus drei Teilen:
 +-------------------------+---------+--------+
 |          QNAME          |  QTYPE  | QCLASS |
 +-------------------------+---------+--------+

Der Domain-Name wird in eine Folge von Begriffen (Labels) zerlegt, die jeweils mit einem Längenbyte beginnen. So wird "www.kamenz.de" als
  "3www6kamenz2de" (Hex: 03 77 77 77 06 6B 61 6D 65 6E 7A 02 64 65)
codiert. Anschließend folgen sofort QTYPE und QCLASS.

Bei IP-Anfragen wird etwas anders angefragt. Nach einer Beispiel-IP "209.68.52.216" wird rückwärts gefragt und der Zusatz "in-addr.arpa" angehängt. Die Anfrage "216.52.68.209.in-addr.arpa" wird wieder in Labels zerlegt, die mit dem Längenbyte beginnen:
  "321625226832097in-addr4arpa"
In einer Anfrage ist die Message nach QCLASS zu Ende. In einer Antwort finden Sie Header und Question wieder vor. Vergleichen Sie unbedingt die ID-Nummer von Frage und Antwort.

6. Eine Antwort kann mehrere Answer-RRs (ResourceRecords) haben. Jeder Datensatz besteht aus:
 +------+------+-------+-------+---------+---------------+
 | NAME | TYPE | CLASS |  TTL  | RDLENGTH|     RDATA     |
 +------+------+-------+-------+---------+---------------+

Der Datenstring RDATA ist entweder die erfragte IP-Nummer oder der gewünschte Domain-Name. Ein Domain-Name wird wieder geteilt in Labels mit vorangestelltem Längenbyte geliefert. Eine IP-Adresse wird einfach als 4 Byte langes Ergebnis der vier Adreßzahlen (hexadezimal zu interpretieren) ohne die Punkte gegeben.

Oft werden mehrere Antworten geliefert. Jede folgt unmittelbar ohne Trennzeichen auf den vorherigen RR. Bei mehreren RRs in der Antwort beinhaltet oft der letzte Record die Antwort mit der zutreffendsten Qualität.

7. Die Sektionen Authority und Additional haben für die Komponente TResolver keine Bedeutung und werden an dieser Stelle nicht weiter erklärt.


Die RFCs (Request for Comment) liegen auf etlichen Servern. Teilweise gepackt, teilweise ungepackt.

Eine Quelle ist:
Disk http://velociraptor.mni.fh-giessen.de/rfc/rfc1034.txt (ca. 129 KByte)
Disk http://velociraptor.mni.fh-giessen.de/rfc/rfc1035.txt (ca. 125 KByte)

J. Hummel,   Januar 2001

[ Startseite ] [ TCP/IP-Seite ] [ Resolver ]