DNS

Համակարգիչների իդենտիֆիկացման համար TCP/IP ցանցերում ապարատային և ծրագրային ապահովումը հիմնվում է IP-հասցեի վրա։ Սակայն օգտվողները սովորաբար նախընտրում են աշխատել համակարգիչների ավելի հարմարավետ՝ սիմվոլային, անուններով։ Ցանցային ինտերֆեյսների սիմվոլային իդենտիֆիկատորները բաղադրիչ ցանցի սահմաններում կառուցվում են ըստ հիերարխիկ սկզբունքի։ Ամբողջական սիմվոլային անվանումով բաղադրիչները IP հասցեում բաժանվում են կետերով և համարակալվում են հետևյալ կարգով՝ սկզբից հասարակ անուն, հետո խմբի անուն (օրինակ կազմակերպության անունը), հետո ավելի խոշոր խմբի (դոմենի) անունը, և այսպես շարունակ մինչև ամենաբարձր մակարդակի անունը։ Դոմենային և IP հասցեների միջև չկա ոչ մի ֆունկցիոնալ կախվածություն, այդ պատճառով համապատասխանության հաստատման միակ միջոցը՝ աղյուսակներն են։ TCP/IP ցանցերում օգտագործվում է հատուկ դոմենային անունների համակարգ, որը այդ համապատասխանությունը կատարում է ադմինիստրատորների կողմից ստեղծված համապատասխանության աղյուսակների հիման վրա։
Այդ պատճառով դոմենային անունները անվանում են նաև DNS անուններ։
DNS (անգլ.՝  Domain Name System – դոմենային անունների համակարգ) –համակարգչային տարածված համակարգ է դոմեների մասին տեղեկություններ ստանալու համար։ Հաճախ օգտագործվում է հոստի (համակարգիչ կամ սարքավորում) IP հասցեն ստանալու համար, դոմենում արձանագրությունների համար սպասարկվող հանգույցների փոստի երթուղավոման (մարշուտիզացիայի) մասին ինֆորմացիա ստանալու (SRV-գրառում)։
DNS բաշխված տվյալների բազան աջակցվում է DNS-սերվերների հիերարխիկ կառուցվածքի միջոցով, որոնք փոխազդում են կոնկրետ արձանագրությամբ։
DNS-ի հիմք են հանդիսանում դոմենային անունների և տիրույթների հիեարարխիկ կառուցվածքի մասին պատկերացումները։ Յուրաքանչյուր սերվեր, որը պատասխանատու է անվան համար, կարող է դոմենի մնացած մասի համար պատասխանատվությունը հանձնել լիազորել մեկ այլ սերվերի (ադմինիստրատորական տեսանկյունից՝ այլ անձի կամ կազմակերպության), ինչը թույլ է տալիս ապահովել ինֆորմացիայի արդիակնությունը տարբեր կազմակերպությունների (անձանց) սերվերների վրա, որոնք պատասխանատու են դոմենային անվան միայն իրենց մասի համար։
Սկսած 2010 թվականից DNS համակարգի մեջ ներդրվել է ծրագիր փոխանցվող ինֆորմացիայի անբողջականությունը ստուգելու համար, որը կոչվում է DNS Security Extensions (DNSSEC)։ Տվյալները չեն թվայնացվում, բայց նրանց հուսալիությունը ստուգվում է գաղտնաբանության մեթոդներով։
DNS սերվերը աղյուսակներից բացի ունի նաև հղումներ իր ենթադոմենների DNS սերվերներին։ Փաստորեն այդ հղումների միջոցով էլ (հղումները իրենցից ներկայացնում են սերվերների թվային՝ IP հասցեները, իսկ արմատի հասցեն հայտնի է և գրված է ինչ-որ տեղ) ձևավորվում է ամբողջական DNS-ը։
Գոյություն ունի DNS-ի երկու տարբերակ.

Կենտրոնացված,
Տեղաբաշխված։


== DNS հարցումների տեսակներ ==


=== Ուղիղ հարցում ===
Ուղիղ (forward) հարցում- Հաճախորդը դիմում է արմատային DNS սերվերին՝ նշելով ամբողջ դոմեն հասցեն։ Արմատային DNS սերվերը ցույց է տալիս հաջորդ սերվերի հասցեն։ Հաճախորդը շարունակում է հարցումը այդ սերվերից, որը վերադարձնում է հաջորդ սերվերի հասցեն և այսպես շարունակ մինչև գտնվի այն DNS սերվերը, որում պահվում է համապատասխան թվային հասցեն։ Եվ այդ սերվերն էլ ուղարկում է վերջնական պատասխանը։


=== Հետադարձ հարցում ===
Հետադարձ (reverse) հարցում- DNS-ը առաջին հերթին օգտագործվում է IP հասցեներում սիմվոլային անունների փոխակերպման համար, բայց կարող է իրականացնել նաև հակառակ գործընթացը։ DNS գրառման հետ կարող են տեղակայված լինել նաև տարբեր տվյալներ, այդ թվում ինչ-որ սիմվոլային անուն։ Գոյություն ունի հատուկ դոմեն՝ in-addr.arpa, որում գրառումները օգտագործվում են IP հասցեները սիմվոլային անունների փոխարինելու համար։ Օրինակ 11.22.33.44 հասցեի համար DNS անունը ստանալու համար անհրաժեշտ է դիմել DNS սերվերին 44.33.22.11.in-addr.arpa հարցմամբ, և այն մեզ կվերադարձնի համապատասխան սիմվոլային անունը։ Գրառման հակադարձ հերթականությունը բացատրվում է նրանով, որ IP հասցեներում ավագ բիթերը տեղակայված են սկզբում, իսկ DNS անուններում ավագ մասերը տեղակայված են վերջում։


=== Ռեկուրսիվ հարցում ===
Հաճախորդը հարցում է կատարում լոկալ DNS սերվերին։ Եթե պահանջվող հասցեն և հաճախորդը գտնվում են նույն ենթադոմենում կամ տվյալ սերվերի հիշողությունում (մեկ այլ հարցումից պահպանվել է այդ ինֆորմացիան), լոկալ սերվերը միանգամից վերադարձնում է համապատասխան հասցեն։ Հակառակ դեպքում, դիմում է արմատային սերվերին։ Այնուհետև ընթացքը նույնն է, ինչ ոչ ռեկուրսիվ դեպքում։


=== Ինտերատիվ հարցում ===
Ինտերատիվ հարցում- թույլ է տալիս ռեկուրսիայի իրականացումը հաճախորդի կողմից։


== DNS-ի հիմնական բնութագրեր ==
DNS-ը ունի հետևյալ բնութագրերը՝

Ադմինիստրացիայի բաշխվածությունը։ Հիերարխիկ կառուցվածքի տարբեր մասերի համար պատասխանատվություն են կրում տարբեր մարդիկ կամ կազմակերպություններ։
Ինֆորմացիայի պահպանման բաշխվածությունը։ Ցանցի յուրաքանչյուր հանգույցը պարտադիր պետք է պահպանի այն տվյալներըը, որոնք մտնում են իր պատասխանատվության տիրույթում և (հնարավոր է) DNS-սերվերների արմատական հասցեները։
Ինֆորմացիայի քեյշավորում։ Հանգույցը կարող է պահպանել իր պատասխանատվության տիրույթում չգնվող տվյալների որոշակի քանակություն, ցանցի ծանրաբեռնվածությունը նվազեցնելու նպատակով։
Հիերարխիկ կառուցվածքը, որում բոլոր հանգույցները միացված են ծառով, և յուրաքանչյուր հանգույցը կարող է ինքնուրույն որոշել իրենից ներքև գտնվող hանգույցների աշխատանքը կամ նրանց ուղարկել այլ հանգույցների։
Քեյշավորումը։ Իր հանգույցների պահպանման և սպասարկման համար պատասխանատու են մի քանի սերվերներ, որոնք առանձնացված են ինչպես ֆիզիկապես, այնպես էլ տրամաբանորեն, որը ապահովում է տվյալների անվտանգությունը և աշխատանքի շարունակումը հանգույցներից մեկի ձախողման դեպքում։DNS-ը կարևոր է ինտերնետի աշխատանքի համար, հանգույցին միանալու համար անհրաժեշտ է ինֆորմացիա ունենալ նրա IP հասցեի մասին, իսկ մարդկանց համար շատ ավելի հեշտ է մտապահել տառային (սովորաբար իմաստալի) հասցեները, քան IP հասցեի թվերի հաջորդականությունը։ Հաճախակի դա թույլ է տալիս օգտագործել վիրտուալ սերվերներ, օրինակ HTTP սերվերները, նրանց տարանջատելով իրենց հարցման անունով։ Սկզբնական շրջանում դոմենների և IP հասցեների միջև փոխարկումները իրականացվել են հատուկ տեքստային ֆայլի՝ hosts միջոցով, որը ուներ կենտրոնական կառուցվածք և ավտոմատ ուղարկվում էր այդ ցանցում գտնվող բոլոր մեքենաներին։ Ցանցերի զարգացմանը զուգընթաց օգտակար և ավտոմատացված մեխանիզմի անհրաժեշտություն ծագեց, որն էլ հենց հանդիսացավ DNS-ը։


== DNS-ի գրառումներ ==
DNS-ի գրառումները, կամ ռեսուրսային գրառումները (անգլ.. Resource Records, RR)-DNS-ում ինֆորմացիայի պահպանման և փոխանցման միավորները։ Յուրաքանչյուր ռեսուրսային գրառում կազմված է հետևյալ դաշտերից՝

անուն (NAME)- դոմենային անուն, որին կապված է կամ որին պատկանում է տվյալ ռեսուրսային գրառումը,
TTL (Time To Live)-համապատասխան DNS սերվերի կեշում տվյալ ռեսուրսային գրառման պահպանման թույլատրելի ժամանակահատվածը,
ռեսուրսային գրառման տեսակը (TYPE)- որոշում է տվյալ ռեսուրսային գրառման ձևաչափը և նպատակը,
ռեսուրսային գրառման դասը (CLASS)- տեսականորեն համարվում է, որ DNS-ը կարող է օգտագործվել, ոչ միայն TCP/IP-ի, այլ նաև ցանցերի այլ տեսակների հետ, դասի դաշտում գրված կոդով որոշվում է ցանցի տեսակը,
տվյալների դաշտի երկարությունը (RDLEN),
տվյալների դաշտը, որի ձևաչափը և պարունակությունը կախված է գրառման տեսակից։


== DNS գրառումների կարևորագույն տեսակներ ==
A գրառում (address record) կամ հասցեի գրառումը կապում է հոստի հասցեն IP հասցեի հետ։
AAAA գրառում (IPv6 address record) կապում է հոստի անունը IPv6 արձանագրության հասցեին։
CNAME գրառում (canonical name record) կամ անվան կանոնական գրառում (ծածկանուն) օգտագործվում է այլ անվան վրա վերաուղորդվելու համար։
MX գրառում (mail exchange) ցույց է տալիս սերվերներ դոմենի փոստի ուղարկման համար։
NS գրառում (name server) ցույց տալիս DNS սերվեր տվյալ դոմենի համար։
PTR գրառում (pointer) հոստի IP-ն կապում է նրա կանոնական անվան հետ։
SOA գրառում (Start of Authority) ցույց է տալիս, թե որ սերվերում է պահպանվում տվյալ դոմենի մասին ինֆորմացիան։
SRV գրառում (server selection) մատնանշում է սերվերներ ծառայությունների համար, մասնավորաբար, օգտագործվում է Jabber-ի և Active Directory-ի համար։


== Ծանոթագրություններ ==


== Արտաքին հղումներ ==
DNS Resources Directory (անգլ.)
Ռեսուրսներ, նվիրված DNS & BIND Archived 2006-09-02 at the Wayback Machine. (անգլ.)
CircleID DNS ընկերություն (անգլ.)
DNS (DNSSEC) Անվտանգության խնդիրներ (անգլ.)
IETF Ընդհանուր զարգացման  DNS (DNSEXT) Աշխատանքային հանձնաժողով (անգլ.)
DNS-սերվերների կայք (անգլ.)
DNS-դոմենի գրառումների դիտարկում
DNS վեբ գործիքներ,  dmoz.org կայքի կատալոգ Archived 2018-11-13 at the Wayback Machine. (անգլ.)