# DNS

**DNS** (eng. *Domain Name System*) je distribuirani hijerarhijski sastav Internet poslužitelja u kojem se nalaze informacije povezane s domenskim nazivima, tj. o povezanosti IP adresa i njihovih logičkih (simboličkih) imena.

DNS je u stvari jedna baza podataka u kojoj su upisana sva imena i odgovarajuće IP adrese pojedinih računara, te grupa funkcija koje omogućavaju prevođenje istih. Treba naglasiti da npr. cijeli Internet, koji je također jedna velika mreža, koristi DNS mehanizam.

## Vrste DNS sistema

Postoje dvije metode koje se, ovisno o veličini mreže, koriste za prevođenje IP adresa.

* **Datoteka /etc/hosts** (Linux)

U manjim mrežama je dovoljno unijeti adrese i imena lokalnih računara u ovu datoteku. U nju je također moguće navesti i udaljene računare (npr. servere provajdera). Međutim, ova metoda je statičkog karaktera jer ukoliko se neka IP adresa u međuvremenu promijeni, moramo ručno unijeti nove podatke.

* **Domain Name System (DNS)**

Ovaj sistem dijeli cijeli Internet u pojedine domene. Svaka domena koristi *nameservere* koji poznaju IP adrese i imena računara koji se nalaze u području te domene. Svi *nameserveri* su međusobno povezani u obliku stabla te se mogu posmatrati kao jedna velika centralna baza podataka.

## *Domain Name Space*

Internet je podijeljen na pojedina područja od kojih svako ima određeno značenje. Ta područja podijeljena su u obliku stabla i podsjećaju na organizaciju direktorija na hard disku jednog računara. Struktura interneta prikazana je na slici:

Domene složene u stablo, podijeljene u zone, svaku opslužuje nameserver
### *Root Domain*

Na vrhu se, kao što vidimo, nalazi root domena koja se označava tačkom. U praksi se ta tačka ignoriše tako da je ne moramo koristiti.

### *Top Level Domain*

Drugo područje pripada Top Level Domeni i iz nje se može otprilike pretpostaviti kojoj organizaciji ili državi ta domena pripada.Ispod ili iznad TLD (Top Level Domene) ne može se nalaziti neka druga TLD. Za Bosnu i Hercegovinu važi **.ba** kao TLD što znači da je firma iz Bosne i Hercegovine ili je samo prijavljena na njenom području.

### *Second Level Domain*

*Second Level Domain* je sljedeće niže područje ispod TLD i označava ime pod kojim se neka firma može registrovati. Uzmimo za primjer da firma "velikafirma" želi da registruje domenu na internetu sa nazivom velikafirma.ba. Prvo moramo saznati da li je ta domena slobodna. Centralno mjesto za registraciju domena je InterNIC ([ www.internic.net). Ovdje je također moguće prekontrolisati dostupnost slobodnih domena..

### Poddomena

Ispod gore navedenih domena moguć je još jedan sloj domena koji se zove **poddomena** ((`en`)). U praksi se rijetko susreće sa poddomenama jer je za njihovo korištenje potrebno pamtiti dugačka imena. Univerziteti npr. često koriste poddomene jer su podijeljeni u više stručnih područja. Na slici je prikazan jedan računar koji se nalazi pod poddomenom *evropa*. Iz toga je moguće zaključiti da je spojen sa računarom koji je postavljen u Evropi.

## Zone

Ukoliko se rezerviše domena *velikafirma.ba* bit će potreban jedan sopstveni DNS server koji je zaslužen za sve hostove koji pripadaju toj domeni. Sve informacije koje se odnose na hostove snimljene su u jednoj datoteci koja u praksi često nosi naziv "zone-file". Pod zonom se podrazumijeva područje za koje je naš DNS server zaslužen. U našem primjeru bi znači jedan server mogao rukovoditi zonama *evropa.velikafirma.ba* kao i *azija.velikafirma.ba* i svi hostovi bi bili uvedeni u jednoj datoteci. Ipak, u praksi se često za svaku zonu koristi poseban DNS server jer ta konstalacija znatno olakšava administraciju.

## Redoslijed ispitivanja

Ispitivanje DNS servera od strane clienta je vrlo interesantan postupak. Razlikujemo dvije vrste ispitivanja:

* **Rekursivno ispitivanje**

 Kao prvo korisnik upisuje u svoj browser ime računara sa kojim želi da uspostavi vezu, npr azija.velikafirma.ba. Nakon toga se aktivira funkcija za prevođenje imena resolver koja upita lokalni DNS server za ip adresu tog imena. Server sada traži u svojoj datoteci za zonu kao i u svom catche-u. Ako nađe traženu IP adresu, vraća je clientu kao odgovor, u suprotnom vraća poruku da adresa nije uvedena.
* **Forward-Lookup**

 Kao prvo korisnik upisuje u svoj browser ime računara sa kojim želi da uspostavi vezu, npr. evropa.velikafirma.ba. Nakon toga se aktivira funkcija za prevođenje imena resolver koja upita lokalni DNS server za IP adresu tog imena. Server sada traži u svojoj datoteci za zonu kao i u svom catche-u. Ako nađe traženu ip adresu, vraća je clientu kao odgovor,ako ne onda taj DNS server šalje pitanje na DNS server koji je zadužen za root domenu koju smo gore objasnili i koji mora biti unešen u lokalnom DNS serveru. Ako i ovaj ne pronađe odgovarajuću
adresu, onda šalje pitanje na DNS server koji je autoriziran za .ba domenu.Ukoliko ovaj pronađe adresu, vraća je direktno lokalnom DNS serveru, ako ne onda šalje pitanje DNS serveru zaduženom za domenu *velikafirama*.Postupak se ponavlja sve dok se tražena adresa ne pronađe.

## *Cache Name Server*

Zadatak jednog Cache Name Servera je da oslobodi odnosno rastereti druge name servere. U njemu ne postoji datoteka za zonu, već se sve informacije prikupljaju u sopstvenom cache-u ( čitaj: kešu ). Cache je nakon podizanja sistema prvo potpuno prazan i vremenom se postepeno puni informacijama. Ako clienti često koriste iste informacije za neki udaljeni računar, intervencija će biti puno brža jer naš Cache Name server nakon prvog ispitivanja udaljenih DNS servera pamti informacije u svom Cache-u.