Tecnologia di Internet
 
Domain Name System
Livello OSI di riferimento: applicazione. Gli indirizzi IP, nella loro forma numerica binaria o decimale, sono più adatti alle macchine che agli uomini: sono difficili da ricordare e complessi da scrivere. Per questo motivo alle macchine vengono assegnati dei nomi più facilmente memorizzabili, come
  • partners.adobe.com
  • ns.consumer-info.org
  • www.tin.it
  • info.acm.org
  • www.virgilio.it

Nomi invece di numeri

Per far corrispondere ad un nome di questo tipo un indirizzo IP è necessario un database o almeno una tabella di questo tipo
Nome host Indirizzo IP host
partners.adobe.com 192.150.12.81
info.acm.org 199.222.69.150
www.virgilio.it 212.48.2.21
ns.consumer-info.org 209.207.246.162
www.whitehouse.gov 198.137.240.92
ftp.apple.com 17.254.0.185

Naturalmente non è obbligatorio utilizzare i nomi. Se volete collegarvi al server web del governo italiano potete battere (cliccare) il nome

o semplicemente l’indirizzo IP

Per motivi che approfondiremo in questa sezione, il secondo metodo è più veloce, perché evita l’interrogazione di un name server. Provare per credere.

Durante gli anni 70, quando ARPANET era una piccola e felice comunità di alcune centinaia di nodi, la tabella che consentiva di tradurre ogni nome di macchina nel rispettivo indirizzo IP numerico era contenuta in un unico file, HOSTS.TXT. Questo file veniva mantenuto al NIC (Network Information Center) dello Stanford Research Institute di Menlo Park, in California.

Tipicamente gli amministratori delle varie reti spedivano via mail le modifiche da fare alla tabella, e periodicamente scaricavano la tabella aggiornata dal computer del NIC. Con la crescita di ARPANET, in particolare quando ARPANET passò ai protocolli TCP/IP, diventò impossibile continuare ad andare avanti con questo sistema.

Venne allora studiato un nuovo metodo, che è quello che viene tuttora usato: il Domain Name System, DNS. Sviluppato da Paul Mockapetris nel 1984, DNS è attualmente mantenuto da Paul Vixie sotto gli auspici dell’Internet Software Consortium (ISC), una organizzazione formata da Rick Adams nel 1993.

Struttura del DNS
La struttura del database DNS è ad albero. Ogni nodo dell’albero è un dominio. Ogni dominio può ulteriormente essere diviso in sottodomini, tracciati come rami del dominio. Ogni dominio ha una etichetta (max 63 caratteri) che lo identifica rispetto al nodo padre e un nome che specifica la sua posizione nel database e consiste nelle etichette dal dominio alla radice.
Il DNS è strutturato ad albero; la radice dell’albero è il dominio vuoto; vengono poi i domini di livello speriore e gli altri sottodomini.
Per esempio il nome ftp.example.com è il nome di un host che appartiene al dominio di livello superiore .com, al sottodominio example.com e che ha nome ftp.
Domini di livello superiore
Ogni host nella rete ha un nome di dominio a cui sono associate informazioni su quell’host, in primo luogo l’indirizzo IP. I domini sono strutturati ad albero. Quelli di livello superiore, inizialmente erano sette, tutti riferiti agli USA:
  • com (organizzazione commerciali USA, per esempio la Apple Computer apple.com)
  • edu (università, scuole USA, per esempio l’università di Berkeley, berkeley.edu)
  • gov (organizzazioni governative USA, per esempio la NASA, nasa.gov)
  • mil (organizzazioni militari USA, per esempio esercito e marina, army.mil e navy.mil)
  • net (organizzazioni di rete, come la Natonal Science Foundation, nsf.net)
  • org (organizzazioni non commerciali)
  • int (organizzazion internazionali come la NATO)

Oggi i domini di livello superiore sono molti di più perché, sono stati tra l’altro inseriti tutti i paesi del mondo (Stati Uniti compresi) con un codice a due lettere, regolato dallo standard internazionale ISO 3166 del 1974.

Alcuni domini di paesi

  • it (Italia)
  • de (Germania)
  • ch (Svizzera)
  • fr (Francia)
  • at (Austria)
  • va (Vaticano)
  • sm (San Marino
  • us (Stati Uniti)
  • af (Afganistan)
  • uk (Gran Bretagna)

Secondo il sito domainstat i domini registrati nel mondo sono più di 15 milioni, di cui quasi 10 milioni sono quelli com, 1 milione i de, 1 milione gli uk e poco più di 100.000 i domini italiani it.

Come funziona il DNS
DNS è un database distribuito. In altre parole, l’intera rete può usare il DNS, mentre la manutenzione del database avviene localmente per singole parti.

Il meccanismo di accesso al database è di tipo client-server.La parte server del DNS è costituita da programmi chiamati name server. I name server contengono informazioni su una parte del database. La parte client è costituita dai resolver, che normalmente sono delle istruzioni nel programma (per esempio nel browser, quindi a livello applicazione) che interrogano i name server.

Quando un programma, per esempio un browser, richiede di accedere ad un host che ha un certo nome, entra in azione il resolver che

  • trasmette la richiesta al name server;
  • interpreta le risposte;
  • passa le informazioni al programma che le ha chieste.

I name server sono distribuiti in tutto il mondo e sono organizzati in modo gerarchico. Nessun name server ha la mappa di tutti gli host di Internet. Ci sono, in prima approssimazione, tre tipi di name server:

  • local namer server (name server locale)
  • root name server (name server radice)
  • authoritative name server (name server autorevole)

Questi tre tipi di name server interagiscono tra di loro come indicato qui di seguito.

Name server locale
Ogni Internet Service Provider (comprese le università, le società, i provider commerciali) ha (almeno) un name server locale e ogni host ha l’indirizzo del name server locale del proprio provider.

Chiunque registri un dominio di secondo livello (per esempio boscarol.com) deve designare due name server che consentono di tradurre il nome del dominio in indirizzo IP. Normalmente questi name server sono quelli del provider che ospita il dominio.

I due name server sono consultati nell’ordine. Il secondo viene consultato se il primo non risponde.

Il pannello di controllo TCP/IP su Windows 95; notare al centro il box per inserire gli indirizzi IP dei name server locali del proprio provider.
Quando un host interroga il DNS, il messaggio viene spedito al name server locale. Il name server locale risolve velocemente le richieste relative a nomi interni al proprio dominio. Per esempio se l’host surf.eurecom.fr richiede l’indirizzo di baie.eurecom.fr, il name server di Eurecom è in grado di fornirlo senza interrogare altri name server.

Alternativamente, se al name server è stata fatta la stessa richiesta in un tempo precedente, può darsi che possa trovare la risposta nella propria memoria cache.

Root name server
In Internet ci sono una dozzina di cosiddetti root name server molti dei quali sono negli Stai Uniti. Quando un name server locale non è in grado di risolvere velocemente la richiesta di un host (perché non ha il nome richiesto nel proprio database o nella propria cache) si comporta come un client DNS e interroga uno dei root name server. Se il root name server è in grado di rispondere spedisce un messaggio al name server locale, il quale a sua volta lo trasmette all’host che ha sottoposto la richiesta. In caso contrario il root name server è sicuramente in possesso dell’indirizzo di un authoritative name server che conosce l’indirizzo di quel particolare host.

Un root name server conosce dove sono i name server autorevoli per tutti i domini di livello superiore (potrebbero essere loro stessi tali name server) e quando riceve una richiesta il root name server può come minimo dare il nome e l’indirizzo del name server autorevole per il dominio di livello superiore contenuto nella richiesta.

Naturalmente i root name server sono cruciali per il funzionamento di Internet. In teoria ne basterebbe uno, ma per prevenire interruzioni prolungate in casi di guasti, sono in funzione attualmente undici root name servers sparsi per la rete. Otto stanno in USA, due in Europa (Londra e Stoccolma) e una in Giappone.

L’elenco si trova in questa pagina.

Questa immagine è fornita dal sito della World Internetworking Alliance (WIA) e riporta i root name server al febbraio 1998 (la situazione da allora non si è modificata).
Authoritative name server
Ogni host è registrato presso un name server autorevole. Tipicamente, un name server autorevole per un host è un name server presso il provider locale dell’host. Per definizione un name server è autorevole per un host se ha un un record DNS che traduce il nome dell’host nel suo indirizzo.

Quando un name server autorevole viene interrogato da un root name server, l’autorevole risponde con l’indirizzo richiesto, che il root trasmette al locale, che a sua volta lo trasmette all’host che l’ha richiesto.

Molti name server sono sia locali che autorevoli.

Assegnazione dei nomi di dominio
L’organismo che assegna i nomi di sottodominio del dominio it (cioè la registration authority italiana) è il l’Italian Network Information Center (it-nic) presso l’Istituto per le applicazioni telematiche del CNR di Pisa.

Le modalità operative generali e le regole in base alle quali la registration authority italiana opera sono definite dalla naming authority italiana in base alle norme ISO 6523.

L’organizzazione che coordina a livello mondiale

  • l’assegnamento dei nomi di dominio
  • l’assegnamento degli indirizzi IP
  • l’assegnamento dei parametri di protocollo e numeri di porta
  • le operazioni e i root name servers

è l’ICANN (Internet Corporation for Assigned Names and Numbers).

Esempio
Questo esempio è tratto da Computer Networking di Kurose e Ross. L’host surf.eurecom.fr desidera l’indirizzo IP dell’host gaia.cs.umass.edu.

Il name server locale di Eurecom si chiama dns.eurecom.fr, un athoritative name server per gaia.cs.umass.edu si chiama dns.umass.edu (ma i nomi dei name server sono ininfluenti sull’intero processo di richiesta: i name server vengono sempre indirizzati con il loro indirizzo IP, non con il loro nome per evitare ricorsioni all’infinito).

Come si vede in figura l’host surf.eurecom.fr prima spedisce una richiesta DNS al suo name server locale dns.eurecom.fr. Il messaggio di richiesta contiene il nome da tradurre in indirizzo, cioè gaia.cs.umass.edu. Il name server locale trasferisce la richiesta ad un root name server che a sua volta la trasferisce al name server autorevole per tutti gli host nel dominio umass.edu, cioè dns.umass.edu.

Il name server autorevole trasmette la risposta all’host che ha fatto la richiesta passando per il root name server e il local name server.

Riferimenti online

Bibliografia
  • Paul Albiz e Cricket Liu DNS and BIND O’Reilly & Associates, Second Edition, Jan 1997
    (sui domini e i DNS)
   
Home | Commenti a Mauro Boscarol | Ultimo aggiornamento 22 dicembre 2000