Il DNS (Domain Name System, [Moc87]) è il meccanismo
che permette di chiamare i server su Internet con un nome simbolico
piuttosto che con il proprio indirizzo IP e rappresenta un approccio
gerarchico al problema dell'organizzazione dello spazio dei nomi di
una larga rete di computer. Ogni elemento della gerarchia è un
dominio: un dominio può essere usato per accedere a un
calcolatore, come indirizzo di posta elettronica o anche solo come
elemento fittizio per sottodomini. In cima alla gerarchia c'è il
dominio radice, conosciuto semplicemente come ``.''. Numerosi
sottodomini possono essere aggiunti immediatamente sotto il dominio
radice, e per le organizzazioni sottodomini possono essere posti sotto
altri sottodomini; i sottodomini sotto la radice sono chiamati domini
di primo livello, quelli sotto di essi di secondo livello, eccetera.
Ciascun dominio nello spazio dei nomi viene referenziato attraverso la
lista dei domini del suo percorso gerarchico, separati da
punti.
Ogni dominio nel DNS possiede uno o più Resource Record (RR), campi che contengono informazioni riguardo quel dominio. Tra essi, il campo ``A'' contiene l'indirizzo IP della macchina che il dominio rappresenta e il campo ``MX'' il nome della macchina che gestisce la posta. I server che gestiscono queste informazioni sono chiamati nameserver, e possono essere interrogati da altri host per ricevere i dati riguardo a un particolare dominio, e in particolare quando un programma vuole sapere l'indirizzo IP che corrisponde a un indirizzo simbolico a cui voglia connettersi; ciascuno di questi server gestisce, per delega, una parte dello spazio DNS. Ad esempio, il nameserver per unipi.it delega la responsabilità per di.unipi.it a un altro nameserver, che contiene le informazioni per la macchina apollo.di.unipi.it. Ognuna di queste parti delegate viene chiamata zona, e grazie a questo meccanismo il carico della gestione del DNS viene suddiviso e non centralizzato.
Figura 1.1: Il sistema gerarchico del DNS