IL DNS




DNS (Domain Name Service) è un protocollo, concepito nel 1982, che permette di ottenere l'indirizzo IP di un host  partendo dal nome con cui l'host è noto sulla rete. A questo scopo DNS utilizza un database distribuito che organizza i nomi degli host secondo un modello gerarchico ad albero. Ogni nodo dell'albero (che non sia una foglia) costituisce un'unità chiamata dominio. Un dominio a sua volta può contenere sottodomini , che a loro volta possono contenerne altri e così via. DNS usa generalmente UDP alla porta 53 salvo il caso in cui i dati superano il limite di 512 byte imposti da UDP.  Nel qual caso usa TCP

Sotto un dato dominio vengono raggruppati tutti i nodi che soddisfano ad un qualche criterio comune di organizzazione.

La struttura DNS è illustrata schematicamente in figura

 

Ogni nodo, ad esclusione della radice, e del 1° livello, è contrassegnato da un nome di max 63 caratteri e deve essere unico al suo livello. 

I nomi di domini di primo livello, (TLD ,Top Level Domain) sono di 3 o 2 caratteri. Essi comprendono: 

I nomi sotto un dominio sono registrati su speciali server chiamati Name Server o Server DNS Ogni server  DNS conosce i nomi e gli indirizzi di tutte le macchine del livello sottostante. Per es. un server .com conosce tutte le macchine con dns del tipo qualche_nome.com cioè del secondo livello e così via. 
I nomi associati alle foglie dell'albero denotano i computer sulla rete. Per es. www indica un server WEB, ftp un server FTP. mail un server di posta. 
Il nome completo di un dominio è chiamato FQDN (Fully Qualified Domain Name).

Anche la gestione dei nomi viene effettuata "gerarchicamente". Ogni dominio è gestito infatti da una organizzazione. 

I nomi di livello 1 (Top level domain) vengono gestiti da InterNIC. Quelli dei livelli inferiori vengono gestiti da altri enti su delega. Per esempio:

il dominio .it è amministrato dalla Registration Authority Italiana su delega di InterNIC,
il dominio wind.it  a sua volta viene gestito da Wind su delega dalla Registration Authority
il dominio net.wind.it è gestito da Net su delega da Wind. 

L'autorità centrale al di sopra di queste organizzazioni, responsabile del coordinamento e della gestione del sistema DNS, è Internet Assigned Numbers Authority (IANA).

Il DNS risulta quindi suddiviso in zone , ciascuna controllata da un max si 10-12  Server DNS. Questi server  mantengono tutte le informazioni sulla loro zona di competenza e vengono perciò chiamati Server Autoritativi.  

I server autoritativi associati alla radice vengono chiamati root name server. Essi contengono tutte le informazioni sui domini top-level  
Le  informazioni relative ad una determinata zona si trovano memorizzate in strutture chiamate Resource Record (RR).  Un RR ha la seguente struttura

                                     
Nome TTL Classe Tipo RDATA
 

A seconda del valore del campo Tipo, RDATA conterrà informazioni diverse. Specificatamente

Nella figura è riportato un esempio di file contenente RR

 

Le righe da 1 a 7 contengono un RR di tipo SOA per il dominio mydomain.com, Vengono specificati il nome del Server autoritativo e una lista di informazioni tecniche fra cui TTL.

La riga 8 è un RR di tipo NS e come si vede viene specificato lo stesso server   

La riga 9 è un RR di tipo MX, con il numero di preferenza, 10, e nome del server di  posta

le righe 10 11 12 sono RR di tipo A e specificano gli indirizzi IP dei due server e di un computer di nome "host"  appartenente dominio 

Per comprendere il meccanismo che porta all'individuazione dell'indirizzo IP di un nodo supponiamo che qualcuno  intenda collegarsi dalla rete dell'istituto con www.tiscali.it

Per rendere più efficiente questo meccanismo, ogni server DNS memorizza nella propria cache l'informazione sul dominio di appartenenza, in modo tale da girare subito una successiva richiesta.

Dall' esempio  su esposto distinguiamo due tipi di richiesta:

DNS è un protocollo client- server che utilizza UDP (porta 53). Il client, chiamato resolver, effettua richieste sempre ricorsive mentre il server è ricorsivo nei confronti del client  e iterativo verso i server di livello più alto.