PROGRAMMIAMO
Internet - Domain Name Server
Approccio centralizzato e approccio distribuito

Uno dei meccanismi fondamentali per il funzionamento di internet è la corrispondenza fra le stringhe mnemoniche che identificano gli host in rete (host name, es. www.altervista.org) e gli indirizzi IP fisici degli host stessi. Come abbiamo già visto questa "traduzione" da un tipo di indirizzo all'altro viene fatta dai server DNS.

Abbiamo in passato paragonato il server DNS a un enorme elenco telefonico, contenente tutte le corrispondenze fra i nomi (host name) e gli indirizzi IP. In effetti agli albori di internet le cose funzionavano esattamente così: c'era un unico file contenente tutte le coppie host-IP e questo file era salvato su un computer che fungeva da server per gli indirizzi di rete.

Questo tipo di gestione centralizzata comporta evidenti problemi, quando le dimensioni della rete crescono. Infatti l'amministratore di rete dovrebbe occuparsi di aggiornare tale file ogni volta che un nodo verrà aggiunto o eliminato dalla rete. Un aggiornamento manuale non è fattibile per reti medio-grandi e chiaramente bisogna implementare un meccanismo di aggiornamento automatico dell'elenco quando si aggiungono o si eliminano nodi dalla rete.

Anche l'approccio automatizzato tuttavia mostra rapidamente i suoi limiti al crescere delle dimensioni della rete. Infatti il traffico di rete verso il server aumenterebbe esponenzialmente e ben presto porterebbe a una saturazione della rete stessa. Inoltre diventa difficile e poco pratico aggiornare l'elenco degli host in una rete molto grande, poiché tale elenco verrebbe modificato molto spesso e ci sarebbe anche il problema di come fare per comunicare in modo efficiente al server tutti gli aggiornamenti.

In sintesi, un approccio centralizzato presenta il difetto di una scarsa scalabilità. Il termine scalabilità, nelle telecomunicazioni, nell'ingegneria del software, in informatica e in altre discipline, si riferisce, in termini generali, alla capacità di un sistema di "crescere" o diminuire di scala in funzione delle necessità e delle disponibilità. Un sistema che gode di questa proprietà viene detto appunto scalabile.

Una soluzione senz'altro più scalabile consiste nell'approccio distribuito: invece di usare un unico server centralizzato, le sue funzioni possono essere svolte da più server distribuiti sulla rete. Tali server possono essere organizzati gerarchicamente in modo tale che al livello più alto un piccolo gruppo di server mantenga informazioni riguardo a categorie piuttosto ampie (per esempio un server potrebbe contenere l'elenco dei server che a loro volta contengono i database di ogni singolo Paese), mentre le informazioni dettagliate vengono mantenute al livello più basso della gerarchia.

Questa è appunto la struttura dei server DNS. Incontreremo qui un ulteriore esempio della struttura gerarchica di internet, cui abbiamo più volte fatto cenno.

 

Come funzionano i server DNS

Come abbiamo accennato, prima dell’introduzione del sistema DNS, la gestione delle corrispondenze tra indirizzi IP e nomi mnemonici di tutte le macchine collegate, era affidata allo Stanford Research Institute Network Information Center (SRI-NIC) che si preoccupava di mantenere tutte le corrispondenze in un singolo file, chiamato HOSTS.TXT. Tutti i computer periodicamente accedevano a questo file per ottenere una copia aggiornata. Con la crescita esponenziale del numero di sistemi collegati ad Internet, questa gestione è diventata inaccettabile a causa del numero di accessi che non poteva più essere gestito oltre che del numero di sistemi da memorizzare, e così fu introdotto il DNS. Si trattava in sostanza di un approccio centralizzato alla gestione degli indirizzi e, in quanto tale, piuttosto inefficiente.

Il DNS è nella pratica un database distribuito e ciò significa che non esiste un unico computer in tutto il mondo che è in grado di risalire all’indirizzo di IP di un altro collegato ad Internet a partire dall’indirizzo mnemonico. Le informazioni sono distribuite su migliaia di computer, i server DNS appunto. Ognuno di questi server è responsabile di una certa porzione del nome, detta dominio. I server sono organizzati secondo una struttura gerarchica ad albero che presenta molta somiglianza con la struttura dei file e delle cartelle sui nostri computer. Il suo nome è albero dei domini.

Vediamo passo passo come avviene il recupero dell'indirizzo IP corrispondente a un nome di dominio (per esempio www.altervista.org):

  1. Al momento della richiesta per un determinato indirizzo, come ad esempio www.altervista.org, il nostro browser controlla per prima cosa se l'indirizzo IP è già presente nella sua memoria locale (cache), in quanto è già stato cercato precedentemente. Se l'indirizzo è presente la ricerca è conclusa.

  2. Se il browser non possiede nella propria cache l'indirizzo cercato, esso interroga (effettua una query) il server DNS associato alla nostra connessione: può essere un server DNS messo a disposizione dell'ISP che ci fornisce l'accesso a Internet o un altro server memorizzato sul nostro router o sulla scheda di rete del nostro PC. Questi server DNS di primo livello vengono detti resolving DNS servers: in effetti essi non hanno un database proprio da consultare (a parte la propria cache interna), ma effettuano una ricerca nell'albero dei DNS per conto dell'utente.

  3. Se il resolving DNS server che abbiamo contattato ha l'indirizzo cercato nella propria cache (perché è già stato cercato in precedenza da noi o da altri), esso lo restituisce al nostro browser e la ricerca è conclusa.

  4. Se il resolving DNS server non conosce l'indirizzo, esso gira la query a uno dei cosiddetti root nameserver. Attualmente ci sono 13 server di questo tipo al mondo e i loro indirizzi IP sono noti globalmente. I root nameserver non sono in grado di risolvere direttamente nomi di domini (cioè non possono dare una risposta alla nostra query), ma hanno una lista dei server che gestiscono il database per i diversi domini di primo livello (es .com, .org, .net, .it). Pertanto il root nameserver contattato (per nostro conto) dal resolving DNS server, fornisce a quest'ultimo l'indirizzo IP del server DNS che gestisce il dominio .org (quello del sito www.altervista.org che stiamo cercando di contattare nel nostro esempio).

  5. A questo punto il nostro resolving DNS server contatta il server che gestisce il dominio .org. Se quest'ultimo server non conosce la risposta, esso fornisce al nostro server l'indirizzo IP del server DNS che gestisce il dominio altervista.

  6. Finalmente il resolving DNS server contatta il server che gestisce il dominio altervista e da questo ottiene l'indirizzo IP di www.altervista.org che viene passato al nostro browser. Questo indirizzo IP verrà conservato per un certo tempo nella cache del server, in modo che eventuali altre richieste sullo stesso sito potranno essere evase molto più rapidamente, senza dover seguire tutti i passaggi precedenti.

 

Conoscere l'indirizzo del server DNS

Per conoscere gli indirizzi dei server DNS utilizzati dal nostro PC in Windows possiamo aprire una finestra di comandi e digitare ipconfig /all.  I server DNS vengono visualizzati alla voce Server DNS come mostrato in figura:

 

Un altro modo è aprire le proprietà della scheda di rete e visualizzare qui le stesse informazioni:

Come si vede vengono visualizzati due indirizzi di server DNS, uno preferito e uno alternativo (nel caso il primo non fosse disponibile). 

 

Una guida per cambiare il proprio server DNS sul PC o sul router domestico 

Video lezione 8: server http e dns

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it