Telemat Lab's home page


Copyright © 1986 Universita' di Firenze. All rights reserved.

Free license available.




INTERNET & APPLICATIONS


di: D. Mariano e C. Guadalupi


Domain Name System

home pageIndicePrec.Succ.










I Nomi per le macchine



Un'architettura di rete che preveda un'estensione globale, ossia che non presupponga l'uso omogeneo di una certa piattaforma hardware (es. ethernet), e che sia in grado di evolvere nel tempo necessita di un sistema di indirizzamento universale e di un software che permetta di creare una corrispondenza tra indirizzi 'astratti' e indirizzi fisici.
L'architettura TCP/IP e' in grado di risolvere (ossia di interpretare) gli indirizzi IP e trasformarli in indirizzi hardware di basso livello quali ad esempio il numero di scheda Ethernet che, essendo unico, rappresenta un indirizzo univoco.
L'uso da parte degli utenti finali degli indirizzi IP, peraltro, e' limitante in quanto, pur dando informazioni utili sull'effettiva loalizzazione delle macchine, sono difficilmente memorizzabili.
Per comodità, dunque, ad ogni macchina sarà assegnato un nome simbolico che permetta la sua facile identificazione ed a cui corrisponderà un indirizzo IP. I nomi delle macchine saranno indicati come high-level names (nomi di alto livello), mentre i rispettivi indirizzi IP come low-level names (nomi di basso livello).
La scelta di tali nomi dovrà comunque essere oculata, per evitare che vi siano conflitti tra di essi.




Struttura gerarchica dei nomi



In un primo tempo i nomi delle macchine in Internet formavano un flat namespace (spazio dei nomi piano), in quanto essi erano semplicemente una sequenza di caratteri senza ulteriore struttura; un sito centrale, il Network Information Center (NIC), amministrava tale namespace.
Una struttura di questo tipo può però portare ad una elevata conflittualità tra i nomi che cresce all'aumentare dei siti. Inoltre, il carico di lavoro che il sito centrale dovrebbe sopportare per gestire il namespace sarebbe troppo elevato.
Si è perciò deciso di adottare una struttura gerarchica in cui si decentralizza il meccanismo di nomina, delegando l'autorità per porzioni del namespace e distribuendo la responsabilità della corrispondenza tra nomi ed indirizzi IP.
Il partizionamento dello spazio dei nomi seguirà la struttura interna di una grande azienda; ogni divisione avrà una certa autonomia decisionale e potere di delegare l'autorità a sottodivisioni.




Delega dell'autorità per i Nomi



Lo spazio dei nomi è partizionato in divisioni alle quali è delegata l'autorità. Generalmente la sintassi dei nomi sarà del tipo:

local.site

dove site è il nome del sito autorizzato dall'autorità centrale e local è la parte del nome controllata dal sito.
Ogni sito, a sua volta, potrà decidere di dividere lo spazio dei nomi su cui detiene l'autorità in gruppi; tali sottodivisioni danno luogo ad una sintassi del tipo:

local.group.site

Il sistema telefonico adotta una struttura gerarchica di questo tipo.
Bisogna comunque chiarire che tale meccanismo di nomina che si fonda sulla delega dell'autorità è svincolato dalla struttura fisica delle connessioni di rete: due diverse sottodivisioni possono essere connesse allo stesso troncone di rete o viceversa.




Domain Name System per TCP/IP



Il meccanismo che implementa una gerarchia dei nomi di macchina in Internet è detto Domain Name System (DNS).
In primo luogo il DNS definisce la sintassi dei nomi e come deve essere delegata l'autorità. Un Domain Name è una sequenza di sottonomi separati dal delimitatore punto, dove ognuno di essi, che può rapprasentare un sito od un gruppo, è detto label. Per esempio:

die.unifi.it

contiene tre labels: die, unifi ed it. Il suffisso di una label è detto domain; nell'esempio precedente il domain di più basso livello è die.unifi.it, quello di secondo livello unifi.it e quello di massimo livello it.
Se si è utenti di una rete locale non connessa ad Internet, si potrebbero scegliere dei nomi per le macchine che non rispettano tale gerarchia oppure scegliere le labels per ogni parte della propria gerarchia. In realtà gli utenti si attengono in massima parte alle labels gerarchiche usate nel domain system ufficiale di Internet. In questo modo per molti siti sarà possibile connettere le proprie installazioni TCP/IP ad Internet senza dover cambiare i nomi.
Nella tabella seguente sono riportate, a titolo di esempio, le principali suddivisioni in cui è partizionato il massimo livello di Internet:

Domain Name Significato
COM Organizzazioni commerciali
EDU Istituzioni educative
GOV Istituzioni governative
MIL Gruppi militari
country code Codice di un Paese (es: it per l'Italia)


Il country code permette di dividere le macchine in base al Paese di appartenenza; esso sarà costituito da una label di due lettere. Per federazioni di più Stati, come per gli U.S.A., vi sarà anche un domain di secondo livello per ogni Stato.
In alternativa alla gerarchia di tipo geografico, i domain di massimo livello possono rappresentare particolari tipi di organizzazioni o gruppi, come mostrato nella tabella precedente (COM, EDU, GOV, MIL, etc.).
          

Il programma dnslookup


Le interrogazioni ai DNS Services sono di solito effettuate da tutti i programmi in modo trasparente all'utente; esiste però una serie di programmi in grado di interfacciare direttamente l'utente con il DNS Service permettendo così richieste particolari che non riguardano esclusivamente la corrispondenza Name-Addresses (ad esempio se un indirizzo è un nome reale di una macchina o solo un Alias, etc.). Il più conosciuto tra questi programmi è il programma UNIX dnslookup. Quando un client richiede la risoluzione di un nome al domain system, facendo uso del dnslookup od altri può interrogare il server specificando il tipo (type) di risposta desiderata. Inoltre il domain system permette al client di specificare la famiglia di protocollo da usare, dividendo così il set di nomi in classi (class).




Corrispondenza nomi-indirizzi IP e risoluzione del Domain Name



Oltre a stabilire la sintassi dei nomi e le regole per delegare l'autorità, il Domain Name System include un sistema affidabile e distribuito per mappare i nomi delle macchine ai rispettivi indirizzi IP.
Il sistema è distribuito in quanto il software del client, il name resolver, si avvale di più name servers che operano su vari siti in cooperazione per la risoluzione del nome; un name server è un programma che permette la traduzione dal nome all'indirizzo IP.
Il sistema è affidabile perchè il fallimento di una singola macchina non gli impedisce di operare correttamente.
La figura seguente permette di capire come operano i domain servers:


Dato un nome da risolvere, la root dell'albero sceglie il server corretto per quel nome; al livello successivo ogni server sa quale server è in grado di risolvere ogni subdomain che risiede sotto il proprio domain e così via. I links dell'albero mostrano i collegamenti esistenti tra i vari servers.
In realtà la relazione tra gerarchia di nomina ed albero dei servers non è così semplice come mostrato nella figura precedente. L'albero dei servers ha meno livelli perchè un server fisico può contenere tutte le informazioni dei propri subdomains, come mostrato nella figura successiva.


In genere, per risolvere un nome, basterà contattare al più due servers.

Ci sono due modi per risolvere un nome: contattare i servers uno alla volta facendo uso di un programma (come il dnslookup od altri), oppure permettere al domain system può di effettuare la traduzione nella sua interezza. Il software del client effettua una richiesta al server che contiene il nome da risolvere, e nel primo caso, anche il tipo di risposta desiderata, la dichiarazione della classe del nome ed un codice che specifica se il nome deve essere tradotto completamente.
Quando un server riceve una richiesta, esso controlla se il nome risiede in un subdomain sul quale detiene l'autorità; in caso affermativo, traduce il nome in indirizzo e lo restituisce al client, altrimenti verifica il tipo di interazione specificata dal client. Se è stata richiesta la traduzione completa, (recursive resolution), il server contatta il domain name server che è in grado di risolvere il nome, mentre se è stata richiesta una iterative resolution (non completa), il server non è in grado di fornire una risposta.




Traduzione efficiente e Caching



La struttura dell'albero dei name servers può portare ad inefficienza per almeno tre motivi. In primo luogo molti nomi si trovano nella stessa suddivisione del namespace in cui si trova la macchina che origina la richiesta e dunque tracciare un cammino attraverso la gerarchia per contattare un'autorità locale può risultare inefficiente.
Inoltre, se ogni richiesta di risoluzione ha inizio con il contattare il massimo livello della gerarchia, la macchina di tale livello è gravata di eccessivo lavoro.
Infine, se le macchine del massimo livello dovessero fallire, la risoluzione non andrebbe a buon fine, anche se l'autorità locale sarebbe in grado di esaudire la richiesta del client.
Internet perciò adopera la name caching per migliorare l'efficienza. Ogni server mantiene una cache dei nomi recentemente usati ed una registrazione di dove ha ottenuto le informazioni per essi.
Quando un client chiede la risoluzione di un nome, il server dapprima controlla se ha l'autorità per risolverlo; se così non fosse, il server controlla nella sua cache se il nome è stato risolto di recente. In caso affermativo, il server restituisce le informazioni al client e fornisce il domain name del server S da cui ha ottenuto le informazioni, marcandole come non authoritative. Poichè queste potrebbero essere datate, il client che usa un programma (come il dnslookup od altri), avrà la facoltà di contattare S per verificare se la corrispondenza nome-indirizzo IP ricevuta sia ancora valida.
Il server data ogni informazione che ripone nella propria cache e dopo un certo lasso di tempo, si libera di quelle divenute obsolete. Sarà l'autorità che viene contattata di volta in volta a decidere quanto tempo le informazioni sono da ritenersi valide; essa fornirà infatti al server il Time To Live (TTL: tempo di vita) per ogni richiesta esaudita.




Il formato dei messaggi del Domain Server



Quando un local resolver viene contattato da un client per risolvere un nome e questi non è presente nella propria cache, esso genera un messaggio che viene inviato al server; ogni messaggio potrà contenere più di un nome e per ognuno di essi si chiederà l'indirizzo IP, e nel caso di uso di un programma (come il dnslookup od altri), la specifica della classe ed il tipo di risposta desiderata.
Il server risponde inviando al client un messaggio con formato analogo oppure indicandogli quale server sarà in grado di rispondere alla richiesta. Nella figura seguente è riportato il formato di tale messaggio:


Nell'header è presente il campo IDENTIFICATION usato dal client per verificare la corrispondenza tra richiesta e risposta, il campo PARAMETER che specifica il tipo di operazioni richieste ed i vari campi NUMBER OF che enumerano le entrate della richiesta.
La QUESTION SECTION contiene le richieste per le quali si vuole una risposta. Il formato di questa sezione è riportato nella figura seguente:


dove sono presenti i campi del nome, del tipo e della classe come già specificato.
Le ultime tre sezioni della figura principale (ANSWER SECTION, AUTHORITY SECTION, ADDITIONAL INFORMATION SECTION) contengono informazioni che descrivono la mappatura nome-indirizzo ed hanno il seguente formato:


dove il RESOURCE DOMAIN NAME contiene il domain name a cui sono riferite tali informazioni.






Ultimo aggiornamento: 11 Novembre 1996



Telemat Lab's home page

home pageIndicePrec.Succ.




Explore the TELEMAT Site !!!

WORK IN PROGRESS by D. Mariano e C. Guadalupi