Documente Academic
Documente Profesional
Documente Cultură
O problemă în a face disponibile resursele într-o rețea este crearea unei căi ușoare de acces la acestea.
Pentru rețele de mică dimensiune poate fi ușor de reținut, sau poate fi notat locul în care se găsesc resursele,
dar aceasta nu mai este o soluție pentru rețele în dezvoltare sau de dimensiuni mari. Problema devine tot mai
complexă pe măsură ce crește numărul resurselor care devin disponibile în afara rețelelor individuale.
Problema o constituie atât multitudinea de rețele, cât și multitudinea de platforme și variante hardware pe
care se găsesc aceste resurse. Pentru a veni în întâmpinarea acestei situații, metodele de numire și manevrare
a directoarelor au fost divizate pentru a oferi o metodă uniformă de obținere a informațiilor necesare pentru a
accesa o resursă de rețea. Două dintre aceste metode sunt:
Domain Name System (DNS)
Dynamic Domain Name System (DDNS)
Înainte de a analiza un sistem de nume specific, vom discuta despre acțiunea lor în general. Astfel vom
înțelege de ce aceste sisteme sunt importante și conceptele care stau la baza tuturor sistemelor de numire,
fără a presupune o implementare anume. Vom discuta pornind de la o privire de ansamblu asupra sistemelor
de nume și vom vedea de ce au fost create. Apoi vom parcurge principalele funcții ale unui sistem de nume:
spațiul numelor, înregistrarea numelui și rezoluția numelui. Apoi vom vedea cum funcționează spațiul
numelor și arhitecturile, ceea ce se află în spatele înregistrării numelui și al administrării și, în final, tehnici
de rezoluție a numelui și elemente practice ale procesului de rezoluție.
9.1.1. Nume simbolice pentru adresare
Pentru un computer nu este deloc o problemă să asocieze un număr pentru fiecare dispozitiv din rețea, și apoi
să utilizeze acest număr pentru a schimba informații. Computerul nu are nimic împotrivă să îi asociezi un
număr lui (de exemplu 123.45.67.89) și tuturor dispozitivelor din rețea, apoi să primească o comandă de
felul “transmite acest fișier dispozitivului 135.79.24.68.”. Totuși, pentru utilizatorii umani acest mod de
adresare este de neutilizat ținând seama de faptul că aceste numere nu au nici o semnificație. Omul preferă să
spună “trimite acest fișier computerului lui Ion”. Acesta este motivul care a dus la dezvoltarea sistemelor de
nume. Aceste tehnologii permit computerelor dintr-o rețea să primească atât o adresă numerică
convențională, cât și un nume mult mai prietenos, citibil. Acest nume este compus din litere, cifre și alte
simboluri speciale, și este numit nume simbolic. El poate fi utilizat ca o formă alternativă de adresare a
dispozitivului. Sistemul de nume dispune de funcțiile necesare administrării sale, incluzând măsuri de
asigurare a unicității numelui, de translatare a numelui în număr, de administrare a listelor de nume și
numere.
Ceea ce este interesant în ceea ce privește existența sistemelor de nume este faptul că sunt foarte
importante pentru rețele, dar nu sunt necesare pentru ca o rețea să opereze. Aceasta deoarece computerele au
nevoie doar de o schemă numerică de adresare, nu de nume asociate lor. Computerele și rețeaua vor lucra,
dar va fi mult mai greu factorului uman să le utilizeze.
Să analizăm un exemplu care să ilustraze importanța sistemului de nume pentru utilizatorul uman. Dacă
presupunem că a apărut o disfuncționalitate în sistemul de nume (nu funcționează o parte din Domain Name
System (DNS)) care furnizează serviciul de nume în Internet. Tehnic vorbind, DNS nu este necesar pentru
Internet, deoarece toate comunicațiile utilizează adresarea IP. Aceasta înseamnă că, deși ți se pare normal să
accesezi site-ul CNN ca un site web www.cnn.com, poți utiliza și adresa IP 64.236.16.20 dacă DNS nu
funcționează. Problema care apare este aceea că probabil nu știi care este adresa IP a site-ului web CNN, așa
cum nu o știu majoritatea celor care accesează site-ul. Este posibil să dorești informații nu numai de pe site-
ul CNN, dar și de pe alte site-uri. Apare dificultatea reținerii adreselor numerice chiar și pentru un număr
mic din imensul număr de site-uri din Internet. De fiecare dată când vei dori să accesezi o resursă va trebui
să cauți personal (manual) adresa sa, așa cum se vede în Figura 9.1.
Importanța sistemului de nume depinde de caracteristicile rețelei în care este utilizat. Principalele trei
motive care determină utilizarea unui sistem de nume sunt:
- Dimensiunea rețelei. Dacă este vorba despre o rețea mică, cu doar câteva computere, îți poți aminti
adresele lor și le poți folosi, chiar dacă acest lucru nu este ideal. În teorie, o rețea de domiciliu cu două-trei
computere nu are nevoie de un sistem de nume. Acesta devine esențial pentru mii de dispozitive.
- Complexitatea și mărimea adresei. Cu cât este mai complexă schema de adresare, sau cu cât sunt mai
extinse numerele utilizat, cu atât devin numerele mai greu de reținut.
- Priceperea utilizatorului. La începuturile rețelisticii era un număr mic de ingineri bine pregătiți și aceștia
pur și simplu memorau numerele mașinilor cu care lucrau zilnic. În zilele noastre cu milioane de utilizatori
profani, nu este rezonabil să presupui că aceștia vor reține adrese de dispozitive.
Privind aceste trei motive se poate observa că tendința în rețele este de a crește importanța sistemelor
de nume. Rețelele, fie că sunt private sau publice, devin tot mai întinse, apar tot mai mulți utilizatori, inclusiv
persoane fără o pregătire tehnică. De asemenea, există tendința de a trece de la adrese mici la altele mai mari.
Cel mai bun exemplu îl constituie tendința de evoluție a protocolului Internet. Pe cât de important este DNS
pentru adresele de 32 de biți din Ipv4, cu atât mai mult va fi important atunci când vor fi utilizate adresele de
128 de biți din Ipv6.
Înregistrarea numelui
Înregistrarea numelui este utilizată pentru a introduce nume individuale într-o bază de date DNS
distribuită. DNS utilizează un aranjament ierarhizat al autorităţii, asociat spaţiului ierarhizat al numelor. O
autoritate centrală determină întreaga structură a spaţiului numelor şi administrează înregistrarea numelor la
nivel înalt. Autoritatea este apoi delegată la diferite organizaţii pentru a administra diferite părţi ale spaţiului
numelor. Procesul de înregistrare, problemele şi conflictele sunt controlate de către un set universal de
politici.
Rezoluţia numelui
DNS utilizează un mecanism de rezoluţie a numelui puternic, distribuit, de tip client-server. Procesul
de rezoluţie este implementat utilizând două elemente software de bază, care joacă rolul de serever şi client,
numite servere şi name resolvers.
Serverele de nume
Serverele de nume DNS sunt programe speciale care rulează pe servere hardware care sunt esenţa
DNS. Serverele sunt menţinute de organizaţii care au un control administrativ asupra unor părţi din spaţiul
numelor şi conţin înregistrări de resurse (resource records) care descriu nume, adrese şi alte caracteristici ale
acelor porţiuni ale spaţiului numelor. Ca urmare, serverele sunt organizate într-o ierarhie analoagă celei a
spaţiului numelor. Principala sarcină a serverelor de nume este de a recepţiona cereri pentru rezoluţia
numelor şi de a răspunde cu datele cerute unei baze de date, sau cu numele unui alt server de nume care va
conduce către informaţia cerută. Serverele de nume sunt responsabile şi de datele din cache sau alte sarcini
administrative care asigură o operare eficientă a sistemului.
Rezolvarea numelui
Programele de rezolvare a numelui (name resolvers) sunt în mod uzual clienţi în procesul de rezoluţie a
numelui. Când un utilizator face referinţă la un nume într-o aplicaţie de reţea, numele este pasat resolverului
care va înainta o cerere către server. În funcţie de configurare, pot fi necesare mai multe cereri şi vor fi
combinate mai multe procese de rezoluţie diferite pentru a găsi informaţia dorită.
Nu există termen specific pentru domenii care nu sunt frunze. Uneori acestea sunt numite noduri de
interior, arătând că se află în mijlocul structurii. Un nod este termen generic pentru un obiect dintr-o
topologie sau structură. În DNS fiecare domeniu este un nod, care poate fi fie de interior care conţine
domenii sau/şi obiecte adiţionale, fie frunză fiind un nume de dispozitiv.
- Domenii de nivel înalt (Top-Level Domains, TDLs): Sunt domenii de pe nivelul cel mai de sus, direct
conectate la rădăcină. Sunt numite uneori ca domenii de prim nivel (first-level domains).
- Domenii de nivel secund (Second-Level Domains): Sunt domenii localizate imediat sub domeniile de vîrf.
- Subdomenii: În anumite contexte ele reprezintă domenii localizate direct sub domeniile de nivel secund.
Figura 9.7: Arborele spațiului numelor DNS și terminologia folosită
În figura 9.7 este ilustrat arborele DNS. Vîrful spaţiului numelor DNS este rădăcina şi nu are un nume. Zona
colorată reprezintă o ramură. Ramura conţine mai multe subramuri. Nodurile verzi reprezintă noduri frunză.
- Domeniul părinte: Este domeniul care se găseşte deasupra în ierarhie. De exemplu, rădăcina arborelui este
părintele tuturor domeniilor de vârf.
- Copil: Domeniu aflat sub primul din ierarhie; Astfel TLD-urile sunt copii ai rădăcinii.
- Fraţi (sibling): Egalul unui anumit nivel, având acelaşi părinte. Astfel domeniile de vârf sunt fraţi având
rădăcina drept părinte; toate domeniile de nivel secund dintr-un TDL particular sunt fraţi.
Figura 9.8: DNS Name Space “Family Tree”
Diagrama este similară celei din Figura 9.7, dar nodurile sunt reprezentate prin terminologia orientată pe
familie.
9.2.1.5. Nume de domenii cu autorizare completă (Fully qualified domain names - FQDNs)
Considerăm o structură internă tipică a unei organizații mari. Deoarece șeful executiv nu poate face
singur totul, organizația este partiționată în divizii, fiecare dintre acestea având autonomie în anumite limite.
Șeful diviziei este împuternicit cu autoritatea de a lua direct decizii fără a cere permisiunea șefului executiv.
Numele domeniului este format într-un mod similar și reflectă delegarea ierarhică a autorității în repartizarea
lor. De exemplu, considerăm numele myHost.myDept.myDiv.myCorp.com.
Fie următoarea ierarhie de domenii:
Figura 9.10: Exemplu de ierarhie de nume
Atunci când lucrăm cu un sistem de nume, în mod obișnuit utilizăm numai o parte din ierarhia de
domenii, de exemplu myDivision.myCorp.com. DNS oferă o metodă simplă de a minimiza introducerea de
date necesare în acest caz. Dacă numele domeniului se termină în punct, de exemplu
myDept.myDiv.myCorp.com., se presupune că este complet. Acesta se numește fully qualified domain name
(FQDN) sau absolute domain name. Dacă nu se termină cu un punct, de exemplu myDept.myDiv, numele
este incomplet, iar resolverul DNS va trebui să îl completeze prin alipirea unui sufix .myCorp.com la numele
domeniului. Regulile după care se face acest lucru sunt funcție de implementare și de configurarea locală.
Unde:
- Nume: numele domeniului care trebuie definit.
- Tipul: tipul resursei din această înregistrare. Sunt numeroase valori posibile (nume de host, nume de server
autorizat, membru al unui grup de mail, resursă ISDN, resursă X.25, cheie de codare, etc).
- Clasa: Identifică familia de protocoale. În mod normal valoarea utilizată este IN (sistem Internet).
- TTL: Timpul de viață în secunde cât înregistrarea este validă în memoria cache. Este o valoare de 32 de biți
fără semn, tipic setată la 86.400, adică o zi.
- RDlength: un întreg de 16 biți fără semn care specifică lungimea în octeți a câmpului Rdata.
- RData: Un șir de octeți de lungime variabilă care descrie resursa.
Tabelul 9.2: Câteva tipuri posibile de înregistrări de resurse
9.2.2.6. Mesaje DNS
Toate mesajele protocolului DNS utilizează un singur format. Acest format este dat în Figura 9.14.
Acest cadru este transmis de la resolver către serverul de nume. Numai antetul și secțiunea de interogare sunt
utilizate pentru a forma o cerere. Răspunsurile și transmiterea mai departe a cererii utilizează aceeași formă,
dar completează mai multe secțiuni (răspuns/autoritate/secțiuni adiționale).
Unde:
- QR: Flag identificator pentru cerere (0) sau răspuns (1).
- Op code: câmp de 4 biți care specifică tipul cererii:
0 cerere standard (QUERY),
1 cerere inversă (IQUERY),
2 interogare a stării serverului (STATUS).
- AA: Indicator de răspuns autorizat. Dacă este 1 atunci semnifică faptul că serverul care a transmis
răspunsul este autorizat pentru domeniul din cerere.
- TC: indicator de trunchiere. 1 dacă mesajul este mai lung decât permite canalul fizic.
- RD: Indicator de recursivitate. Acest bit semnalează serverului că se cere o rezoluție recursivă.
Acest bit se va copia în răspuns.
- RA: Indicator de disponibilitate a recursivității. Indică dacă serverul suportă sau nu recursivitatea.
- Zero: 3 biți rezervați pentru utilizări ulterioare. Sunt poziționați în 0.
- Rcode: cod de răspuns de 4 biți. Valori posibile:
- fără erori.
- eroare de format; serverul nu a fost capabil să interpreteze mesajul.
- Defecțiune de server. Mesajul nu a fost procesat din cauza unei probleme de server.
- Eroare de nume. Numele domeniului din cerere nu există. Este valid numai dacă bitul AA
este setat în răspuns.
- Nu este implementat. Tipul cerut în cerere nu este implementat în serverul de nume.
- Refuz. Serverul refuză să răspundă dun motive de politică.
- Alte valori sunt rezervate pentru folosință ulterioară.
- QDcount: un întreg fără semn de 16 biți specificând numărul intrării din secțiunea întrebare.
- ANcount: un întreg fără semn de 16 biți specificând numărul RR în secțiunea răspuns.
- NScount: un întreg fără semn de 16 biți specificând numărul serverului RR în secțiunea autoritate.
- ARcount: un întreg fără semn de 16 biți specificând numărul RR în câmpul înregistrări adiționale.
- Secțiunea întrebare. Următoarea secțiune conține cererile către serverul de nume. Ea conține QDcount
(uzual 1) intrări, fiecare în formatul arătat în Figura 9.15.
Figura 9.15: Formatul secțiunii întrebare
Unde:
- Lungime - Un octet care specifică lungimea etichetei următoare.
- Eticheta - Un element din caracterele numelui domeniului (de exemplu „ibm” din ral.ibm.com).
Numele domeniului referit în cerere este memorat ca o serie de astfel de etichete de lungimi variabile,
fiecare precedat de un octet lungime.
- X’00’ - indică sfârșitul numelui de domeniu și reprezintă eticheta null a domeniului rădăcină.
- Tip - 2 octeți specificând tipul cererii. Poate avea orice valoare din câmpul Type al unei
înregistrări de resursă.
- Clasa - 2 octeți specificând clasa cererii. Pentru cerere Internet, va fi IN.
9.2.3. Transportul
Mesajele DNS sunt transmise fie ca datagrame (UDP), fie ca stream-uri (TCP):
- UDP: utilizează server port 53. Mesajele transportate prin UDP sunt limitate la 521 octeți. Mesajele mai
lungi sunt trunchiate, iar bitul de trunchiere TC din antet se setează. Deoarece cadrele UDP pot fi pierdute,
este necesară o strategie de retransmisie.
- TCP: utilizează server port 53. În acest caz mesajul este precedat de un câmp de 2 octeți indicând lungimea
totală a mesajului.
9.3 Dynamic Domain Name System
DNS este o implementare statică, fără nici o preocupare privind securitatea. Pentru a implementa DNS
dinamic, luând avantajele DHCP și menținând posibilitatea de localizare a oricărui host cu ajutorul unei
etichete, sunt necesare următoarele extensii ale DNS:
- O metodă prin care un nume de host să impună ca o intrare a unui client (reprezentând o mapare nume-
adresă) din serverul de nume de domenii să fie actualizată după ce clientul obține o adresă de la un server
DHCP.
- O metodă prin care se face o mapare adresă-nume host după ce un client a obținut adresa.
- Actualizările DNS să fie imediate, fără a fi necesară intervenția unui administrator.
- Actualizările DNS să fie autentificate, pentru a împiedica hosturi neautorizate să acceseze rețeaua și pentru
a împiedica impostorii să utilizeze nume de hosturi existente pentru a le mapa la propria adresă.
- O metodă prin care serverele primare și secundare să transmită și să recepționeze rapid intrările modificate
ca urmare a actualizării dinamice de către clienți.
Implementarea DDNS poate introduce probleme în cazul în care mediul nu este sigur. O metodă de
securitate utilizată de DDNS este utilizarea Secret Key Transaction Authentication (TSIG). Aceasta poate fi
utilizată pentru a autentifica actualizările dinamice de la clienți, sau pentru a autentifica răspunsurile
recursive provenite de la server. În plus, mesajele pot fi protejate pentru integritate și confidențialitate
utilizând TSIG peste Generic Security service (GSS-TSIG).
Secțiunea antet este întotdeauna prezentă și are o lungime fixă de 12 octeți. Celelalte secțiuni au lungime
variabilă. Ele sunt:
- Identificare - Identificator de 16 biți atribuit de către program. Este copiat în răspunsul corespunzător al
serverului de nume și poate fi utilizat pentru a distinge între mai multe răspunsuri care sunt așteptate la un
moment dat.
- Q - Indicator de cerere de actualizare (0) sau răspuns (1).
- Op - Opcode. Valoarea 5 indică un mesaj update.
- Z - Câmp de 7 biți setat în 0 și rezervat pentru utilizări ulterioare.
- R - Codul răspunsului (nedefinit în cererile de actualizare). Posibile valori:
0 Nu sunt erori
1 Eroare de format. Serverul nu a fost capabil să interpreteze mesajul.
2 Defecțiune la nivelul serverului. Mesajul nu a fost procesat din cauza unei
probleme la nivelul serverului.
3 Eroare de nume. Numele specificat nu există.
4 Nu este implementat. Tipul mesajului specificat în Opcode nu este suportat
de acest server.
5 Refuz. Serverul refuză să facă actualizarea din motive de politică de
securitate.
6 Eroare de nume. Numele există și nu ar trebui să existe.
7 Eroare RRset. Setarea unei inregistrări de resursă (resource record set)
specificate care există și nu ar trebui.
8 Eroare RRset. Setarea unei inregistrări de resursă (resource record set)
specificate care nu există.
9 Eroare de zonă de autoritate. Serverul nu este autorizat pentru o anumită
zonă.
10 Eroare de zonă. Numele specificat în cererea de actualizare nu face parte din
acea zonă.
- ZO count - Numărul RRs (înregistrărilor de resurse) în secțiunea Zone.
- PR count - Numărul RRs (înregistrărilor de resurse) în secțiunea Prerequisite.
- UP count - Numărul RRs (înregistrărilor de resurse) în secțiunea Update.
- AD count - Numărul RRs (înregistrărilor de resurse) în secțiunea informații suplimentare (Additional
information).
- Zone - Această secțiune este utilizată pentru a indica zona înregistrărilor care trebuie actualizate. Cum toate
înregistrările care trebuie actualizate trebuie să aparțină aceleeași zone, secțiunea zonă are o singură intrare
specificând numele zonei, tipul zonei și clasa zonei.
- Prerequisite - Această secțiune conține RRs sau RRsets care fie trebuie, fie nu trebuie să existe, în funcție
de tipul actualizării.
- Update - Secțiunea conține RRs, RRsets, sau ambele, care trebuie fie adăugate, fie eliminate din zonă.
- Additional information - Secțiunea poate fi utilizată pentru a introduce RRs suplimentare într-un proces de
actualizare aflat în desfășurare.
Dacă serverul primește o cerere IXFR, va trimite ca răspuns următoarea secțiune answer: