Copyright © 1986 Universita'
di Firenze. All rights reserved.
Free license available.
INTERNET & APPLICATIONS
Domain Name System




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.
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.
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.
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.).
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).
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.
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.
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





Explore the TELEMAT Site !!!
WORK IN PROGRESS by D. Mariano e C. Guadalupi