В предходната глава научихте за конвертирането на имена в TCP/IP адреси. Най-важната стъпка при конвертирането на хост имена в IP адреси е използването на DNS. DNS е начин за конвертиране на лесни за употреба и значещи нещо имена в IP адреси. Понеже в интернет има милиони сайтове, управляването на единен списък на имена към IP адреси е нериалистично. DNS системата е проектирана да разпредели и координира натоварването по конвертиране на имената.
Две важни задачи които DNS решава са:
- Конвертиране на хост имена от интернет в IP адреси за локални хостове
- Конвертиране на хост имена от локалната мрежа в IP адреси за останалите хостове в интернет
Какво е DNS?
Както научихте в глава 11, Domain Name System (DNS) е разпределена база даннина хост имена и IP адреси в интернет. Ако всички хостове в интернет бяха в една голяма база данни, тя щеше да бъде огромна и неефективна. Но в началото на Интернет първоначалната идея е била съхранението на всички имена на хостове и техните IP адресида бъде в един единствен файл. В ранните дни на интернет хост имената на сайтовете свързани в интернет и техните IP адреси са били пазени в един единствен файл наречен HOSTS.TXT. Този файле бил поддържан от Stanford Research Institute Network Information Center (SRI-NIC). Когато се добавял нов хост към разрастващата се мрежа,се добавял и нов прост запис в HOSTS.TXT с името и адреса на новия хост. Ако вие сте били един от хостовете в интернет, свързвате се със сървъра на SRI-NIC и сваляте последната версия на HOSTS.TXT файла. Когото искате да се свържите към друг хост, можете да ползвате името му и TCP/IP ще прегледа HOSTS.TXT, за да преведе името в IP адрес. HOSTS.TXT файла бил променян постоянно и за да бъде вашияфайл актуален е трябвало да си го сваляте периодично. Но с разрастването на интернет този файл станал неуправляем, броя на промените във файла и броя на хостовете които трябвало да свалят файла растял прогресивно. Тази система се превърнала в тясно място в процеса на конвертиране на имената. През Ноември 1987, DNS бива представен като решение на проблема, DNS е описан в RFC 1034 и 1035.
DNS в интернет
Вместо да пази всички хост и мена и IP адреси в един неуправляем файл, DNS разпределя задачата в интернет. Всички хост имена в интернет са разделени в различни домейни или категории. Домейните от най високо ниво са категории на хост имена - например, комерсиални организации са в .com домейна, образователни организации в .edu домейн. Тези домейни от най-високо ниво са в последствие разделени в домейни от второ ниво и т.н. Примери за домейни от второ ниво са vmrejata.info и abv.bg.
Всеки домейн от най-високото ниво управлява база данни на домейните от второ ниво. Домейните от второ ниво управляват следващото ниво и т.н. Лесен начин да разберете какво представлява интернет е да погледнете карта на пространството от домейн имена. Пространството от домейн имена е термин ползван за да опредили как е разделен Интернет. Корена на това пространство е root, той е представен от точка ".". Илюстрацията по долу представя част от интернет домейн пространството. Root е на върха в дървото от домейни и е представен от точка, домейните от най-високо ниво съдържат база данни, които сочат към DNS сървърите от следващото ниво. Например .com DNS сървъра съдържа база данни, която казва къде се намират всички .com DNS сървъри. DNS сървъра vmrejata съдържа база данни за имена на хостове и услуги, за които да се прдага конвертиране. Например може да съдържа записи, www, ftp, links и други имена за които DNS трябва да предложи конвертиране.

Конвертиране на имена с DNS
Когато TCP/IP ползва DND като метод за конвертиране, хоста който се опитва да получи IP адрес по дадено име се нарича resolver. Resolver-a изпраща съобщение до DNS сървър търсейки помощ. Пакета казва "Хей DNS сървър, можеш ли да ми кажеш IP адреса на www.vmrejata.info?".
Запитване към DNS сървър
Когато администратор конфигурира IP адрес на хост, наред с другите параметри той конфигурира и DNS сървър. DNS сървъра може да е в същата мрежа или може да е при интернет доставчика. Когато хост има нужда от превод на име, той изпраща заявка към въведения DNS сървър, този сървър преглежда своята база данни за да види дали може да отговори на въпроса без външна помощ. Ако DNS сървъра може да отговори на въпроса, той ще изпрати отговора на resolver-а и конвертирането завършва.
Ако DNS сървъра не знае отговора, той ще има нужда от външна помощ и ще попита root сървър за имена. Има 13 root сървъра за имена, те са стратегически разположени и имат IP адресите на сървърите с домейн имена от най-високо ниво. Всеки DNS сървър има IP адресите на тези 13 root сървъра автоматично инсталирани в локалните си база данни. Затова всеки DNS сървър може да пита всеки от тези 13 root сървъра за конвертиране на търсеното име.
Запитване сървър за имена
След като DNS сървъра има адреса на root сървъра той може да започне процеса за конвертиране на име. Първото което ще направи DNS сървър от малка мрежа за която никой нищо не знае е да попита големия и мощен root сървър с имена дали той знае IP адреса на www.vmrejata.info.
Root сървъра има IP адреси на домейн сървърите от най-високо ниво и root сървъра отговаря на нашия малък DNS сървър казвайки. "Не познавам www.vmrejata,info но имам адреса на .info" и root сървъра изпраща най-добрата информация която има IP адреса на .info
Сега малкия DNS сървър има адреса на .info той взима информацията и я кешира. Малкия DNS сървър ще пази толкова дълго този адрес в паметта си колкото му е казано от DNS сървъра изпрати му информацията. DNS съръра кешира информацията, защото скоро може и друг хост да попита за конвертиране на URL в домейн .info, като има кеширан адреса DNS сървъра няма да има нужда да притеснява root сървъра отново.
Ползвайки получения адрес DNS сървъра изпраща запитване към .info домейн сървъра и пита за превод на www.vmrejata.info. Сървърът .info няма IP адреса на www.vmrejata.info но има IP адреса на vmrejta.info. Сървърът .info изпраща отговор на DNS сървъра и казва, "Незнам IP адреса на www.vmrejata.info но знам IP адреса на vmrejata.info".
Когато DNS сървъра получи отговор от .info сървъра, той кешира IP адреса на vmrejata.info и позле изпраща запитване до vmrejata.info питайки за IP адреса на www.vmrejata.info.
DNS сървъра при vmrejata.info знае адреса на www.vmrejata.info и го изпраща на DNS сървъра.
Приключване на конвертирането
Сега DNS сървъра има IP адреса на www.vmrejata.info, кешира го и изпраща пакет с IP адреса до resolver-a. Сега resolver-a има IP адреса и изпраща HTTP искане до IP адреса изпратен му от DNS сървъра.
Със всичките тези парчета кеширана информация, DNS сървъра има част от работата (или цялата рабора) ако някой друг resolver го попита за нещо в .info, vmrejata.info или за www.vmrejata.info.
Какво са Recursive и Iterative запитванията
След като бъде изпратено запитване от resolver към DNS сървър, DNS сървъра отговаря с IP адреса или със съобщение за грешка. DNS сървъра скрива цялата работа която трябва да се свърши по време на процеса на конвертиране на URL името. Запитването изпратено от resolver-a до DNS сървъра се нарича recursive запитване. Recursive запитване означава, "Дай ми отговор или ми дай грешка, но не ми давай нищо по средата."
След това DNS сървъра пита други сървъри да му помогнат при конвертирането, запитването което DNS сървър изпраща до друг DNS сървър се нарича iterative запитване. Iterative запитването пита за най-добрия възможен отговор, "Ако нямаш отговор на целия въпрос, моля дай ми нещо с което можеш да помогнеш." Iterative запитванията може да се повторят няколко пъти докато DNS сървъра продължава да пита останалите сървъри за имена, "Помогни ми до колкото можеш.". Затова и другите сървъри отговарят с най-доброто, което имат. Iterative запитванията са скрити от resolvera, той иска отговор но не се интересува колко сървъра помагат при конвертиране на името.
Поддържане на базата данни
Основна задача на DNS сървъра е до осигурява конвертиране за ресолверите конфигурирани да ползват този DNS сървър. Друга важна задача е да поддържа база данни на хост имена и IP адреси. После когато към DNS сървъра бъде отправено запитване, той гледа първо в своята база данни за да установи дали отговора го има там. Администратора на DNS сървър трябва да напише хост имена и IP адреси в базата данни, която DNS сървъра ползва за да изпълнява заявки.
Например администратора на DNS сървъра vmrejata.info, прави запис в базата данни на този сървър и казва, че www.vmrejata.info има IP адрес 89.252.241.24. Когато DNS сървъра vmrejata.info бъде запитан за IP адреса на www.vmrejata.info, той ще отговори с правилния адрес.
Сървъра .info има запис в неговата база данни, който посочва за всяка заявка нещо.vmrejata.info DNS сървъра vmrejata.info. DNS сървъра vmrejata.info има информацията нужна да даде отговор на (всичко което администратора поиска).vmrejata.info. Администратора при vmrejata.info е въвел тези записи в DNS сървъра си, които се съхраняват като зонов файл. Администратора управлява зоната и по-точно зоновия файл на vmrejata.info. Зоновия файл съдържа имена и IP адреси за тази част на пространството от домейн имена. Администратора поставя записите за vmrejata.info в зонов файл наречен vmrejata.info.dns.
DNS е услуга която може да се изпълнява на различни платформи и операсионни системи. Базата данни която всеки DNS сървър ползва се състои от няколко файла. Повечето DNS версии и изпълнения следват стандарт наречен Berkeley Internet Name Domain (BIND) изпълнение. BIND изпълнението описва какви файлове са нужни и каква информация трябва да включват записите в DNS базата.
Всеки DNS администратор управлява DNS база данни. Тези база данни са свързани в интернет, за да образуват мрежа от DNS база данни. Тогава DNS сървърите работят заедно за да осигурят конвертиране на име-към-IP-адрес и IP-адрес-към-име. Понеже всеки администратор управлява собствена база данни и всички база данни работят заедно, успешното DNS конвертиране е резултат на общ труд.
Поддържане на DNS сървър
DNS администратора настойва и управява DNS база данни. Софтуер за DNS сървър може да върви на няколко операционни системи. В зависимост от избраната операционна система, метода за администриране се различава малко, но основната концепция е една и съща. Сървър върху които се изпълнява DNS услуга се нарича name server, има три типа name сървъри.
Основен нейм сървър (Primary Name Server)
Primary Name Server-a съдържа master DNS база данни (това е актуална DNS база данни съдържаща DNS записи, където администратора може да коригира записите). Администратора прави всички промени в тази master DNS база данни. Primary name сървъра съхранева копие за четене и писане на master DNS базата данни. За да добави или изтрие записи от DNS базата данни администратора влиза в Primary Name сървъра и променя master DNS базата данни.
Със само едно копие на DNS базата данни върху основния нейм сървър процеса на конвертиране на имена ще си върви чудесно, все пак администратора има опция да асистира на основния нейм сървър като настори secondary name server.
Secondary Name Server (Вторичен нейм сървър)
Вторичния нейм сървър съхранява копие на DNS базата данни. Този сървър осигурява конвертиране на името по същия начин по който го прави и основния сървър. Вторичния сървър помага на основния сървър, администраторите поставят вторичен DNS сървър по следните причини:
- Отказо устойчивост - Ако един от сървърите откаже или не е на разположение, другия сървър ще бъде на разположение да изпълнява заявките за конвертиране на имена.
- Балансиране на натоварването - Ако сървър бъде претоварен от заявки, втори сървър ще намали натоварването.
- Отдалечено конвертиране - Ако е нужно да се конвертират имена в IP адреси в отдаечено място, там може да въде инсталиран вторичен DNS сървър, за да може заявките от resolver-и да се изпълняват на място и да не се генерира допълнителен WAN трафик.
DNS Zone Transfer
Вторичния нейм сървър получава копие на основната DNS база данни от главния нейм сървър. Администратора не прави корекции в базата данни на вторичния нейм сървър, всички промени се правят само на основния нейм сървър. Вторичния сървър съхранява копие само за четене на DNS базата данни. Когато бъде направена промяна на основния нейм сървър, копие на базата (зонов файл) се изпраща на вторичния нейм сървър.
Трансфера на базата се нарича zone transfer. Zone transfer-а премества базата от основния DNS сървър на вторичния DNS сървър. Когато вторичен нейм сървър дойде на линия, той автоматично започва zone transfer. Администратора също може да настрои zone transfer от един вторичен нейм сървър към друг вторичен нейм сървър. Първия трансфер трябва да бъде от основния DNS сървър към вторичния, после вторичния препредава DNS базата данни.
Илюстрацията по-долу е пример за трансфер на DNS базата данни:

Кеш сървър (Caching-only Server)
Кеш сървъра не съдържа база данни. Когато сървър за кеш се появи на линия, той не знае нищо. Когато първата заявка за конвертиране бъде отправена към този сървър, кеш сървъра трябва да започне процеса на конвертиране от root сървъра и да премине по отделните нива. След като конвертира URL името, той вече има малко информация кеширана в паметта за следващата заявка. Кеш сървъра бързо учи и кешира най-често търсените имена. Кеш сървъра изисква малко за настройване и почти никаква поддръжка. Когато DNS сървър бъде първоначално инсталиран, той е по същество кеш сървър докато не му бъде добавена зоновата база данни.
Кеш сървърите са отличен избор за отдалечени офиси свързани с WAN връзки. Понеже няма зонов трансфер, когато кеш сървъра се появи на линия няма и първоначално натоварване на честотната лента.
Видове записи в DNS
DNS базата данни е колекция от записи. Има няколко типа записи които могат да бъдат включени в DNS базата данни. Някои от често срещаните записи са:
- Start Of Authority (SOA) запис
- A запис
- CNAME запис
- NS запис
- PTR запис
- MX запис
Start Of Authority (SOA) запис
DNS базата данни започва със запис наречен (SOA). Има само по един SOA запис във всяка зонова база данни. Този запис описва зоната в пространството от домейн имена, за които тази база данни е отговорна.
А запис
А записа е още наричан хост запис. Това е най-често срещания вид запис в DNS базата данни. А записа съдържа хост имена и IP адреси.
CNAME запис
Термина CNAME означава Canonical name (канонично име), доста интересно е наименуван. Този запис е просто кодово име за A запис. CNAME са по-рости алтернативни имена, записани в DNS базата данни. Тези записи предлагат различен начин за описване на хост записите, които вече са в базата данни.
Например нека кажем, че администратор иска хората да могат да получат конвертиране на site.vmrejata.info и www.vmrejata.info. И двете имат един и същ IP адрес. В DNS базата данни вече има A запис за www.vmrejata.info, така че администратора просто поставя CNAME запис в базата за site който посочва www А записа.
NS запис
NS записа се отнася за друг нейм сървър, който се ползва от този нейм сървър. NS запис съществува за всеки нейм сървър, който обслужва домейн. NS записа включва IP адреса на нейм сървъра.
PTR запис
PTR записа служи за конвертиране на искане за IP адрес не за хост име. Ако пристигне искане което казва, "Ето IP адреса, какво е името на хоста?" PTR записа ще осигури отговор на този въпрос. Всеки път когато се въвежда А запис в базата данни би трябвало да се въвежда и PTR запис.
Някои приложения са написани така, че да искат хост име (приложението знае IP адреса, но иска хост името). Заявката която тези приложения изпращат към DNS сървъра се нарича reverse или inverse (обратна) заявка. DNS сървъра преглежда PTR записа и отговаря с хост името, което отговаря на подадения IP адрес. Тези PTR записи са в специална зона наречена IN-ADDR.ARPA зона. Когато пристигне обърната заявка DNS сървъра може да погледне в IN-ADDR.ARPA зоната за по-бърз отговор.
MX запис
MX записа се отнася за Mail eXchange запис. Този запис има IP адреса на сървъра където трябва да се достави e-mail съобщение. Например, когато e-mail е изпратен до administrator(at)vmrejata.info, DNS сървъра при vmrejata е запитан за e-mail сървъра при vmrejata.info, DNS сървъра поглежда в MX запис за vmrejata.info и връща IP адреса на e-mail сървъра където трябва да се изпрати писмото.
Други типове записи
Администраторите могат да ползват и други записи за техните DNS база данни. Пример за такива записи са WKS записи, които сочат към WellKnown Services (добре познати услуги) или RP запис, които индикира Responsible Person (отговорното лице) за базата данни. Най-използваните записи все пак са тези които разгледахме с тази глава.
| Глава 11 Превеждане на имената - Name Resolution< Предишна | Следваща >Глава 13 Dynamic DNS (DDNS) |
|---|

