Norėdami paskambinti draugui, tikriausiai ieškote jo vardo mobilaus telefono adresų knygelėje. Nieko keisto – vardą atsiminti kur kas lengviau nei iš skaičių sudarytą telefono numerį. Kai keliaujate į interneto svetainę, adreso laukelyje įvedate tarnybinės stoties vardą (angl. domain). Domenų vardų sistema (DNS – angl. domain name system) šioje vietoje atlieka „adresų knygelės“ funkciją – žmonėms lengvai įsimenamą simbolinį vardą verčia mašinoms priimtinu skaitmeniniu pavidalu – IP adresu (angl. internet protocol address).

DNS – kas tai?

Pagrindinė šios sistemos paskirtis tinkle – versti skaitinius IP adresus į žmogui kur kas patogesnę formą – tekstinius vardus. Įsivaizduokite, kad kiekvieną kartą, norėdami aplankyti „Naujosios komunikacijos“ svetainę turėtumėte rinkti http://62.80.224.154. Juk nepatogu, tiesa? Todėl ir buvo sugalvota sistema, kuri pasirūpina, kad vardas (domenas), kurį renkate adreso laukelyje, jums nepastebint būtų pakeistas kompiuteriams priimtina forma – IP adresu. Šis procesas atliekamas kiekvieną kartą naudojantis tinklo paslaugomis. Dažnos tinklo paslaugos turi nustatytus serverių vardus (angl. hostname), kurie prieš atliekant reikalingą operaciją yra DNS tarnybinių stočių pagalba keičiami skaitiniais adresais.

Iš pirmo žvilgsnio, keisti vardus į skaitmeninius adresus atrodytų paprasta, tačiau reikia nepamiršti, kad domenų-ip adresų duomenų bazė yra bene didžiausia ir aktyviausiai naudojama saugykla visoje planetoje. Egzistuoja bilijonai IP adresų, kurių dauguma turi ir žmogui patogius simbolinius vardus. Kiekvieną dieną užregistruojama daugybė naujų vardų, nemaža dalis egzistuojančių simbolinių ir skaitinių vardų keičiasi, be to, vienas interneto vartotojas per dieną gali atlikti šimtus DNS užklausų. Ko gero žemėje nėra tokios duomenų bazės, kuri gautų tiek daug užklausų ir kartu būtų taip dažnai atnaujinama.

Istorija

Idėja naudoti žmonėms lengvai įsimenamus skaitinių adresų atitikmenis kilo JAV gynybos departamento kūrinio ARPANET (Advanced Research Projects Agency Network) – šiuolaikinio interneto pirmtako – gyvavimo metu. Tačiau anuomet buvo naudojama kitokia sistema, panaši buvo tik jos paskirtis. DNS sistema pradėta naudoti 1983-aisiais netrukus po TCP/IP įdiegimo pradžios. Senoji sistema naudojo serverių vardų failą (angl. hosts file) hosts.txt, kurį prisijungę prie tinklo kompiuteriai parsisiųsdavo iš SRI (Stanford Research Institute) tarnybinės stoties. Šis tekstinis failas susiedavo simbolinius vardus su IP adresais.

Net ir šiomis dienomis serverių vardų failas egzistuoja moderniose operacinėse sistemose. Jo paskirtis – susieti simbolinius vardus su IP adresais nereikalaujant vykdyti DNS užklausą. Paprastai šis modelis naudojamas vietiniame tinkle, kuriame nereikia dažnai atlikti pakeitimų. Globaliai simbolinių vardų duomenų bazei hosts.txt naudojimas jau seniai netinka, nes kompiuteriui kas tam tikrą laiką reikėtų atsisiųsti pilną sąrašą. Sunku net įsivaizduoti, kiek laiko tai užtruktų.

1983-aisiais Paulas Mockapetris sukūrė domenų vardų sistemą (DNS). 1984-aisiais keturi Berkeley universiteto studentai realizavo ją „Unix“ operacinėje sistemoje. 1985-aisiais Kevinas Dunlapas perrašė šią realizaciją ir pavadino ją BIND (Berkeley Internet Name Domain) vardu. Pagal šių dienų apklausas, BIND yra populiariausia programinė įranga DNS serveriams. Kiekviena Linux distribucija turi BIND paketą.

DNS veikimas

Domenų erdvė panaši į medį. Kiekviena šaka turi resursų įrašą, kuriame apibrėžta domeno informacija. Medis skirstomas į zonas. Kiekviena zona apima rinkinį šakų, už kurių palaikymą yra atsakinga. Pvz.: vardai turintys galūnę .lt, priklauso pirmo lygio zonai (TLD – angl. top level domain), už kurią yra atsakingas KTU Informacinių technologijų plėtros institutas. Šiuo atveju šakos būtų visi domenai, besibaigiantys .lt. Kiekvienas domenas, savo ruožtu, irgi yra zona, galinti turėti šakų. Pirminio (aukščiausio) lygio zonų (com, net, org, lt ir pan.) administratorius deleguoja ICANN (Internet Corporation for Assigned Names and Numbers). Antro lygio zonas (pvz.: nkm.lt) paprastai prižiūri domeno savininkas ar jo paskirti asmenys. Šioje vietoje galimos išimtys, nes tam tikrų šalių ne tik pirmo, bet ir antro lygio zonas kontroliuoja ta pati organizacija, pvz.: .uk, .co.uk, .gov.uk ir tt. Įmanomi iki 127-ojo lygio domenų adresai, tačiau dėl patogumo retai pasitaiko žemesnio nei ketvirto lygio adresai.

Visa domenų vardų sistema sudaryta iš gausybės DNS tarnybinių sočių. Pirminės stotys (angl. root name servers) saugo informaciją apie pirmo lygio vardų zonas (com, net, org, lt ir kt.), tiksliau kokios kitos DNS stotys už juos atsakingos. Trylika pirminių stočių, išdėstytų visame pasaulyje, palaiko organizacijos VeriSign, USC-ISI, University of Maryland, RIPE NCC, ICANN ir kt.

Panagrinėkime pavyzdį. Vartotojas surenka adresą www.nkm.lt naršyklėje. Visų pirma, užklausa keliauja į pirmines DNS stotis ir gauna sąrašą aštuonių DNS serverių, kurie aptarnauja .lt zoną. Tuomet vienam iš jų perduodama užklausa apie antro lygio domeną nkm.lt. Tarnybinė stotis atsako, kokie vardų serveriai yra atsakingi už šią zoną. Šiuo atveju, už nkm.lt zoną atsakingi trys vardų serveriai. Vienam jų siunčiama užklausa www.nkm.lt IP adresui sužinoti. Patikimumo sumetimais, visuose lygiuose yra naudojami du ir daugiau vardų serverių.

Svarbu, kad atitinkamą zoną aptarnaujančiuose serveriuose įrašai būtų identiški, nes gali būti kreipiamasi į bet kurį iš jų, pvz.: visi 13 pagrindinių serverių privalo identiškai atsakyti apie .lt zoną. Savo ruožtu, visi aštuoni už .lt zoną atsakingi serveriai turi teikti informaciją apie sąrašą serverių, atsakingų už nkm.lt zoną. Lygiai taip pat visi trys už nkm.lt atsakingi vardų serveriai turi atsakyti apie www.nkm.lt. Tikslumui užtikrinti vienas serveris skiriamas pirminiu (angl. master) – jame administratorius sukuria DNS įrašus ar atlieka pakeitimus. Antriniai serveriai (angl. slave) nustatytais laiko tarpais nukopijuoja pirminiame serveryje esančią informaciją apie domeno zoną. Laiko intervalus nustato pirminio DNS serverio administratorius, keisdamas „SOA (start of authority) Refresh“ reikšmę pirminiame serveryje. Ar reikia atnaujinti įrašus, antriniai serveriai nusprendžia pagal zonos serijinį numerį – „SOA Serial“, kuriame nustatytu formatu atsispindi paskutinio zonos failo keitimo data. Jei pirminio serverio darbas sutriktų, užklausos būtų nukreipiamos į vieną iš antrinių, kurių pagal RFC standartą privalo būti bent vienas.

Kaip keliauja jūsų DNS užklausa, galite sužinoti apsilankę dnsstuff.com ir „DNS Lookup“ laukelyje įvedę norimą adresą bei pasirinkę „A“ tipo įrašą.

Svarbu paminėti, kad interneto paslaugų tiekėjai kartais išsaugo (angl. cache) vartotojo gautas DNS užklausas laikino saugojimo serveriuose tam, kad kitą kartą vartotojui atliekant identišką užklausą jai pakaktų pasiekti interneto paslaugų tiekėjo DNS serverį užuot keliavus į už domeno zoną atsakingą vardų serverį. Būtent dėl šios priežasties atlikus pakeitimus pirminiame už domeną atsakingame vardų serveryje laikoma, kad jie įsigalios per dvi paras, nes paprastai per tiek laiko visi laikino saugojimo serverius naudojantys interneto paslaugų tiekėjai atnaujina įrašus savo stotyse.

DNS sistemos architektūra užtikrina stabilų sistemos veikimą ir susidoroja su milžinišku kiekiu informacijos bei užklausų. Vartotojas šios sistemos darbo dažniausiai net nepastebi, nes užklausa apdorojama per šimtąsias sekundės dalis.

Šis straipsnis spausdintas žurnale Naujoji komunikacija, 2007 m. birželio 30 d. – liepos 30 d. Nr. 9 (205), Vilnius: Leidybos idėjos, p. 17-18. ISSN 1392-3927.