Sunteți pe pagina 1din 53

9.

PROTOCOALE PENTRU NUME ŞI DIRECTOARE

9.1. Introducere în sisteme de nume

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.

Figura 9.1: Accesul în inter-rețea în lipsa unui sistem de nume


Când nu există nici un sistem de nume, utilizatorul trebuie să cunoască adresa oricărui dispozitiv pe
care dorește să îl acceseze în inter-rețea. Deoarece majoritatea dintre utilizatori au o memorie a numerelor
limitată, va trebui, de fiecare dată să apeleze la o căutare manulă, ineficientă, de adresă.
Este mult mai ușor de reamintit numele unei resurse; dacă există un sistem de nume funcțional, va
trebui ca utilizatorul să introducă numele dispozitivului și sistemul de nume va converti numele într-o
adresă, ca în Figura 9.2.
Când o inter-rețea este dotată cu un sistem de nume, utilizatorul nu mai trebuie să cunoască adresa IP a
dispozitivului pentru a îl accesa. Utilizatorul trebuie să introducă numai numele, numele fiind convertit
automat de către sistemul de nume în adresă. Sistemul va oferi adresa software-ului client, care o va folosi
pentru a accesa resursa cerută, ca și când utilizatorul ar fi introdus-o direct.
Figura 9.2: Accesul în cazul unui sistem de nume

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.

9.1.2. Funcțiile sistemului de nume


Cu toate că diferența dintre adresarea numerică și numele simbolice este semnificativă pentru
utilizatori, este important de reținut că ambele au același scop: identificarea dispozitivului. Chiar dacă vom
utiliza un sistem de nume pentru a face mai ușor accesul la dispozitive, computerele vor continua să
funcționeze normal pe baza identificatorului numeric. Concluzionând, fiecare dispozitiv va dispune de doi
identificatori: un număr și un nume.
Această situație permite atât oamenilor, cât și mașinilor să utilizeze metoda de identificare pe care o
preferă. Aceasta implică existența unei administrări a atribuirilor de nume dispozitivelor și a conversiei
dintre nume și numere. Sistemul de nume va fi un sistem coplet care permite numelor să fie utilizate de către
oameni, iar numerele să fie utilizate în continuare de către dispozitive.
Sistemul de nume are următoarele funcții de bază:
- Spațiul numelor (Name Space). Sistemul de nume definește un spațiu al numelor (name space) pentru
rețeaua în care lucrează. Spațiul numelor, numit uneori și arhitectura numelor (name architecture), descrie
regulile după care sunt structurate și utilizate numele. De asemenea definește modul în care numele unui
dispozitiv este înrudit cu numele altui dispozitiv din sistem și cum se asigură eviatrea atribuirii de nume
invalide care să provoace probleme în funcționarea sistemului.
- Înregistrarea numelui (Name Registration). Pentru a implementa un sistem de nume, trebuie asociat un
nume fiecărui dispozitiv din rețea. Ca orice sistem de adresare, sistemul de nume nu poate funcționa corect
dacă nu este asigurată unicitatea numelui în sistem. Procesul de legare a unui nume de un dispozitiv poartă
numele de înregistrarea numelui.
- Rezoluția numelui (Name Resolution). Așa cum am menționat anterior, cu toate că oamenii preferă numele
simbolice, computerele le utilizează foarte rar. Este necesară definirea unui mecanism prin care numele
simbolic al unui dispozitiv să fie translatat într-o adresă numerică. Acest proces este numit uzual rezoluția
numelui.

9.1.3. Relațiile dintre funcțiile sistemului de nume


Spațiul numelor este mai mult decât o funcție descriptivă; este o definire a modului în care lucrează
numele în sistem. Inregistrarea numelui și rezoluția sunt funcții mai active, fiecare sistem de nume incluzând
una sau mai multe proceduri specifice pentru a le realiza. Înregistrarea și rezoluția numelui sunt oarecum
complementare, tehnicile de înregistrare fiind asociate cu metode particulare de rezoluție. Ambele metode
depind de spațiul numelor și în particular de arhitectura sa. Aceste relații sunt ilustrate simplificat în Figura
9.3.
Procesele de înregistrare și rezoluție pot fi mai simple sau mai complicate, în funcție de sistemul de
nume utilizat. Sisteme de nume simple sunt operate în general manual, sunt ușor de utilizat și de înțeles și cel
mai bine utilizate în rețelele mici. Rețelele mari, mai complexe, inter-rețelele cer un sistem de nume mai
sofisticat, care să lucreze mai puțin cu intervenția administratorului și să fie scalabil (expandabil) pe masură
ce sunt introduse mașini noi în rețea.
Spațiul numelor definește structura sistemului și regulile de creare a acestora. Spațiul numelor este
utilizat ca bază pentru înregistrarea numelui care definește modul de mapare (cartare) dintre nume și adrese.
Atunci când un utilizator accesează un dispozitiv prin nume, metoda rezoluția numelui va fi utilizată pentru a
consulta spațiul numelor, a determina adresa asociată cu numele și apoi pentru a converti numele în adresă.
Figura 9.3: Funcțiile sistemului de nume
9.1.4. Spațiul numelor - arhitectura numelor
Ideea principală a unui sistem de nume este de a oferi un mod de accesare a dispozitivelor utilizând
nume simbolice. Ca pentru orice mecanism de identificare, înainte de a utiliza sistemul trebuie definită o cale
de realizare a identificării. Schemele de adresare numerice (ex. adresarea IP) au reguli de creare a adreselor
și de asociere a unei adrese din spațiul de adrese fiecărui dispozitiv. În mod similar, dispozitivele primesc
nume din spațiul numelor.

9.1.4.1. Funcțiile spațiului nume


Dintre cele trei componente funcționale ale sistemului de nume, spațiul nume este cel mai abstract. Este
de asemenea partea fundamentală a sistemului, deoarece descrie modul de creare a numelor. Câteva dintre
aspectele definite de către spațiul numelor în sistemul de nume sunt:
Dimensiunea numelui și numărul maxim de nume: Spațiul numelor specifică numărul de caractere
(simboluri) care compun un nume. De asemenea, acesta definește numărul maxim de nume care pot apărea
în sistem.
Reguli de nume și sintaxa numelui: Spațiul numelor specifică ce caractere sau simboluri sunt permise într-un
nume. Este utilizat pentru a permite alegerea de nume valide pentru toate dispozitivele.
Arhitectura numelui și semantica: Fiecare spațiu de nume utilizează o arhitectură sau structură specifică care
descrie cum au fost construite numele și cum vor fi interpretate.

9.1.4.1.1. Arhitecturile numelui


Cea mai importantă caracteristică a spațiului numelor este arhitectura numelui, motiv pentru care
uneori spațiul numelor este numit și arhitectura numelui. Arhitectura spațiului numelor determină dacă
numele atribuite și utilizate sunt un simplu set de simboluri nestructurat sau dacă au o structură internă mai
complexă. În ultimul caz, spațiul numelor trebuie să definească cum relaționează elementele unui nume
particular. Teoretic, sunt posibile mai multe arhitecturi de nume diferite. În practică se aplică una din două
arhitecturi: plată sau ierarhică.

Arhitectura de nume plată (Flat Name Architecture (Flat Name Space))


Numele sunt atribuite ca o secvență de simboluri care sunt interpretate ca o etichetă fără nici o structură
internă. Nu poate fi distinsă nicio relație între un nume și orice alt nume.
Un exemplu de astfel de arhitectură este cel din Figura 9.4.

Figure 9.4: Arhitectura (spaţiul) de nume plată (Flat Name Space/Architecture).


Nu există nici o structură care să organizeze numele sau care să dicteze cum să fie construite. Din punct de
vedere logic, fiecare dispozitiv este egalul oricărui altuia.

Arhitectura de nume ierarhică


În această arhitectură numele constau într-o secvență de simboluri, aceste simboluri fiind atribuite
utilizând o structură specifică și clară. Numele este compus din elemente discrete care se află într-o relație
unele cu altele utilizând de cele mai multe ori o semantică iererhică părinte-fiu. Sunt multe arhitecturi de
nume, în diferite contexte, care utilizează acest tip de structură ierarhică. De exemplu, o companie mare va
realiza o hartă a organizației și va da nume componentelor executive ale organizației. Un exemplu ipotetic al
unei arhitecturi de nume ierarhice este dat în Figura 9.5.
Diagrama conține aceleași dispozitive ca și Figura 9.4, dar acestea au fost aranjate utilizând o
arhitectură structurată, ierarhică. În acest caz organizația a ales să structureze numele dispozitivelor sale mai
întâi după locație, apoi după numele departamentului. Astfel se asigură evitarea conflictelor de nume.
Mașina lui John din departamentul vânzări SUA va primi ca prefix “US-Sales” și se va putea numi “US-
Sales-John”, fără a intra în conflict cu mașina lui John care lucrează în zona europeană și, ca atare, se va
numi (“EU-Sales-John”.) Acest fel de numire va oferi posibilitatea localizării imediate a unui dispozitiv în
interiorul organizației.
Cel mai cunoscut exemplu de spațiu numelor ierarhic este cel al TCP/IP, Domain Name Space, care
utilizează etichete text separate prin puncte pentru a forma o structură internă.
Figura 9.5: Arhitectura (spaţiul) de nume ierarhică (Hierarchical Name Architecture/Structured
Name Space).
9.1.4.1.2. Comparație între arhitecturile de nume.
Arhitectura paltă cere prezența unei autorități centrale care să sorteze și atribuie nume tuturor
dispozitivelor și să asigure unicitatea numelor din sistem. O arhitectură ierarhică este ideală pentru o schemă
de înregistrare distribuită care să permită mai multor autorități să-și împartă procesele administrative.
Spațiile plate au avantajul simplității și al abilității de a crea nume simple și ușor de reținut, ca în
Figura 9.4. Totuși, arhitectura nu este scalabilă pentru sisteme de nume cu mii de mașini datorită dificultății
de a menține unicitatea numelui. De exemplu, dacă sunt patru utilizatori cu numele John și toți vor să-și
numească mașina “John’s PC”? Este necesară o încărcare suplimentară pentru a administra aceste nume.
Arhitectura ierarhizată este mult mai sofisticată, dar mai flexibilă, deoarece permite numelor să fie
atribuite folosind o structură logică. Putem numi mașina noastră pornind de la o ierarhie care reflectă
structura organizației din care facem parte, dând autoritate diferitelor departamente ale organizației să
administreze părți ale spațiului numelor. Cât timp fiecare departament are un nume unic, și acest nume unic
este parte a numelui fiecărei mașini din departament, nu trebuie să ne facem griji privind atribuirea de nume
unice la nivelul întregii organizații, ci numai la nivelul departamentului respectiv. Putem avea în interiorul
organizației patru mașini diferite numite după numele departamentului lor și ”John”, așa cum se vede în
Figura 9.5. Prețul plătit pentru această flexibilitate este necesitatea unor nume mai lungi, cu înregistrări și
rezoluții mai comlexe.

9.1.5. Metode de înregistrare a numelui, administrare și autorități


Este evident că pentru a implementa propriul sistem de nume avem nevoie de metode de atribuire a
numelor pentru fiecare dispozitiv pe care îl folosim în sistem. Cum sistemul de nume are un spațiu al
numelor care este comparabil cu ceea ce reprezintă spațiul adreselor într-un sistem de adresare, va trebui
implementat un set de reguli și proceduri pentru atribuirea de nume, la fel cum un sistem de adresare atribuie
adrese.
9.1.5.1. Funcțiile înregistrării numelui
În general, înregistrarea numelui presupune următoarele concepte și acțiuni:
- Atribuirea de nume și garantarea unicității: Sarcina principală a procesului de înregistrare a numelui este
atribuirea de nume dispozitivelor. Ca toate schemele de identificare, o cerință cheie a înregistrării numelui o
constituie asigurarea unicității fiecărui nume. Numele duplicate creează ambiguități și fac imposibilă
rezoluția numelui.
- Desemnarea unei autorități centrale de înregistrare: Asigurarea unicității numelui presupune încărcarea
cuiva cu sarcina procesului de atribuire a numelui. Această autoritate centrală poate fi una individuală care să
mențină fișierele conținând numele sau o organizație care să fie responsabilă de întregul proces de
înregistrare. Această autoritate este chemată să rezolve problemele și conflictele care pot apărea în procesul
de înregistrare.
- Delegarea autorității înregistrării: în sistemele numelor, de dimensiuni mici, o autoritate centrală poate fi
responsabilă de procesul de înregistrare pentru toate dispozitivele. Într-un sistem mare al numelor, ierarhizat,
nu este practic să avem acest proces centraizat. De aceea, autoritatea centrală de înregistrare va diviza spațiul
numelor și va delega autoritatea de înregistrare a numelor diferitelor organizații subordonate. Este necesară
dezvoltarea și implementarea unei politici de delegare.
- Definirea structurii ierarhice: Când este utilizat un spațiu al numelor ierarhizat, autoritatea centrală este
responsabilă de modul în care va arăta structura. Ea va dispune cum vor fi înregistrate numele în diferite
părți ale ierarhiei, și cum va fi delegată autoritatea.
9.1.5.2. Impactul arhitecturii spațiului numelor asupra înregistrării numelui
Complexitatea procesului de înregistrare a numelui depinde de cât de extins și de complex este sistemul
numelor, în particular de arhitectura spațiului numelor. Într-un sistem simplu, plat, înregistrarea se face de
regulă sub o singură autoritate. Nu există nici o structură, deci nici o delegare de autoritate.
Pentru sisteme ale numelui ierarhizate, înregistrarea numelui este legată de ierarhia de nume utilizată.
Autoritatea centrală definește structura ierarhiei, decide cum se partiționează această ierarhie în subseturi
care pot fi administrate individual de către alte autorități (delegate). Aceste autorități pot la rândul lor să
delege alte subseturi ale propriului spațiu al numelor, rezultând un sistem flexibil și extensibil.
Această delegare de autoritate este unul dintre beneficiile majore ale spațiului numelor ierarhizat. De
exemplu, în TCP/IP - DNS, există o autoritate centrală care înregistrează numele. Ea are sarcina de a decide
care sunt domeniile de nivel înalt care pot exista, de exemplu “.com”, “.edu”, “.info” și “.uk” . Autoritatea de
a administra fiecare din aceste domenii este apoi delegată altor organizații. Aceste organizații continuă
divizarea ierarhiei. Eventual, fiecare organizație poate decide cum se va numi fiecare dintre sistemele interne
independente.

9.1.5.3. Metode de înregistrare a numelui


Există câteva metode comune prin care se realizează procesul de înregistrare. Fiecare dintre acestea are
punctele sale tari și slabe, unele fiind potrivite pentru un spațiu al numelor plat, altele pentru unul ierarhizat.

Înregistrarea numelui în tabel


În această tehnică atribuirea numelor este păstrată de către administrator într-un tabel. Când trebuie
adăugat, șters sau modificat un nume, se editează tabelul.
Această tehnică este asociată uzual cu spații ale numelor mici, plate și are aceleași beneficii și
neajunsuri ca și arhitectura plată: este simplu și ușor de implementat, dar nu poate fi extins la sisteme mari.
Metoda nu poate fi utilizată în sisteme ierarhizate cu mai multe autorități, deoarece tabelul trebuie ținut într-
un singur loc. În rețelele mari tabelele pot fi o tehnică de rezervă pentru una dintre tehnicile mai sofisticate
care urmează.

Înregistrarea numelui prin broadcast


Un dispozitiv care dorește să utilizeze un nume particular trimite un mesaj către toate celelalte
dispozitive din rețea întrebându-le dacă este cineva care utilizează acel nume. Dacă da, își va alege alt nume.
Dacă nu, numele se consideră înregistrat și va putea fi utilizat.
Tehnica este mai complicată decât utilizarea tabelului, dar rămâne limitată la utilizarea în rețele relativ
mici. Nu este practică folosirea broadcastului către mii de sisteme, această metodă neputând fi utilizată în
Internet, neexistând o cale de a transmite broadcast către fiecare dispozitiv din toate interrețelele.

Înregistrarea într-o bază de date.


În această metodă este menținută o bază de date a atribuirilor de nume. Pentru a înregistra un nume,
trebuie înaintată o cerere pentru ca atribuirea de nume să fie înscrisă în baza de date. Dacă autoritatea
sistemului de nume este cetralizată, atunci baza de date este centralizată și menținută de acea autoritate. Dacă
sunt delegate autorități pe porțiuni ale ierarhiei, atunci va fi utilizată pentru înregistrare o baza de date
distribuită, fiecare autoritate delegată având sub administrare propria bază de date care descrie secțiunea sa
din ierarhie.
Aceasta este cea mai sofisticată tehnică, și este normal asociată cu sisteme de nume ierarhice, ca DSN.
Printre avantajele ei pot fi enumerate flexibilitatea, fiabilitatea și distribuirea efortului de administrare a
bazelor de date. Principalul punct negativ îl reprezintă complexitatea.
9.1.6. Tehnici de rezoluție a numelui și elemente funcționale ale unui sistem de rezoluție a numelor.
Utilizarea unui sistem de nume crează două sisteme de identificare paralele pentru computere:
numerele utilizate de mașini și numele utilizate de oameni. Sarcina unui sistem de nume este de a integra
cele două scheme. Întegistrarea numelui permite oamenilor să specifice ce mașină utilizează un anumit
nume. Acesta este numai jumătate din procesul care are loc; avem nevoie de o cale prin care mașinile să
utilizeze numele dat de om și să îl translateze într-o adresă reală care poate fi utilizată în comunicații.
Această a doua parte este numită rezoluția numelui.
Rezoluția numelui, numită uneori și translatarea numelui, mapare, legare, este cel mai cunoscut aspect
al sistemelor de nume. Spațiul numelui este în general setat o singură dată, iar înregistrarea numelui apare
rar, numai atunci când trebuie create sau schimbate nume. În opoziție, fiecare utilizator al unui sistem de
nume impune mașinii pe care lucrează să realizeze rezoluția numelui poate de sute sau mii de ori pe zi.

9.1.6.1. Metode ale rezoluției numelui


Există câteva tehnici diferite care sunt utilizate pentru rezoluția numelui. Modul în care acestea
funcționează depinde în mare măsură de alte două funcții ale sistemului de nume, spațiul numelor și
înregistrarea numelor. Așa cum se poate ușor intui, un spațiu simplu și o înregistrare simplă vor presupune și
o rezoluție simplă. Sistemele ierarhizate complexe cu baze de date distribuite vor cere o rezolvare a numelor
mult mai sofisticată. Există trei metode de rezoluție obișnuite.

Rezoluția numelui cu ajutorul tabelelor


Tabelul utilizat în înregistrarea numelui pe bază de tabel este consultat de fiecare dispozitiv care
realizează procesul de rezoluție. Tabelul spune dispozitivului cum transformă numele mașinii care trebuie
contactată într-o adresă.
Această tehnică corespunde evident întregistrării numelui cu ajutorul tabelului; este cea mai simplă
dintre cele trei metode. Metoda este utilizabilă numai în sisteme de nume foarte mici, dar poate fi întregită de
alte metode.

Rezoluția numelui prin broadcast


Când un dispozitiv trebuie să rezolve un nume, el transmite broadcast un mesaj care vrea să spună
“trebuie să iau legătura cu un dispozitiv cu numele X, cine este acesta?”. Dispozitivul cu numele X va
răspunde spunând ”Sunt X și adresa mea numerică este N”. Această tehnică este asociată înregistrării prin
broadcast. De asemenea, este utilizabilă numai în sisteme de mici dimensiuni în care dispozitivele pot
recepționa mesajele broadcast.

Rezoluția numelui de tip client/server


Există servere care sunt programate anume pentru a putea răspunde unei cereri de rezoluție de nume
din partea unui client. Aceste servere extrag numele din cerere, îl asociază cu un identificator numeric într-o
bază de date și îl trimit într-un răspuns.
Această tehnică este utilizată în general în conjuncție cu înregistrarea în baza de date. Este cea mai
complexă metodă de rezoluție, dar este și cea mai eficientă și singura care poate funcționa corespunzător
într-un sistem de nume larg, distribuit, ierarhizat.

9.1.7. Istoricul sistemelor de nume TCP/IP


La sârșitul anilor `60 când a fost dezvoltat predecesorul Internetului (ARPANET), acesta utiliza
protocoale având funcții similare TCP/IP-ului de azi. ARPANET era foarte mică după standardele de astăzi,
conținând câteva mașini numite, ca și azi, hosturi. Schema de adresare era foarte simplă, fiind o combinație
dintre un număr al computerului și un număr de port pentru fiecare host. Pentru o mână de computere era
ușor de reținut adresele, dar atunci când ARPANET a crescut, tehnica a devenit neutilizabilă. La începutul
anilor ’70 inginerii ARPA au dezvoltat un sistem de nume care era mai ușor de utilizat decât adresele
numerice. S-a pornit cu atribuirea unui nume fiecărui dispozitiv din rețea. Fiecare zonă din rețea trebuia să
administreze propriul tabel de hosturi care conținea corespondența nume-adresă.
Primul sistem de nume ARPANET: Liste de nume. Imediat, inginerii ARPA și-au dat seama de
pericolul inconsistenței numelui generat de faptul că fiecare zonă administra propriul tabel de nume. De
aceea, au stabilit (standardizat) în 1971 modul în care se vor atribui numele în rețea. S-a publicat o listă cu
toate numele și adresele corespunzătoare existente în rețea. Acest sistem de nume era unul manual. De
fiecare dată când se modifica un nume, sau apărea unul nou, publica o nouă listă și fiecare administrator de
zonă trebuia să-și actualizeze propria listă. În această perioadă nu intra în discuție structura numelui, fiecare
zonă având libertatea de a da nume hosturilor sale. Au apărut imediat problemele: schema lucra foarte greu
în ceea ce privește actualizarea situației rețelei: schimbările se introduceau după ce se publica o nouă listă.
Chiar și cu o listă centralizată lucrurile nu mergeau mai bine, existând pericolul ca un administrator să uite să
actualizeze tabelele, sau să facă o modificare greșită.
Pasul următor l-a constituit memorarea numelor într-un fișier tabel de hosturi. S-a creat un fișier text
care era administrat central și care putea fi descărcat utilizând protocoale de rețea gen FTP. Fișierul era
localizat la Network Information Center (NIC) din Stanford University. Sistemul a fost menținut și după
apariția TCP/IP, făcându-se maparea numelor cu adresele IP de 32 de biți. Noua definire a tabelelor de
hosturi (maparea cu adrese IP) a avut loc în 1982.
Devenea tot mai evident faptul că acest sistem de nume bazat pe tabel va fi în curând inutilizabil.
Pentru o rețea în continuă expansiune, menținerea centralizată a unui tabel nu mai era o soluție. Ideea trecerii
pe un sistem de nume ierarhizat apăruse încă din 1981. Conceptul era bazat pe domenii. Au fost multe
discuții (1981-1983) până când conceptul a fost pus în practică și s-a migrat de la sistemul de nume plat,
bazat pe tabel, la noul sistem Domain Name System (DNS).
9.2 Domain Name System (DNS)

Figura 9.6: Funcţiile DNS


DNS utilizează un spaţiu al numelor ierarhizat constituit dintr-o singură structură complexă, multinivel.
Spaţiul numelor este organizat pornind de la o rădăcină în care sunt plasate domeniile. Fiecare dintre ele
poate conţine nume individuale de dispozitive sau sub-domenii. Întreaga structură este asemănătoare
sistemului de directoare în care este organizat un calculator. Pentru a defini numele este utilizată o sintaxă
specifică, iar pentru a descrie părţi ale structurii şi a identifica numele domeniilor este utilizată o
terminologie specială, pornind de la rădăcină în jos până la nivelul dispozitivului.

Î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ă.

9.2.1. Arhitectura ierarhizată a numelor DNS


Conceptul esenţial al spaţiului numelor DNS este domeniul. Domeniul este înţeles ca fiind o sferă de
influenţă, o arie de control. O sferă de influenţă poate la rândul său să conţină alte sfere mai mici, care la
rândul lor pot conţine altele, şi aşa mai departe.
Aceasta arată faptul că domeniile sunt, în mod natural, organizate ierarhic, arborescent. Comparaţia
între elementele structurate şi arbori este uzuală în reţelistică. Principala diferenţă dintre terminologia tehnică
şi cea biologică este aceea că arborii DNS cresc de sus în jos. Analogia cu arborii conduce la o terminologie
specifică:
- Rădăcină (Root): Acesta este conceptual vârful structurii nume DNS. Domeniul rădăcină în DNS conţine
întreaga structură. Perin definiţie, nu are un nume; este NULL.
- Ramură (Branch): Braţul, ramura, reprezintă orice porţiune continuă din ierarhia DNS. El constă dintr-un
domeniu şi toate domeniile şi obiectele incluse în acesta. Toate ramurile sunt conectate în rădăcină.
- Frunză (Leaf): este un obiect de capăt, terminal în structură, care poate fi un domeniu care nu mai are
nimic sub el.

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.

9.2.1.1. Terminologia utilizată pentru a distinge domeniile în structura ierarhizată

Terminologie legată de noţiunea de arbore


Alţi termeni utilizaţi pentru a referi domenii din diferite niveluri ale ierarhiei:

- Domeniu de rădăcină: este rădăcina arborelui;

- 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ă.

Terminologie legată de noţiunea de familie


Alt set de terminologie compară structura ierarhizată a DNS cu arborele familiei. Relaţiile dintre
domenii sunt descrise astfel:

- 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.2. Restricţii în structura arborelui DNS


Orice domeniu are un singur părinte (cu excepţia rădăcinii); fiecare ramură a arborelui este conectată la
un singur membru. Ca urmare, nu pot apărea bucle, nu pot apărea domenii care al căror copil este şi părintele
său. Trebuie înţeles că ierarhia de nume reprezintă o structură logică, nefiind necesară o corespondenţă cu
locaţia fizică a dispozitivelor. Un domeniu cu zece copii poate reprezenta 11 dispozitive aflate în 11 ţări
diferite.

9.2.1.3. DNS - etichete, nume şi reguli sintactice


Ierarhia spaţiului numelor DNS permite aranjarea domeniilor într-un arbore virtual care reflectă
caracteristicile după care dispozitivele sunt organizate. Numirea în DNS porneşte de la atribuirea fiecărui
domeniu a câte unei etichete text în spaţiul numelor DNS. Eticheta identifică domeniul în cadrul structurii şi
trebuie să îndeplinească următoarele reguli sintactice:
- Lungimea: Teoretic, fiecare etichetă poate avea între 0 şi 63 caractere. În practică, lungimea este între 1 şi
20, cu excepţia etichetei atribuită rădăcinii.
- Simboluri: Sunt permise litere şi numere, precum şi simbolul liniuţă de unire(“-“). Nu este permis nici un
semn de punctuaţie, inclusiv sublinierea (underscore “_”).
- Dependenţa de tipul de scriere: Etichetele nu sunt „case-sensitive”.
Fiecare etichetă trebuie să fie unică în domeniul său părinte. De exemplu, dacă avem un părinte „rocă”,
nu putem avea decât un singur copil „cristal”. Datorită insensibilităţii cazului, în interiorul „rocii” nu putem
avea „CRISTAL” şi „cristal”, ele fiind considerate unul şi acelaşi domeniu. Conceptul unicităţii locale la
nivelul unui părinte asigură unicitatea numelui. Astfel, dacă avem un domeniu „sticlă”, putem crea în
interiorul lui un subdomeniu „cristal”, neexistând conflict deoarece domeniile „rocă” şi „sticlă” sunt
separate.

9.2.1.4. Construirea numelor domeniilor pornind de la etichetele domeniilor.


Numele rădăcinii este un nume de lungime zero, implicit null. Eticheta rădăcinii există, dar este vidă.
Ca o justificare este faptul că rădăcina este parte a fiecărui domeniu de nume. Ea trebuie inclusă în fiecare
nume de domeniu. Includerea unui nume pentru rădăcină nu ar avea alt efect decât lungirea numelui,
neaducând nici o informaţie suplimentară.
Luând exemplul anterior, un TLD numit “rocă” cu un nivel secund “cristal”. Numele domeniului “rocă” este
“rocă.”, cu un punct separând “rocă” şi “ ” (spaţiul null pentru rădăcină). În practică punctul de sfârşit se
omite, astfel că numele domeniului ”rocă” este considerat simplu ”rocă”. Subdomeniul ”cristal” din ”rocă”
va avea numele de domeniu ”cristal.rocă”. Dacă avem un dispozitiv numit ”sare” în domeniul ”cristal.rocă”,
acesta se va numi ”sare.cristal.rocă”.
Figura 9.9: Construirea Etichetelor DNS şi a Domeniului Numelor
Fiecare nod are o etichetă în spaţiul numelor DNS (cu excepţia rădăcinii, care are eticheta null).
Domeniul numelui pentru un nod se construieşte prin simpla punere în ordine a etichetelor de la vârful
arborelui în jos înspre domeniul individual, mergând de la dreapta la stânga, separând fiecare etichetă prin
punct.

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ă.

9.2.1.6. Domenii generice


Numele de nivel de vârf (TLD) au o lungime de 3 sau mai multe caractere. Câteva dintre numele
generice de domenii utilizate în Internet sunt:
Tabelul 9.1: Nume generice de domenii
9.2.1.7. Domenii de țară
Tot de nivel de vârf sunt domeniile notate cu câte două litere, conform codurilor de țară prezente în
ISO 3166. Acestea se numesc domenii de țară (country domains) sau domenii geografice (geographical
domains). Multe țări au propriul nivel secund, în paralel cu domeniile nivelului de vârf generic. De exemplu,
în Marea Britanie domeniile echivalente domeniilor generice .com și .edu sunt .co.uk și .ac.uk, ac fiind o
abreviere de la academic.

9.2.2. Rezoluția numelui DNS


Procesul de rezoluție poate fi descris pe scurt prin următorii pași:
Un program al utilizatorului înaintează o cerere (către sistem) de tip gethostbyname(), prin care cere adresa
IP dând numele, sau gethostname(), prin care cere numele unui dispozitiv oferind adresa IP.
Resolver-ul formulează o cerere către server-ul de nume. Există full resolver-i care mai întâi consultă o
memorie cache locală. Server-ul de nume verifică dacă răspunsul este în baza sa de date; dacă da, oferă
răspunsul clientului. Dacă nu poate oferi informația, interoghează alte servere de nume, mergând pe arborele
DNS.
Programului utilizator i se oferă adresa IP (sau numele) cerută sau un mesaj de eroare dacă cererea nu a
putut fi soluționată.
Rezoluția numelui este un proces client/server. Funcția client (numită resolver sau name resolver) este
transparentă pentru utilizator și este apelată printr-o aplicație pentru a translata nume simbolice de nivel înalt
în adrese IP și invers. Name server (numit și domain name server) este o aplicație server care furnizează
translatarea dintre numele de nivel înalt și adrese IP. Mesajele cerere/răspuns pot fi transportate fie de UDP,
fie de TCP.
9.2.2.1. Programul complet de rezolvare a numelui de domeniu
Programul numit full resolver, distinct de programul utilizatorului, transmite toate cererile către
serverul de nume pentru a fi procesate. Răspunsurile sunt înscrise de către server în cache pentru a fi utilizate
și mai târziu. Și resolver-ul înscrie răspunsul într-un cache propriu.

Figura 9.11: Modul de acțiune al unui domain name full resolver


9.2.2.2. Programul redus de rezolvare a numelui de domeniu
Este o rutină care este conectată la programul utilizatorului, care transmite cererile către serverul de
nume pentru a fi procesate. Răspunsurile sunt memorate de către server în cache, dar nu și de resolver. În
majoritatea platformelor, resolver-ul redus (stub) este implementat de două funcții: gethostbyname() și
gethostbyaddr(). Acestea sunt utilizate pentru a converti numele în adrese IP și invers. Stub resolvers sunt
mult mai des utilizaţi decât full resolvers.

Figura 9.12: Modul de acțiune al unui domain name stub resolver


9.2.2.3. Modul de operare a resolver-ului
O cerere de nume poate fi de două tipuri: recursivă sau iterativă (non-recursivă). Un bit indicator din
cererea de nume specifică dacă clientul dorește o interogare recursivă, iar un bit indicator din răspuns
specifică dacă serverul suportă interogări recursive. Diferența dintre interogare recursivă și iterativă apare
când serverul primește o cerere pentru care nu poate oferi un răspuns complet. O cerere recursivă impune
serverului să înainteze la rândul său o cerere mai departe pe arborele DNS pentru a obține informația și
returnează răspunsul complet clientului. Dacă cererea este iterativă, serverul returnează informația care îi
este disponibilă și o lista cu servere pe care clientul le poate apela pentru a-și completa informația.
Răspunsurile pot fi de două feluri: autorizat și non-autorizat. Un bit indicator din răspuns indică ce fel
de răspuns este. Când un server primește o cerere pentru un domeniu situat în zona sa de autoritate, el
returnează un răspuns autorizat. Când primește o cerere pentru un domeniu peste care nu are autoritate, va
opera funcție de setarea bitului de recursivitate din cerere:
- Dacă se cere recursivitate și serverul suportă recursivitate, el va interoga direct un alt server. Acesta
poate fi chiar un server care are autoritate asupra domeniului din cerere, sau un server rădăcină. Dacă al
doilea server nu poate da un răspuns autorizat, procesul se repetă. Când un server (sau un program full
resolver) recepționează un răspuns, îl va înscrie în cache pentru a îmbunătăți performanțele sistemului
la cereri repetate. Informația memorată în cache este menținută un interval de timp specificat în răspuns
printr-un câmp de 32 de biți, numit timp de viață (time-to-live-TTL); Tipic acest câmp este setat la
valoarea 86.400 secunde (o zi).
- Dacă nu se cere recursivitate sau dacă serverul nu este capabil să servească cereri recursive, el va
returna informația disponibilă în cache, precum și o listă cu servere care pot da informații autorizate.

9.2.2.4. Modul de operare a serverelor de nume.


Fiecare server de nume are autoritate pentru zero sau mai multe zone. Sunt trei tipuri de servere:
- Primar: Este un server care are informațiile privind zona și are autoritate asupra acelei zone.
- Secundar: Un server secundar are autoritate asupra unei zone, dar obține informații despre aceasta de la un
server primar prin procesul numit zone transfer. Pentru a se sincroniza, serverele secundare interoghează
serverele primare în mod regulat (de regulă la trei ore) și reexecută transferul zonal dacă serverul primar a
fost actualizat. Un server poate funcționa ca primar sau secundar pentru mai multe domenii, sau primar
pentru unele și secundar pentru altele. Un server primar sau secundar realizează toate funcțiile unui server de
tip caching-only.
- Caching-only: Este un server care nu are autoritate asupra nici unei zone. El obține toate datele de la
servere primare sau secundare. El trebuie să dețină cel puțin adresa unui server de nume de la care să poată
obține o informație inițială.

9.2.2.5. Memorarea de resurse DNS


Baza de date distribuită a DNS este compusă din înregistrări de resurse (resource records), care sunt
divizate în clase pentru diferite tipuri de rețele. Discuția o vom face numai pentru clasa Internet. Resursele
înregistrate oferă o mapare între domeniile de nume și obiectele din rețea. Cel mai adesea, obiectele sunt
adrese ale hosturilor, dar DNS a fost proiectat să dispună de o largă varietate de obiecte.
O zonă constă dintr-un grup de resurse înregistrate, pornind cu înregistrare Start of Authority (SOA).
SOA identifică numele de domeniu al zonei. Mai există și un nume de server al unui server primar pentru
acea zonă. Pot exista și nume de servere secundare. Aceste nume de servere sunt utilizate pentru a identifica
serverele care sunt autorizate. După aceste înregistrări sunt înregistrările de resurse care vor asocia adrese IP
numelor de obiecte.
Formatul unui înregistrări de resurse este următorul:
Figura 9.13: Formatul unei înregistrări de resurse

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).

Figura 9.14: Formatul mesajelor protocolului DNS


Formatul antetului
Antetul este secțiunea întotdeauna prezentă și are o lungime fixă de 12 octeți. Alte secțiuni sunt de
lungime variabilă.
- ID: un identificator de 16 biți atribuit de program. Acest identificator este copiat în răspunsul corespunzător
dat de serverul de nume și poate fi utilizat pentru a face diferența dintre răspunsurile la mai multe cereri
aflate în rezolvare.
- Parametri: o valoare de 16 biți având următorul format:

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.

De exemplu, numele de domeniu mydiv.mycorp.com este codificat cu următoarele câmpuri: X'05'


"mydiv" X'06' "mycorp" X'03' "com" X'00'. Astfel, intrarea din secțiunea întrebare pentru mydiv.mycorp.com
necesită 22 octeți, 18 pentru a stoca numele domeniului și câte 2 pentru câmpurile Qtype și Qclass.

- Secțiunile răspuns, autoritate și resurse adiționale.


Aceste trei secțiuni conțin un număr variabil de înregistrări de resurse. Numărul este specificat în câmpul
corespunzător din antet. Înregistrările de resurse au următorul format (Figura 9.16):
Figura 9.16: Formatul înregistrărilor de resurse DNS
Unde câmpurile din fața câmpului TTL au aceeași semnificație ca și pentru o interogare, iar:
- TTL - O valoare de 32 de biți reprezentând durata de viață a înregistrării. Definiște durata cât această
înregistrare poate fi privită ca validă.
- Rdlength - Lungime pe 16 biți a câmpului Rdata.
- Rdata - Un șir de lungime variabilă a cărui interpretare depinde de câmpul Type.

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).

9.3.1. Actualizarea dinamică în DDNS


Formatul mesajului DNS (Figura 9.14) a fost proiectat pentru interogarea statică a unei baze de date.
Au fost făcute modificări pentru a face actualizări, rezultând mesaje numite UPDATE DNS, ilustrate în
Figura 9.17. Aceste mesaje adaugă sau elimină înregistrări de resurse DNS, permit actualizărilor să devină
efective fără a fi necesară o reîncărcare a DNS.

Figura 9.17: Formatul mesajului DDNS UPDATE

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.

9.3.2. Transferul incremental de zonă în DDNS


A fost introdus un tip de mesaj IXFR DNS care permite transferuri incrementale ale datelor de zonă
DNS între servere primare și secundare. Cu alte cuvinte, când are loc o actualizare în datele unei zone, numai
acele modificări vor fi copiate în alte servere DNS care mențin o copie a datelor zonei, nu se va copia
întreaga bază de date (așa cum se întâmpla în cazul unui mesaj de tip AXFR DNS.
Formatul unei cereri IXFR este exact același cu cel al unei cereri DNS obișnuite, dar cu tipul cererii
setat IXFR. Secțiunea answer a răspunsului va fi compusă din secvențe diferență (difference sequences).
Fiecare listă de secvențe diferență este precedată de versiunea curentă a SOA a serverului și reprezintă
o actualizare a zonei. Similar, fiecare secvență diferență este precedată de o versiune SOA (indicând în ce
versiune se face actualizarea), secvențele diferență fiind ordonate de la cea mai veche la cea mai nouă. După
recepționarea mesajului, serverul poate face actualizarea urmărind istoria versiunii listată în secțiunea answer
a IFXR.
De exemplu, presupunem că un server are următoarea zonă:
MYZONE.MYDIV.MYCORP IN SOA MYHOST.MYDIV.MYCORP
(1 600 600 3600000 614800)
IN NS MYHOST.MYDIV.MYCORP
MYHOST.MYDIV.MYCORP IN A 10.1.2.3
OTHERHOST.MYDIV.MYCORP IN A 10.2.3.4

Otherhost.mydiv.mycorp este îndepărtat, și în versiunea 2, thishost.mydiv.mycorp este adăugat, lăsând zona


de forma:

MYZONE.MYDIV.MYCORP IN SOA MYHOST.MYDIV.MYCORP


(2 600 600 3600000 614800)
IN NS MYHOST.MYDIV.MYCORP
MYHOST.MYDIV.MYCORP IN A 10.1.2.3
THISHOST.MYDIV.MYCORP IN A 10.2.3.5

Dacă serverul primește o cerere IXFR, va trimite ca răspuns următoarea secțiune answer:

MYZONE.MYDIV.MYCORP IN SOA serial=2


MYZONE.MYDIV.MYCORP IN SOA serial=1
OTHERHOST.MYDIV.MYCORP IN A 10.1.2.4
MYZONE.MYDIV.MYCORP IN SOA serial=2
THISHOST.MYDIV.MYCORP IN A 10.2.3.5
MYZONE.MYDIV.MYCORP IN SOA serial=2

S-ar putea să vă placă și