Structura unui nume de domeniu
Te-ai întrebat vreodată cum se face “navigarea” pe internet?
În principiu, pentru tine, ca și utilizator, doar deschizi o aplicație de tip browser de internet, unde scrii o adresă și apeși enter, iar browser-ul te duce pe pagina ce reprezintă adresa respectivă.
Adresa asta, pe care tu o scrii în browser, se numește domeniu, sau nume de domeniu și este unicat pe tot internetul.
Numele de domeniu, e alcătuit din 2 părți, să luăm ca exemplu “developmentfactory.ro”.

Cele 2 părți ale acestei adrese sunt pe de o parte “developmentfactory” și pe de altă parte “ro”.
Prima parte, în acest caz “developmentfactory”, dar poate fi la fel de bine și “google” să spunem, se cheamă “second level domain”, sau domeniu de nivel secundar. Iar cea de-a doua parte, “ro”, se cheamă “top level domain” sau domeniu de nivel înalt.
Și e de cele mai multe ori reprezentată de codul țării de proveniență al domeniului, dar nu e obligatoriu.
Noi folosim aceste nume de domenii pentru a face browsing pe internet, dar de fapt, pentru a ajunge la serverul ce găzduiește fișierele sursă ale unui site, se folosește adresa IP a acestuia și nu numele de domeniu.
Domeniul e doar pentru noi, oamenii, pentru a putea reține mai ușor adresele site-urilor care ne interesează, pentru că dacă în loc de “google.com” ar fi nevoie să scrii în browser “142.251.208.110”, nu cred că ți-ar fi atât de ușor să o reții.
Mai mult decât atât, IP-urile care răspund la interogarea unei anumite adrese de domeniu se pot schimba din varii motive și atunci chiar ar deveni imposibil pentru noi ca oameni să “operăm” pe internet.
Ce este o adresă IP
Acum, poate te întrebi cum sunt transmise datele prin intermediul internetului. Știm că internetul e o rețea enormă alcătuită din mai multe rețele mai mari, sau mai mici, dar cum anume reușesc datele să ajungă dintr-o parte în alta a rețelei?
Ei bine, transmiterea datelor se face folosind protocolul denumit “Internet Protocol”, de al cărui acronim sunt sigur că ai auzit: IP.
IP-ul reprezintă modalitatea prin care datele sunt transmise prin rețele, sursa și destinația datelor fiind date de ceea ce poartă numele de “adrese IP”.
Adresele IP sunt compuse din mai multe serii de numere separate prin puncte și sunt cele care indică nodul din rețea unde trebui să ajungă datele.
Ele sunt unicate la nivelul rețelei, astfel că nu pot exista conflicte și datele vor ajunge exact acolo unde e nevoie.
Pentru a fi transmise prin rețea, datele sunt fragmentate sub forma unor “pachete”, transmise prin rețea și reasamblate la destinație, întrucât nu se pot transmite fișiere atât de mari pe cât se folosesc în zilele noastre.

Spre exemplu, transmiterea datelor necesare pentru vizualizarea unui video pe YouTube la rezoluții mari poate ajunge până la câțiva GB de date transmise.
Sistem al numelor de domeniu - DNS
Ok și cum se știe atunci către ce adresă IP să se direcționeze cererea atunci când încercăm să accesăm un anumit domeniu, ai putea întreba.
Ei bine, aici intră în joc ceea ce poartă numele de DNS sau “Domain Name System” sau în limba română, “sistem al numelor de domeniu”.
Acesta reprezintă sistemul prin care se face asocierea adreselor IP cu aceste nume de domenii.
E ca o agendă de telefon a internetului, dacă vrei.
Așa cum probabil nu știi din minte numerele de telefon ale persoanelor pe care le apelezi de pe telefonul mobil, ci folosești numele definite în agendă, așa și în cazul internetului, nu e nevoie să ții minte adresele IP ci doar numele de domeniu.
Cum se face identificarea unui nume de domeniu
Pentru a face delegarea către adresa IP corespunzătoare, atunci când se încearcă accesarea unui anumite site cu un anume domeniu, un server DNS este apelat.
Acest server poate afla informații despre toate domeniile existente, astfel încât îți face automat delegarea către adresa IP corespunzătoare domeniului la care vrei să ajungi, în mod automat.
De multe ori, serverul DNS la care cererea ta ajunge, nu știe în mod direct adresa IP a tuturor site-urilor existente pe internet, dar în acest caz poate delega cererea în mod recursiv la alte servere din întreaga lume, până când adresa IP este identificată.

Sursele pentru identificarea unui nume de domeniu
Totuși, apelarea unui server DNS nu se întâmplă întotdeauna.
În funcție de domeniul pe care încercăm să-l accesăm, e posibil ca adresa IP a domeniului respectiv să fie adusă dintr-o stocare temporară de tip cache, pentru a scurta durata acestui proces și a reduce numărul de apeluri asupra serverelor DNS.
Uite care sunt pe rând pașii pentru identificarea unui nume de domeniu:
- Se interoghează stocarea cache din browser
- Se interoghează stocarea cache din sistemul de operare
- Se apelează serverul DNS al furnizorului de internet
- Se deleagă cererea în mod recursiv la servere DNS din întreaga lume până se identifică serverul “autoritar”
În momentul în care accesezi un domeniu pentru prima dată adresa lui IP va fi salvată și în stocările cache.

Înregistrarea unui nume de domeniu
Înregistrarea unui nume de domeniu se face prin intermediul unui serviciu ce poartă numele de “domain registrar”, sau registru al numelor de domenii.
Spre exemplu, pentru a deține un nume de domeniu “.ro”, va trebui să-l achiziționezi de la ROTLD, care este registrul oficial pentru domeniile “.ro” în România.
Desigur, poți achiziționa un domeniu “.ro” și din alte surse, dar înregistrarea lui se va face tot prin intermediul ROTLD, doar că va fi intermediată de sursa respectivă.
În principal, toți furnizorii de servicii de găzduire online vând și servicii de achiziție a unui nume de domeniu.
În momentul în care ai achiziționat un nume de domeniu, ai nevoie, pe lângă înregistrarea lui în registru, și de o găzduire a serverelor de nume, care vor juca rolul serverului DNS autoritar pentru domeniul tău.
Adică aceea va fi agenda care va stoca informațiile necesare, cum ar fi adresa IP a serverului gazdă, pentru ca domeniul tău să fie accesibil online.
Serverele de nume nu vor fi cele care vor găzdui fișierele site-ului tău, ci vor deține doar datele despre cum să delege cererile către un alt server gazdă ce deține fișierele, iar acesta poartă numele de server web.
Ca o paranteză, ROTLD nu oferă și găzduirea de servere de nume (nameserver), ci doar achiziția numelui de domeniu. Găzduirea serverelor de nume se va face în altă parte, iar în ROTLD vei configura doar adresele serverelor.
Uite cum arată întregul flux.

Concluzie
Una din cele mai importante abilități pentru orice dezvoltator software care lucrează cu aplicații web e înțelegerea infrastructurii și modului de operare a web-ului.
Poate dacă activitatea ta se rezumă la front-end development nu te vei lovi de detaliile astea atât de des, dar e întotdeauna bine să înțelegi cum poți depana o astfel de problemă chiar și așa.
La urma urmei, trebuie să înțelegi și cum să găzduiești un site web, sau cum să depanezi o problemă legată de asta, chiar dacă te ocupi doar de partea de front-end, pentru că un un site care nu e accesibil și pentru alții nu aduce valoare nimănui.
Atât pentru azi, pe data viitoare.