# Доменски именски систем

**Доменскиот именски систем** (англ. *Domain Name System* - **DNS**) претставува хиерархиски систем изграден од дистрибуирана база на податоци за компјутери, сервиси и ресурси поврзани во мрежа. Функцијата на доменскиот именски систем е преведување на имињата на домените разбирливи за луѓето во мрежни адреси кои ги користат компјутерите.

Компјутерите кои се поврзани во мрежа користат IP-адреси за меѓусебно да се лоцираат и поврзат, овие IP-адреси во својата изворна форма корисниците тешко ги запомнуваат. На пример полесно е да се запомни името на доменот www.wikipedia.org отколку да се запомни соодветната IP-адреса (208.80.152.2).

Доменскиот именски систем овозможува да се доделуваат имиња на домени на групи од Интернет ресурси и корисници, независно од физичката локација на ентитетот. Имињата на Интернет домените е полесно да се запомнат отколку IP-адресите како 208.77.188.166 (IPv4) или 2001:db8:1f70::999:de8:7648:6e8 (IPv6). Корисниците ги чувствуваат бенефициите од ова кога пишуваат URL (Uniform Resource Locator) и адреси на електронска пошта без при тоа да знаат како компјутерот ги лоцира.

Системот ја дистрибуира одговорноста за именување на домените и задавање на тие имиња во IP-адреси на авторитативни опслужувачи на имиња. Авторитативните опслужувачи на имиња се одговорни за определени домени, а исто така и можат да бидат доделени авторитативни опслужувачи за поддомените. Ваквиот механизам овозможува DNS да биде дистрибуиран и е елиминирана потребата за постоење на централен регистар до кој постојано ќе се пристапува и ќе биде ажуриран.

## Историја на доменскиот именски систем

Почетоците на појавата на доменскиот именски систем се забележуваат во текот на 1970-тите години, во рамките на ARPANET. Во тоа време ARPANET се состоела од стотина компјутери поврзани во мрежа. Целокупните информации за мапирање на имињата во адреси за секој од компјутерите во мрежата биле содржани во една единствена податотека со име HOSTS.TXT. Податотеката HOSTS.TXT била одржувана од страна на SRI мрежно – информацискиот центар и била дистрибуирана само од еден компјутер во мрежата, SRI-NIC. Администраторите на ARPANET на определено време ги ажурирале промените со испраќање на електронска пошта до мрежно – информацискиот систем и преку FTP ја преземале најновата верзија на податотеката HOSTS.TXT.

Проблемите се појавиле со порастот на бројот на компјутери во мрежата. Растот предизвикал пропорционално зголемување на податотеката HOSTS.TXT, а исто така бил зголемен и мрежниот сообраќај поради процесот на постојано ажурирање на HOSTS.TXT.

Најголем удар на ваквата структура на ARPANET и задал преминот кон TCP/IP кога бројот на компјутери во мрежата многу се зголемил. Главните проблеми на структурата со HOSTS.TXT податотека биле:

* Зголемен сообраќај во мрежата и оптоварување на обработувачот на SRI мрежно – информацискиот систем.
* Во оваа структура се појавуваат колизии на имињата, бидејќи не постои механизам за да ја спречи појавата на повеќе компјутери со исто име.
* Невозможноста да се одржи конзистентноста на HOSTS.TXT податотеката.

Проблемот со лошата размерливост на оваа структура ARPANET се обидува да го реши со создавање на хиерархиски простор на имиња.

Во 1984 година Пол Мокапетрис (Paul Mockapetris) од Институтот за информатички науки USC дизајнирал архитектура за новиот систем. Тој ги издал RFC 882 и RFC 883 со кои бил опишан доменскиот именски систем (DNS), во ноември 1987 година биле заменети со RFC 1034 и RFC 1035. Подоцнежните RFC опишуваат различни аспекти на доменскиот именски систем како: потенцијалните безбедносни проблеми на DNS, проблемите околу имплементацијата, административни пропусти, механизми за динамичко ажурирање и за обезбедување на податоци по зони.

Даглас Тери (Douglas Terry), Марк Пејнтер (Mark Painter), Дејвид Ригл (David Riggle) и Сонгиан Зоу (Songnian Zhou) во 1984 година ја пишуваат првата Unix имплементација за именување на домени, наречена (The Berkeley Internet Name Domain – BIND). BIND е широко застапен, најчесто на Unix системи и претставува доминантен DNS софтвер користен на Интернет. Поради неговиот отворен код и се пософистицираните напади, се откриени многу пропусти кај BIND. Тоа резултира со развој на алтернативни опслужувачи на имиња и надградба на постоечките, така BIND во својата 9-та верзија бил комплетно репрограмиран од почеток.

## Структура на доменскиот именски систем

### Простор за имиња на доменот

Структура на DNS-просторот за имиња.
Доменскиот именски систем (DNS) има дистрибуирана база на податоци која е индексирана според имињата на домените. Секое име на доменот претставува само патека во една голема податочна структура на инвертирано стебло, наречено простор за имиња на доменот.

На сликата е прикажана структурата на Unix датотечен систем. Стеблото има единствен корен на врвот. Во Unix датотечниот систем тој е наречен „root“ директориум и е претставен со симбол (/). DNS овој директориум го нарекува „корен“. Како и датотечните системи DNS стеблото може да се разгранува на поголем број на гранки после јазлите. Висината на стеблото е ограничена на 127 нивоа.

#### Имиња на домени

Секој јазол во стеблото има поле со текст кое може да биде со должина од 63 карактери. За коренот е резервирано поле за текст со нулта должина (null). Целосното име на доменот за било кој јазол во стеблото е низа од полиња со текст од тој јазол до коренот. Имињата на доменот секогаш се читаат од јазолот кон коренот, имињата во патеката се одделуваат со точка.

Доколку полето со името на коренот се појавува во името на доменот на јазолот, името ќе се прикаже како да завршува со точка, тоа всушност е точката која го одделува полето за текст со нулта должина на коренот. Кога единствено се појавува името на коренот се запишува со една точка.

Некои софтвери точката која е на крајот на името ја толкуваат како показател дека се работи за апсолутно име на доменот. Апсолутното име се пишува релативно на коренот и недвосмислено ја означува локацијата на јазолот во хиерархијата. Апсолутното име на доменот уште се нарекува целосно квалификувано име на доменот (FQDN). Наспроти ова имињата кои не завршуваат со точка понекогаш се толкуваат како релативни за одредени имиња на домени не само за коренот – како што се имињата на директориумите без коса линија (/) што се толкуваат како релативни за тековниот директориум.

#### Домени

Одлики на домен.
Доменот претставува подстебло на доменот на просторот со имиња. Името на доменот на доменот е исто како и името на доменот на јазолот на врвот од доменот. На пример, врв на google.com е јазолот со име google.com.

Доменот може да има неколку свои подстебла наречени поддомени. Термините домен и поддомен се користат наизменично. Терминот поддомен е релативен, бидејќи доменот претставува поддомен на друг домен доколку коренот на поддоменот се наоѓа во друг домен.

Наједноставен начин за да се утврди дали доменот е поддомен на друг домен е преку споредување на нивните имиња на домени. На пример доменот mail.google.com мора да е поддомен на google.com, бидејќи mail.google.com завршува со google.com, понатаму и google.com е поддомен на com.

Покрај тоа што кон домените може да се обраќа со релативни термини – како поддомени на други домени, кон домените може да се обраќа и според нивото. Нивото ја определува позицијата на доменот во доменот на просторот со имиња.

* Домените од прво ниво претставуваат деца на коренот.
* Домени од второ ниво претставуваат деца на домените од прво ниво итн.

##### Домени од прво ниво

Оригиналните домени од прво ниво го разделуваат Интернет просторот за имиња на доменот на седум домени: com – комерцијални организации, edu – организации од областа на едукацијата, gov – владини организации, mil – воени организации, net – порано користен од организации кои обезбедувале мрежна инфраструктура, од 1996 година овој домен е отворен за сите комерцијални организации, org – порано бил користен само од некомерцијални организации, но по 1996 година ограничувањата биле отстранети, int – интернационални организации.

Покрај овие домени постоел и друг домен arpa, користен за време кога ARPANET вршела транзиција од табелите за компјутери од мрежата во DNS, но поради проблемите со безбедноста тој бил напуштен.

Поради забрзаната интернационализација на Интернетот, наместо да постојат само основните домени од прво ниво кои ќе ја опишуваат целокупната организациона структура се одлучило да се внесат и географски одредници. На тој начин за сите земји биле резервирани одредници кои ќе одговараат на земјите.

Во 2000 година, организацијата која го одржува доменскиот именски систем (DNS), создала дополнителни 7 домени во прво ниво за посоодветно да се сместат организациите во доменот со имиња. Тоа се: aero, biz, coop, info, museum, name, pro. Во 2005 година биле одобрени и домените jobs и travel. Исто така има и други предлози кои се евалуираат.

### опслужувачи на имиња

Примарна функција на опслужувачот на имиња е да им одговори на клиентите кои бараат информации од DNS. Иако опслужувачите на имиња можат да бидат конфигурирани на различни начини, општоприфатени се два типа на конфигурации на опслужувачи на имиња.

* Авторитативни: опслужувачи кои чуваат записи за зони за една или повеќе DNS зони.
* опслужувачи за кеширање: овозможуваат одговори засновани на серија од записи зачувани на други опслужувачи на имиња или од кеш на одговори добиени од претходни барања.

Првиот тип на опслужувач на имиња е наречен авторитативен опслужувач на имиња бидејќи може да одговори авторитативно кога од него се бара информација за записи во една од неговите зонски податотеки.

Вториот тип на опслужувач на имиња е наречен опслужувач за кеширање бидејќи ги кешира барањата кои ги разрешува во име на клиентите. Повеќето компјутери на Интернет не пребаруваат директно со доставување на барање на авторитативниот опслужувач, наместо тоа испраќаат барање до некој од опслужувачите за кеширање. опслужувачите за кеширање уште се нарекуваат и рекурзивни или разрешувачки опслужувачи на имиња.

опслужувачот на имиња може да биде истовремено и авторитативен и за кеширање, но таквата конфигурација не се смета за безбедна. Кога авторитативниот е и опслужувач за кеширање, авторитативните и надворешните барања се чуваат во кеш. Тоа значи дека доколку злонамерен корисник успее да го измени кешот преку надворешни барања, таквиот корисник ќе биде во можност да ги измени одговорите на барањата кои опслужувачот ги дава за легитимни барања. Ризикот се елиминира со разделување на авторитативната функција од функцијата на разрешување.

#### Авторитативни опслужувачи на имиња

Во повеќето зони за да се обезбеди непреченост на операциите се користат два или повеќе авторитативни опслужувачи. Авторитативниот опслужувач каде се чува главната копија на податоците за таа зона се нарекува примарен (master) опслужувач со имиња. Тој ги вчитува податоците за зоната од локална податотека за зоната која е создадена од администраторот на базата на податоци на DNS.

Секој примарен опслужувач во зоната може да има еден или повеќе од него зависни опслужувачи – секундарни (slave) опслужувачи. Секундарните опслужувачи исто така се авторитативни за таа зона, но тие се ажурираат од примарниот опслужувач со користење на процес на репликација. Најчесто во секоја зона постои само еден примарен опслужувач од кој се ажурираат останатите опслужувачи.

#### опслужувачи за кеширање

опслужувачот за кеширање може да ги разреши барањата на клиентите со два механизми: со проследување понатаму и рекурзија.
Механизмот за проследување понатаму му овозможува на опслужувачот да го проследи понатаму барањето на клиентот до друг опслужувач за кеширање. Со рекурзијата опслужувачот на имиња рекурзивно пребарува друг опслужувач со имиња кој има авторитативни информации за имињата за да ги преземи записите што клиентот ги побарал. Некои опслужувачи можат да бидат конфигурирани да вршат рекурзивна функција за повеќето барања и исто така да извршуваат препраќање на специфични барања.

опслужувачите за кеширање ги зачувуваат резултатите од пребарувањата во меморија, со тоа се зголемува брзината на пронаоѓање на истите записи. Кешираните записи се чуваат определено време во меморијата потоа се ослободуваат.

Кога опслужувачот за кеширање се обидува да го разреши името на компјутерот од мрежата, прво пребарува во својата меморија за најниските нивоа во DNS архитектурата кои можат да го разрешат барањето.

Кога ќе се иницијализира системот, опслужувачот за кеширање нема претходно зачувани информации и затоа мора да се стартува заедно со авторитативните опслужувачи на имиња.

### Разрешувачи

Друга клучна компонента на DNS е разрешувачот за клиенти, негова задача е да ги формулира и испраќа DNS барањата до опслужувачите на имиња. Повеќето разрешувачи се едноставни, можат да се најдат на обичен компјутер или на опслужувачки компјутерски систем кој користи DNS.

Разрешувачите најчесто се конфигурирани со листа од два или три опслужувачи за кеширање и со тоа се осигурува непреченост во функционирањето во случај да не е достапен примарниот опслужувач.

Исто така треба да постојат ограничувања на време, бидејќи можно е разрешувачот да не добил одговор на првото барање, додека на наредното барање со иста содржина да го добие барањето.

Од опслужувачка страна првото барање го остава да чека додека да најде достапен опслужувач, за второто барање успева да пронајде друг опслужувач кој ќе го услужи, во тој случај првото барање останува неодговорено поради долгото време на чекање на опслужувачот).
Од страната на корисникот изгледа како првото барање да не успеало на првиот обид, но на повторен обид се добил одговор.

## DNS во реалниот свет

Функција на разрешувачот во оперативниот систем.
Корисниците најчесто не комуницираат директно преку DNS разрешувач. Наместо со примена на разрешувач, процесот на DNS разрешувањето се одвива транспарентно во клиентските апликации како прелистувачите, клиентите за електронска пошта и други Интернет апликации.
Кога ќе се појави барање за кое е потребно DNS пребарување, ваквите програми испраќаат барање за разрешување до локален DNS разрешувач во оперативниот систем и потоа тој ја раководи потребната комуникација.

DNS разрешувачот во кеш ги има најскоро добиените барања, ако во кешот го содржи одговорот, разрешувачот ќе врати вредност до програмата која го издаде барањето. Ако потребните информации не се наоѓаат во кеш тогаш барањето се проследува до DNS опслужувач.

Најчесто семрежниот услужник до кој се поврзува корисникот го одредува DNS опслужувачот, во случаи каде компаниите користат свој DNS опслужувач тогаш разрешувачот се обраќа до него.

Резултатите од опслужувачот пристигаат до разрешувачот (доколку е добиен одговор), разрешувачот потоа го кешира барањето и го предава резултатот до програмата која го издаде барањето.

## Наводи