Vezi: RFC-1034 si RFC-1035
Problema: adresele IP nu sunt adecvate pentru ca utilizatorii umani sa lucreze direct cu ele:
Solutia: un asociem fiecarui calculator un nume, care sa nu depinda de structura fizica a retelei. Spatiul de nume este organizat ierarhic. Ierarhia spatiului de nume reflecta structura administrativa a retelei: un administrator are posibilitatea de-a crea nume noi in zona pe care o administreaza.
Mai trebuie organizata o "carte de telefon" care sa realizeze corespondenta intre numele unui calculator (nume dat de utilizatorul uman) si adresa IP (necesara mecanismelor din infrastructura retelei).
Spatiul de nume este arborescent. Alocarea lui se face prin delegare: daca o institutie sau organizatie obtine un nume, de exemplu ubbcluj.ro, poate aloca singura, fara acordul vreunei organizatii centrale, nume subordonate, de exemplu zeus.ubbcluj.ro, cs.ubbcluj.ro, etc.
Domeniile din radacina sunt: com, edu, gov, net, mil, org, int, biz, info, name, pro, domeniile de tara, plus un domeniu special: arpa
Fiecarui nume i se asociaza inregistrari de forma
(nume, tip, clasa, valoare).
Clasa se foloseste pentru a distinge informatii necesare pentru mai multe tipuri de retele; In ceea ce ne priveste clasa este IN (internet).
Tipul arata ce informatie este furnizata. Exista urmatoarele tipuri:
Domeniul in-addr.arpa se foloseste pentru stabilirea corespondentei de la adresa IP la nume. Pentru a afla numele unei masini, se scrie adresa IP punand in ordine inversa grupele. De exemplu, pentru a afla numele masinii cu adresa 193.231.20.34 vom cauta o inregistrare cu tipul PTR pentru numele 34.20.231.193.in-addr.arpa.
Server de nume este un proces care dispune de o baza de date ce cuprinde inregistrari DNS. In general, un server de nume raspunde de o zona de nume, detinand toate inregistrarile pentru numele din zona de responsabilitate, si in plus poseda inregistrari suplimentare, legate in general de zonele adiacente - zona parinte si zonele fii.
Serverul raspunde la cereri UDP (SOCK_DGRAM) pe portul 53.
Un program care are nevoie de adresa IP (sau alta informatie) pentru un nume aplica un algoritm de rezolvare a numelui; acest algoritm este implementat de functia de biblioteca standard gethostbyname().
Functia gethostbyname() are nevoie cel putin de o adresa IP pentru un server de nume. Serverul de nume poate sa fie responsabil pentru zona din care face parte numele cerut, caz in care da un raspuns direct; in caz contrar exista mai multe variante:
Se vede de aici ca un server de nume poate retine temporar inregistrari furnizate de alte servere si pentru care el insusi nu are autoritate. Pentru a sti cat timp le poate considera valide, fiecare inregistrare are atasata o perioada de valabilitate (TTL = Time To Live). In timpul perioadei de valabilitate inregstrarea este considerata corecta si furnizata ca raspuns la o noua cerere. Dupa expirarea perioadei de valabilitate, inregistrarea este stearsa, si o noua cerere duce la o noua cautare a raspunsului.
De retinut:
Trimiterea directa a cererilor pentru serverele de nume se poate face cu comanda unix nslookup.
Protocolul telnet serveste simularii unui terminal conectat la un sistem de calcul.
Terminalul adevarat:
Mecanismul telnet simuleaza pe un calculator din retea un terminal conectat la serverul telnet.
Etape:
De remarcat ca, datorita pseudo-terminalului, procesele login, shell, precum si comenzile utilizator, se comporta exact ca si cand ar fi lansate de pe un terminal adevarat.
rlogin este un sistem similar cu telnet-ul, difera prin schema de autentificare folosita. Astfel, se presupune ca utilizatorul este deja autentificat pe masina pe care ruleaza comanda client (rlogin), si ca masina server are incredere in autentificarea realizata de masina client. Se presupune in cele ce urmeaza ca ambele masini, client si server, ruleaza sisteme de operare de tip Unix.
Desigur, este necesar ca masina server sa afle din ce cont (de pe statia locala) a fost lansata comanda rlogin. In acest scop nu se poate folosi de informatiile transmise de comanda rlogin, deoarece utilizatorul ar fi putut sa scrie propriul program care sa "vorbeasca" protocolul rlogin, iar serverul nu are posibilitatea de a deosebi comanda rlogin "adevarata" de un program oarecare scris de utilizator. In acest scop, pe masina client se ruleaza un program server numit identd care ofera informatii cu privire la procesul care detine un anumit port.
Autentificarea efectuata de serverul rlogin decurge deci dupa cum urmeaza:
Comanda rsh actioneaza ca si comanda rlogin, dar determina serverul sa nu comunice cu shell-ul printr-un pseudo-terminal, ci direct printr-o pereche de legaturi pipe, si in plus paseaza shell-ului o comanda specificata ca argument comenzii rsh.
Avantajul rlogin/rsh fata de telnet este faptul ca autentificarea nu necesita transmiterea unei parole, care sa riste sa "transpire". Dezavantajul este ca un intrus care fie sparge masina client fie reuseste sa-i falsifice adresa IP are automat acces la toate conturile de pe masina server. La ora actuala, atat telnet-ul cat si rlogin-ul sunt considerate prea nesigure pentru a fi folosite in orice context cu exceptia poate a unei retele mici, izolate bine de exterior, si in care utilizatorii au incredere unul in altul - conturile servind doar pentru protectia contra greselilor.