DNS (Domain Name System)

Come tutti ben sanno Internet è una grande rete di calcolatori collegati tra loro nei modi più vari che esistono nell'ambito delle LAN e delle WAN. Il protocollo impegnato da Internet è il TCP/IP, che a sua volta si appoggia al livello fisico della rete sottostante, convertendo l'indirizzo fisico univoco della macchina in un indirizzo IP, della forma XXX.YYY.ZZZ.KKK a 32 bit. In questo modo, ogni computer collegato ad Internet possiede un indirizzo IP, indipendente dalla rete a cui è allacciato. Il problema nasce quando all'interno di una rete bisogna ricordare a memoria ogni singolo indirizzo IP appartenente ai PC a cui ci si vuole collegare. La situazione diventa ancora più ingestibile se ci si affaccia in Internet dove i Computer in rete sono migliaia e tutti con il proprio indirizzo IP. LA soluzione a tutto ciò si ottiene creando un nuovo livello di indirizzamento che converta un indirizzo alfanumerico come il classico URL che si inserisce nel proprio browser per la navigazione, in un indirizzo IP.

www.Nome1.it --- 212.100.100.6

Incaricato di effettuare questa conversione è il DNS (Domain Name System o Domain Name Server). Se ad esempio si inserisce nel proprio browser l'URL www.Nome1.it, esso contatterà via rete il DNS per ricevere la conversione del nome in un indirizzo IP. Il DNS risponderà inviando al Browser l'indirizzo IP 212.100.100.6. A questo punto il Browser potrà contattare la macchina Nome1 e stabilire la connessione.
Inizialmente il servizio conversione Nome > Indirizzo era affidato a macchie apposite, ognuna delle quali contenente una copia completa del database dei nomi. La situazione cominciò a diventare ingestibile non appena Internet iniziò ad allargarsi. I problema era mantenere aggiornate tutte le copie del database e le grandi dimensioni che quest'ultimo andava a raggiungere. Una soluzione a questo inconveniente, fu quella di dividere i compiti della conversione tra le varie macchine, in modo tale che ogni macchina gestisse un "sotto albero" dei nomi.
La situazione teorica finale è stata quindi quella di gestire lo spazio dei nomi come un immenso albero. Ogni nodo dell'albero (tranne le foglie) costituisce un dominio, e deve garantire la conversione dei nomi a se sottostanti. Analizziamo un piccolo esempio pratico: supponiamo che un PC  (PC1a.dna.prino.it) richieda la conversione in indirizzo IP del nome  del computer PC1b.dnb.primo.it. Esso manderà la richiesta al DNS del nodo dna, che a sua volta la passerà al DNS del nodo primo. Quest'ultimo  passerà la richiesta al server DNS del nodo dnb, che restituirà l'indirizzo IP della macchina PC2 in esso registrata. Tutto questo avviene soltanto in teoria, in pratica la situazione è differente.

Praticamente un server DNS può occuparsi tranquillamente di più domini, raggruppando dentro di se più livelli del teorico albero di nomi. inoltre non è detto che il server DNS di una o più reti sottostanti sia fisicamente collegato alla rete stessa. Tutto ciò è possibile perchè il DNS nonè nient' altro che un database in rete, e come tale può trovarsi collegato alla rete a cui fa riferimento in tutt'altra parte del mondo, dando per scontato di conoscere l'indirizzo IP del server DNS altrimenti sarebbe tutto inutile. Essendo il DNS un database, è possibile anche effettuare la conversione inversa, da indirizzo IP a nome o nomi dell'host corrispondente, fornendo anche informazioni sul tipo di macchina, di sistema operativo, ecc.

Il principio di conversione del DNS si basa su tre elementi chiave:

Il Local Resolver
Il Server di Nomi
I Resource Records

Il Local Resolver

Il Local Resolver è un piccolo programmino spesso richiamato da una API del sistema operativo. Questa API, può essere inserita da un programmatore all'interno del codice del proprio programma, e consente di interrogare il Server DNS e ricevere indietro le informazioni richieste.

Il Server di Nomi

Il Server di Nomi è un particolare programma che gira su una macchina della rete e che si mette in ascolto sulla porta 53 ed  aspetta eventuali connessioni TCP/IP o pacchetti UDP. Una volta ricevuti i dati, elabora le richieste e rinvia al mittente la risposta. Il Server dei nomi può a sua volta dialogare con altro Server di nomi collegati su altre reti, diventando a sua volta un Local Resolver. Quest'ultima situazione si presenta nel caso in cui il Server dei nomi non possiede le informazioni richieste. Il server può anche memorizzare le risposte (che in realtà sono Resource Record) in una cache, e restituirle in materia non autoritaria, ovvero marcandole come non di sua competenza, ma ugualmente attendibili.

I Resource  Records

Un Resource  Records (RR) è l'entità base che un Sarver di Nomi scambia con Local Resolver. ed è composto da diversi campi che specificano il tipo di informazione contenuta, il tipo di rete, ed altri tipi di informazioni generali. I Resource  Records più importanti sono quelli che, dato un nome di un host, restituiscono l'indirizzo IP. I RR sono utilizzati sia dal server per memorizzare i dati del dominio e per trasmetterli ai Local Resorver, sia dallo stesso Local Resolver, che li usa per inviare le richieste al Server.

Formato dei messaggi 

Il formato dei messaggi nel sistema DNS è abbastanza semplice. Innanzitutto  è importante specificare che i nomi di dominio (dna.primo.it) vengono codificati  label per label (dna, primo, it). Per ogni label viene specificata la lunghezza (1 byte) seguita dai caratteri stessi. Nella rappresentazione grafica dei messaggi, i campi dei nomi di dominio sono sempre rappresentati con dei trattini, a significare che la lunghezza di tali campi è variabile. Nello stesso messaggio scambiato dal Local Resolver al Server è presente anche una sezione di domanda ed una sezione di risposta. Questo significa che il Server prende il messaggio ricevuto, analizza la sezione di domanda, e riempie la sezione di risposta, modificando però anche l'header del messaggio stesso.

Nelle situazioni normali, il server riempie solo la sezione di risposta, e marca il bit autoritario dell'header del messaggio. Può però capitare che il server possieda nella sua cache un RR proveniente da un altro server. Allora il primo può rispondere in maniera non autoritaria, indicando nella sezione di autorità il giusto Name Server a cui rivolgere la domanda per ottenere una risposta autoritaria.

Di seguito è riportato lo schema del messaggio inviato ad un Server DNS.

Il formato del messaggio è composto da un header e quattro sezioni di Domanda, Risposta, Autorità e Addizionale. Tutte contengono un certo numero di RR codificati in forma standard, tranne la prima sezione, che contiene dei RR particolari, leggermente diversi.
L' Header contiene alcune informazioni di stato, come un codice di operazione, bit di Autorità, di Ricorsione, ecc. Contiene anche il numero di RR contenuti nelle 4 rimanenti sezioni del messaggio.
Un RR di domanda contiene solo un nome di dominio, il tipo di richiesta e la casella della richiesta. Quando si inserisce un nome nel proprio browser, questo manderà alcune richieste al server DNS con QName Pippo per esempio. Le richieste avranno tutte Qtype =A (richiesta di indirizzo IP) e QClass = IN (Internet). Ovviamente i valori A e IN sono codificati nelle rfc.


 Precedente Reset.gif (944 byte)        Downlo~1.gif (17492 byte)Home