[successivo] [precedente] [indice]

DNS - Struttura del Servizio

Il Domain Name System (DNS) e' un database distribuito usato dagli applicativi TCP/IP per la mappatura da nomi hast ad indirizzi di Internet.

Non esiste un singolo sito in Internet che conosca tutte le informazioni del database, invece ogni sito mantiene la sua porzione di database limitata alla descrizione del sito, e gestisce un server di questa porzione di database, che puo' essere interrogato da altri sistemi in Internet.

Gli applicativi accedono al servizio DNS tramite un resolver. Questo non e' un programma specifico, ma e' invece un insieme di funzioni di programmazione predisposte a contattare il server DNS, che vengono linkate nell'applicativo stesso. Molto spesso le funzioni o subroutine che implementano il resolver sono raccolte in una libreria dinamica.

Il resolver non e' quindi patre dei protocolli TCP/IP del kernel, ma dei protocolli applicativi. E quindi compito degli applicativi convertire il nome host in indirizzo IP prima di invocare i protocolli TCP o UDP.

I concetti ed i dettagli implementativi del DNS sono contenuti nei documenti RFC1034 ed RFC1035. L'implementazione DNS piu' comune per UNIX si chiama BIND - Berkeley Internet Domain Server, ed il nome del programma e' di solito named.

Domini DNS

Lo spazio dei nomi del DNS e' gerarchico ed implementato in una struttura ad albero. Ogni nodo ha un'etichetta di lunghezza massima 63 caratteri. La radice e' un nodo speciale senza etichetta. Non vi e' differenza nelle etichette tra maiuscole e minuscole.

Il nome di dominio e' la sequenza di etichette a partire dal nodo verso la radice, usando il carattere 'punto' (.) come separatore di etichetta.

Ogni nodo dell'albero DNS deve avere un nome di dominio univoco. Le etichette possono essere ripetute in locazioni diverse dell'albero (stesse regole dei nomi di files e directories in un file system).

Un nome dominio che termina con un punto si dice nome di dominio completo o Fully Qualified Domain Name (FQDN). Se il nome di dominio non termina con un punto si presume che non sia completamente qualificato, e che manchino quindi etichette di nodi.

Un nodo dell'albero direttamente sotto il nodo radice si chiama dominio ad alto livello (top-level domain). Questi sono divisi in tre aree:

  1. arpa - dominio speciale usato per le mappature da indirizzi IP a nomi
  2. domini generici - sono 7 e sono identificati da codici a tre caratteri
  3. domini nazionali - sono a due caratteri e definiti dallo standard ISO 3166.

Non vi e' nessuna implicazione che i domini generici siano riservati agli Stati Uniti, e difatti esiste anche il dominio nazionale US.

Molte nazioni (Gran Bretagna, Germania, ecc.) suddividono il dominio nazionale ad alto livello in domini a secondo ed anche a terzo livello predeterminati. Altre nazioni non lo fanno (Italia).

Il concetto principale amministrativo del DNS e' la delega di responsabilita'. L'organizzazione principal del DNS, il Network Information Center (NIC) amministra solo la porzione dell'albero che copre i domini ad alto livello e delega la responsabilita' amministrativa dei sottodomini a singole organizzazioni nazionali.

Si definisce zona e' definita come la porzione dell'albero DNS sottoposta ad amministrazione singola. Molti domini a secondo livello sono separati in zone. Ogni zona ha una persona amministratrice responsabile, che si cura dell'allocazione dei nomi ed indirizzi della zona e della manutenzione del database e configurazione delle macchine server.

Un name server e' un programma e una macchina che ha autorita' su una o piu' zone E' necessario configurare per ogni zona un name server primario ed alcuni (minimo due) name server secondari. Il primario ed i secondari devono essere indipendenti e ridondanti, in modo da offrire un servizio continuativo.

Il server primario contiene il database DNS vero e proprio in file di configurazione, i server secondari contattano il server primario a intervalli regolari (p.es. ogni 3 ore) ed eseguono un zone transfer, cioe' il download del database corrente.

Se un server che viene interpellato da un resolver, non conosce l'informazione richiestagli, puo' agire in uno di due modi:

La maggior parte dei server compiono una ricerca ricorsiva. Esiste un certo numero di server DNS ad alto livello, mantenuti dal NIC, i 'root' server. Ogni server di zona deve possedere la lista completa dei root server e contattare loro per risolvere richieste non locali. I root server possiedono la lista completa di tutti i server di zona al primo livello, ciascuno dei quali possiede la lista dei server a secondo livello nel proprio sottoalbero, e cosi' via fino ad arrivare ad un server autorevole per la zona in cui si trova il nome di dominio richiesto. Quest'ultimo server fornisce il messaggio di responso con l'informazione desiderata direttamente al resover richiedente originale.

Ogni server mantiene una cache di informazioni risolte recentemente, per alleviare il numero di messaggi DNS scambiati in rete.