A tartománynevek rendszerének három fő komponense:
Tartománynevek (körzetnevek) tere és erőforrás rekordok
Névszerverek
Címfeloldó (resolver) programok
Fa típusú gráf, melyben minden csúcs egy erőforráshalmazt reprezentál.
A csúcsokhoz egy (max. 63 bájt hosszúságú) címkét rendelünk.
Két testvér csúcs címkéje nem lehet azonos.
A zéró hosszúságú címke („null címke”) a gyökér számára kizárólagosan foglalt.
Címke belső reprezentációja:
A címke hossza egy bájton. |
A megfelelő karaktersorozat (bájtsztring). |
A kis- és nagybetűk között nem teszünk különbséget, de célszerű megtartani a forrás írásmódját.
Gráfelméleti alapok DNS alkalmazása:
A tartománynevek terében bármely csúcs egyértelműen reprezentálható a csúcstól a gyökérig vezető utat leíró címkesorozattal (abszolút tartománynév).
Abszolút tartománynév belső reprezentációja:
Maximum 255 bájt hosszúságú.
A címkéket sorrendhelyesen konkatenáljuk.
Szükségképpen NULL karakterrel (0 bájttal) végződik.
Tartománynevek reprezentációja felhasználói interfészeknél:
Címkesztring sorozat, elválasztó karakter a pont (.)
Lehet abszolút és relatív.
A tartománynevek egy csomópontot specifikálnak.
A csomópontokhoz egy erőforrás-halmaz társítható.
Az információs erőforrások ún. erőforrás rekordokban (Resource Record, RR) tárolódnak.
Az erőforrás rekordok sorrendje lényegtelen.
Az erőforrás rekordok mezői:
tulajdonos |
osztály |
típus |
élettartam |
adat |
Tulajdonos: Az a tartománynév, amelyhez a RR tartozik.
Osztály: 16 bites érték, mely egy protokollcsaládot, vagy egy protokollt azonosít.
IN: az internet protokollcsalád |
CH: A Chaos protokollcsalád |
Élettartam (TTL): 32 bites érték: A RR max. felhasználhatósági ideje (sec).
Típus: 16 bites érték a típus szerinti tagoláshoz.
A legfontosabb erőforrásrekord-típusok és jelentésük:
A | A tulajdonos hálózati címe. |
CNAME | Egy alias névhez kanonikus név rendelése. |
HINFO | CPU, op. rsz. információk meghatározása. |
MX | Levélforgalmazó (mail exchange) megadása. |
NS | Névszerver rendelése a tartományhoz. |
PTR | Pointer a névtér egy másik területére. |
SOA | Hitelességi (authority) zóna specifikációja. |
Érték (RDATA): A típustól függően értelmezendő bitsorozat (adat).
Típus | Adat |
---|---|
A | 32 bites IP cím (IN osztály esetén). |
CNAME | Tartománynév. |
HINFO | Tetszőleges sztring. |
MX | 16 bites prioritás érték és egy tartománynév. |
NS | Egy host tartományneve. |
PTR | Egy tartománynév. |
SOA | Több mezőből álló rekord. |
A tartománynevek tere két (természetes) módon darabolható:
Az osztálytagozódás alapján.
A különböző osztályok parallel névtér-faként foghatók fel. |
A tartománynév-tér (fa) éleinek átvágásával.
Ha a tartománynevek terében bizonyos éleket „átvágunk”, akkor a maximálisan összefüggő részgráfok szintén fa struktúrájúak. |
Egy ilyen maximálisan összefüggő részgráfot zónának nevezünk. |
Egy zóna reprezentálható a gyökérhez legközelebbi csúcsának tartománynevével. |
A zónák közötti „átvágásokat” nyilván kell tartanunk. |
A névszerverek olyan szerverprogramok, melyek:
Információt tárolnak a tartománynevek gráfjáról.
Tartománynevekhez tartozó erőforrás rekordokat tárolnak.
Egy (vagy több) zónához tartozó valamennyi csomópont hiteles (authoritative) erőforrás rekordját.
A zóna gyökérhez legközelebbi csúcsát leíró adatokat. |
Szomszéd (gyermek) zónákhoz (és ezek névszervereihez) vezető információkat.
Időlegesen más zónákhoz tartozó RR-t (cache).
Kérdéseket (lekérdezéseket) válaszolnak meg.
Rekurzív módon |
Nem rekurzív (iteratív) módon |
A lekérdezések és válaszok egy standard formátumot követnek:
Fejrész. Egy bitkombináció a különböző kérdések (pl. standard query, status query stb.) elkülönítésére.
Kérdés. A kérdéses név, és a kérdés egyéb paraméterei.
Válasz. A kérdéshez tartozó direkt válasz.
Hitelesség. A hiteles szerverek adatait leíró rekordok.
További adatok. A kérdéshez kapcsolódó egyéb információk (RR).
DNS kérdés példa.
Fejrész |
OPCODE=Standard Query |
Kérdés |
QNAME=ISI.EDU. CLASS=IN TYPE=MX |
Válasz |
|
Hiteles |
|
További |
|
DNS válasz példa.
Fejrész |
OPCODE=Standard Query, Response, AA |
Kérdés |
QNAME=ISI.EDU. CLASS=IN TYPE=MX |
Válasz |
ISI.EDU 86400 IN MX VAXA.ISI.EDU. |
Hiteles |
|
További |
VAXA.ISI.EDU IN A 10.2.0.27 |
Nem rekurzív módszer:
Szerver oldalon a legegyszerűbb megvalósítás.
Minden névszerverben implementált.
A kliensnek lehetősége nyílik az információk értékelésére.
Rekurzív módszer:
Kliens oldalon a legegyszerűbb megvalósítás.
A szerveren megvalósítható átmeneti tárolás (cache).
Opcionális, mind a szerveren, mind a kliensen implementált-nak kell lennie.
A szerver minden válaszában egy bit (RA) jelzi az implementációt. |
A kliens a kérdésben egy bittel (RD) jelzi a rekurzív igényt. |
A címfeloldó programok a felhasználói programok és a névszerverek közötti interfészek.
A címfeloldás ideje lehet kicsi (millisec.) pl. helyi adatokból felépített válasz esetén, de lehet nagy (több sec.) névszerverek adatait kérdezve.
A címfeloldás kliens oldala általában platformfüggő.
Általános funkciók:
Gépnév → gépcím meghatározás |
Gépcím → gépnév meghatározás |
Általános lekérdezési funkció |
A címfeloldók az igényelt tevékenység elvégzése után (általában) a következő eredményekkel térhetnek vissza:
Egy vagy több RR, a választ tartalmazva
Névhiba (Name Error, NE)
A kérdezett név nem létezik. |
Adat nem található (Data Not Found)
A név létezik, de a kérdezett adat (vagy típus) nem. |
Átmeneti hiba
Például valamilyen hálózati hiba (vonalhiba) miatt a kérdezett zóna nem elérhető. |
Gyakran nem implementálják külön válaszként. |