Bei DNS wird ein Name von rechts nach links aufgebaut. Der 'Root' (Wurzel, Anfang), ist also die '.' Zone. Dieses Beispiel folgt dem Beispiel des Internets.
Unser Beispiel wird nun folgender Hostname sein:
a.mx.hubermonsch.ch.
Zu beachten ist der abschliessende Punkt. Dieser ist optional, wird jedoch zu
einem besseren Verständnis angefügt. Dieser Name wird nun von rechts
nach links aufgelöst. Wer dies macht, wird später erklärt.
Wir fragen nach dem 'A' RR (Resource Record). Das 'A' steht für 'Address', also eine
IP-Adresse.
Als erstes fragt man bei den sogenannten Root-Servern an. Dies ist eine
iterative Anfrage, auf welche man immer eine Antwort mit AUTHORITIVE 1
zurückbekommen muss. Die Root-Server wissen den A RR von
a.mx.hubermonsch.ch. nicht, koennen darauf also nicht authoritiv
antworten. Die Root Server wissen jedoch wer für ch.
verantwortlich ist. Also antworten sie authoritiv mit den NS (Nameserver) RR's
für ch.. Visuell sieht dies so aus:
; <<>> DiG 9.2.2 <<>> a.mx.hubermonsch.ch @a.root-servers.net ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7884 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 7, ADDITIONAL: 7 ;; QUESTION SECTION: ;a.mx.hubermonsch.ch. IN A ;; AUTHORITY SECTION: ch. 172800 IN NS NS.APNIC.NET. ch. 172800 IN NS DOMREG.NIC.ch. ch. 172800 IN NS MERAPI.SWITCH.ch. ch. 172800 IN NS DNS.PRINCETON.EDU. ch. 172800 IN NS RIP.PSG.COM. ch. 172800 IN NS TULKU.NIC.AR. ch. 172800 IN NS CCTLD.TIX.ch. ;; ADDITIONAL SECTION: NS.APNIC.NET. 172800 IN A 203.37.255.97 DOMREG.NIC.ch. 172800 IN A 130.59.1.80 MERAPI.SWITCH.ch. 172800 IN A 130.59.211.10 DNS.PRINCETON.EDU. 172800 IN A 128.112.129.15 RIP.PSG.COM. 172800 IN A 147.28.0.39 TULKU.NIC.AR. 172800 IN A 200.16.97.77 CCTLD.TIX.ch. 172800 IN A 194.42.48.120 ;; Query time: 831 msec ;; SERVER: 198.41.0.4#53(a.root-servers.net) ;; WHEN: Mon Apr 28 11:49:30 2003 ;; MSG SIZE rcvd: 334
Wieder fragen wir einen der ch. Nameserver nach
a.mx.hubermonsch.ch. Diese wissen den A RR jedoch auch nicht. Wissen
jedoch, wer für hubermonsch.ch. zuständig ist. Also Teilen
sie uns dessen NS-RR's mit.
; <<>> DiG 9.2.2 <<>> a.mx.hubermonsch.ch @ns.apnic.net ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22594 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;a.mx.hubermonsch.ch. IN A ;; AUTHORITY SECTION: hubermonsch.ch. 43200 IN NS ns1.v-1.ch. hubermonsch.ch. 43200 IN NS ns2.v-1.ch. ;; ADDITIONAL SECTION: ns1.v-1.ch. 43200 IN A 157.161.114.35 ns2.v-1.ch. 43200 IN A 157.161.114.36 ;; Query time: 1152 msec ;; SERVER: 203.37.255.97#53(ns.apnic.net) ;; WHEN: Mon Apr 28 11:53:44 2003 ;; MSG SIZE rcvd: 109
Wir fragen den hubermonsch.ch. Nameserver nach
a.mx.hubermonsch.ch.. Sagt dieser uns nun die für
mx.hubermonsch.ch. zuständigen Nameserver?
Nein. Denn mx.hubermonsch.ch. wurde nicht weiterdelegiert, also wissen
die hubermonsch.ch. Nameserver den A RR. Und antworten auch
entsprechend.
; <<>> DiG 9.2.2 <<>> a.mx.hubermonsch.ch @ns1.v-1.ch ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38776 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4 ;; QUESTION SECTION: ;a.mx.hubermonsch.ch. IN A ;; ANSWER SECTION: a.mx.hubermonsch.ch. 86400 IN A 194.147.133.161 ;; AUTHORITY SECTION: hubermonsch.ch. 43200 IN NS ns2.v-1.ch. hubermonsch.ch. 43200 IN NS ns1.v-1.ch. ;; ADDITIONAL SECTION: ns1.v-1.ch. 43200 IN A 157.161.114.35 ns2.v-1.ch. 43200 IN A 157.161.114.36 ;; Query time: 85 msec ;; SERVER: 157.161.114.35#53(ns1.v-1.ch) ;; WHEN: Mon Apr 28 13:02:18 2003 ;; MSG SIZE rcvd: 182
Der 2nd Level DNS Server muss nicht unbedingt die Antwort genau wissen, es ist
genauso möglich, das mx.hubermonsch.ch. nochmal woanders hin
delegiert ist. Dies ist der Punkt, an dem DNS beginnt ziemlich theoretisch und
Abstrakt zu werden. Theoretisch hätten bereits die Root-Server unsere
Anfrage beantworten können. Doch dazu später mehr.
Gehen wir zuerst einmal davon aus, das die hubermonsch.ch. Nameserver
den A-RR für a.mx.hubermonsch.ch. nicht kennen, wohl aber die
für mx.hubermonsch.ch. zuständigen Nameserver. Die Antwort
dürfte dann ungefähr so aussehen:
; <<>> DiG 9.2.2 <<>> a.mx.hubermonsch.ch @ns.apnic.net ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22594 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;a.mx.hubermonsch.ch. IN A ;; AUTHORITY SECTION: mx.hubermonsch.ch. 43200 IN NS a.ns.mx.hubermonsch.ch mx.hubermonsch.ch. 43200 IN NS b.ns.mx.hubermonsch.ch ;; ADDITIONAL SECTION: a.ns.mx.hubermonsch.ch. 43200 IN A 157.24.23.12 b.ns.mx.hubermonsch.ch. 43200 IN A 157.123.232.123 ;; Query time: 1152 msec ;; SERVER: 203.37.255.97#53(ns.apnic.net) ;; WHEN: Mon Apr 28 11:53:44 2003 ;; MSG SIZE rcvd: 109Nun wissen wir, wer für mx.hubermonsch.ch. verantwortlich ist, und könnten nun diese Server nach a.mx.hubermonsch.ch. befragen. Dies währe das selbe Spielchen wie oben, deswegen lassen wir hier weg.