Ik kan me nauwelijks voorstellen dat dit een server is met een enorme database met alle onderliggende ip's, teveel werk en te langzaam, maar hoe de hell werkt het dan wel??
DNS is een uiterst complex samenvoegsel van vele gedistribueerde databases, die onderling babbelen over namen die ze niet weten. De top van DNS wordt beheerd in Amerika door Internic en hier zitten de zg. root-servers. Onder Unix en NT heb je een heleboel tools waarmee je hierover gegevens kan uitvragen (nslookup, dig, traceroute, dnsquery). Vraag ik bijvoorbeeld op wie de eigenaar van .com is met "dnsquery .com -t soa" dan krijg ik:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34449
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 12, ADDITIONAL: 2
;; com, type = ANY, class = IN
com. 1d11h54m29s IN NS A.ROOT-SERVERS.NET.
com. 1d11h54m29s IN NS G.ROOT-SERVERS.NET.
com. 1d11h54m29s IN NS F.GTLD-SERVERS.NET.
com. 1d11h54m29s IN NS F.ROOT-SERVERS.NET.
com. 1d11h54m29s IN NS E.ROOT-SERVERS.NET.
com. 1d11h54m29s IN NS J.GTLD-SERVERS.NET.
com. 1d11h54m29s IN NS K.GTLD-SERVERS.NET.
com. 1d11h54m29s IN NS A.GTLD-SERVERS.NET.
com. 1d11h54m29s IN NS M.GTLD-SERVERS.NET.
com. 1d11h54m29s IN NS H.GTLD-SERVERS.NET.
com. 1d11h54m29s IN NS C.GTLD-SERVERS.NET.
com. 1d11h54m29s IN NS I.GTLD-SERVERS.NET.
com. 19h45m14s IN SOA A.ROOT-SERVERS.NET. hostmaster.interni
c.NET. (
2000052801 ; serial
30M ; refresh
15M ; retry
1W ; expiry
)
Dit laatste beetje informatie gaat over hoe lang een bepaalde DNS naam in een cache mag blijven. Het serienummer geeft aan of een DNS tabel is gewijzigd.
Als een DNS server dus een .com domein zoekt, kan hij terecht bij een van bovengenoemde root servers.
Nu kan ik dit verhaal heel lang en technisch gaan maken maar dat heeft geen zin. Feit is dat als jij een site opvraagt, bijvoorbeeld "helloworld.com" dan gaat de DNS server van jouw provider kijken of dat al in zijn cache staat. Zo nee, gaat ie het ergens anders proberen net zolang tot 'ie het weet. Uiteindelijk krijgt hij een IP adres. Via routers kom je vervolgens waar je moet zijn.
Maar DNS is veel uitgebreider dan alleen hostname / ip conversie. Het voorziet ook in speciale records voor bijvoorbeeld mail delivery (MX records).
En er zijn ongetwijfeld vele beschrijvingen op Internet, completer en beter dan deze. Maar het geeft je een idee.
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34449
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 12, ADDITIONAL: 2
;; com, type = ANY, class = IN
com. 1d11h54m29s IN NS A.ROOT-SERVERS.NET.
com. 1d11h54m29s IN NS G.ROOT-SERVERS.NET.
com. 1d11h54m29s IN NS F.GTLD-SERVERS.NET.
com. 1d11h54m29s IN NS F.ROOT-SERVERS.NET.
com. 1d11h54m29s IN NS E.ROOT-SERVERS.NET.
com. 1d11h54m29s IN NS J.GTLD-SERVERS.NET.
com. 1d11h54m29s IN NS K.GTLD-SERVERS.NET.
com. 1d11h54m29s IN NS A.GTLD-SERVERS.NET.
com. 1d11h54m29s IN NS M.GTLD-SERVERS.NET.
com. 1d11h54m29s IN NS H.GTLD-SERVERS.NET.
com. 1d11h54m29s IN NS C.GTLD-SERVERS.NET.
com. 1d11h54m29s IN NS I.GTLD-SERVERS.NET.
com. 19h45m14s IN SOA A.ROOT-SERVERS.NET. hostmaster.interni
c.NET. (
2000052801 ; serial
30M ; refresh
15M ; retry
1W ; expiry
)
Dit laatste beetje informatie gaat over hoe lang een bepaalde DNS naam in een cache mag blijven. Het serienummer geeft aan of een DNS tabel is gewijzigd.
Als een DNS server dus een .com domein zoekt, kan hij terecht bij een van bovengenoemde root servers.
Nu kan ik dit verhaal heel lang en technisch gaan maken maar dat heeft geen zin. Feit is dat als jij een site opvraagt, bijvoorbeeld "helloworld.com" dan gaat de DNS server van jouw provider kijken of dat al in zijn cache staat. Zo nee, gaat ie het ergens anders proberen net zolang tot 'ie het weet. Uiteindelijk krijgt hij een IP adres. Via routers kom je vervolgens waar je moet zijn.
Maar DNS is veel uitgebreider dan alleen hostname / ip conversie. Het voorziet ook in speciale records voor bijvoorbeeld mail delivery (MX records).
En er zijn ongetwijfeld vele beschrijvingen op Internet, completer en beter dan deze. Maar het geeft je een idee.
Thank God for the Internet
Nu we het toch over DNS hebben moest ik weet denken aan een korte discussie op de newspagina's van Tweakers (zie het webserver survey verhaal).
Weet iemand of het mogelijk is om te bepalen of twee willekeurige domeinnamen met verschillende IP adressen fysiek op dezelfde server draaien?
Volgens mij kan het niet met de standaard DNS tools (dig, dnsquery etc). Maar misschien zou het kunnen met een packet analyser? Ethernet adres? Werkt dat?
Weet iemand of het mogelijk is om te bepalen of twee willekeurige domeinnamen met verschillende IP adressen fysiek op dezelfde server draaien?
Volgens mij kan het niet met de standaard DNS tools (dig, dnsquery etc). Maar misschien zou het kunnen met een packet analyser? Ethernet adres? Werkt dat?
Thank God for the Internet
Verwijderd
om de werking van DNS echt goed uit te leggen heb je toch echt een goed boek nodig.... bijv. DNS & Bind van O'reilly www.oreilly.com (300pages oid)