Conform regulilor internetului, fiecare zonă corespunde cu unul primar și unul sau mai multe servere secundare. Serverele secundare intră în funcțiune atunci când serverul principal este supraîncărcat sau necompletat.
Informațiile inițiale pentru serverul DNS primar sunt stocate pe discurile sale, adică sunt încărcate la pornire din fișiere. Serverele secundare primesc informații de la primar. Procesul de obținere a informațiilor de către serverul secundar de la serverul primar se numește transfer de zonă. În mod obișnuit, actualizarea secundară a informațiilor despre server (transfer de zonă) are loc o dată la fiecare câteva ore.
Serverele DNS primare și secundare sunt independente. Informațiile pe care le conțin, de regulă, sunt redundante. Scopul de a avea mai multe servere DNS în aceeași zonă este de a asigura fiabilitatea operațiunii. Un eșec în funcționarea unuia dintre serverele DNS nu va determina serviciul să se oprească complet.
Dacă serverul nu poate să satisfacă cererea, adică domeniul este în afara zonei sale, comportamentul său ulterior depinde de tipul solicitării clientului. Convertorul stabilește unul dintre cele două tipuri de solicitări. Mai întâi solicită serverului să efectueze o conversie completă. În terminologia oficială, acest tip de interogare se numește "rezoluție recursivă". Dacă clientul cere executarea recursivă și serverul nu poate efectua conversia, trebuie să acceseze serverul care poate executa solicitarea și apoi să returneze răspunsul clientului.
Interacțiunea dintre serverele DNS
Luați în considerare următorul program mic, QLookup (Quick Lookup). Acesta demonstrează pașii de bază care trebuie luați pentru a accesa serverul de nume de domeniu. Tot ceea ce este irelevant este scos din program. Numai detaliile necesare pentru a lucra cu funcțiile gethostbyaddr și gethostbyname sunt lăsate. Valorile codate greu ale variabilelor și panourile de mesaje ne eliberează de programarea interfeței de utilizator Windows. Programul este discutat în detaliu în această secțiune și aici este textul său sursă:
Listarea 1 (QLOOKUP.CPP)
Operatorul din prima linie a listare include fișierul anteturilor funcțiilor interfeței Windows Sockets - WINSOCK.DLL.
#include ".Winsock.h"
Știți că fișierul winsock.h trebuie să fie inclus în fiecare program care utilizează interfața de programare Windows Sockets. Acesta definește constantele și funcțiile prototip pentru întregul Winsock API.
Imediat după declarația care include winsock.h, există cinci operatori care specifică valorile constantelor necesare pentru muncă:
Conținutul PROG_NAME definește numele (scurtă descriere) a programului, care poate fi utilizat ulterior. Dacă decideți să schimbați numele programului, pur și simplu înlocuiți valoarea acestei constante cu alta.
Următoarele câteva linii de listare QLookup începe să definească funcția WinMain (este necesară pentru toate programele sub Windows) și este determinată de trei variabile locale: dwIPAddr, WSAData și IpHostEnt.