Domain Name System (spesso indicato con DNS) è un sistema utilizzato per la risoluzione di nomi di host in indirizzi IP e viceversa. Il servizio è realizzato tramite un database distribuito, costituito dai server DNS.

Il nome DNS denota anche il protocollo che regola il funzionamento del servizio, i programmi che lo implementano, i server su cui questi girano, l’insieme di questi server che cooperano per fornire il servizio.

I nomi DNS, o “nomi di dominio”, sono una delle caratteristiche più visibili di Internet.

C’è confusione in merito alla definizione dell’acronimo: la S spesso viene interpretata come service, ma la definizione corretta è system.

L’operazione di convertire un nome in un indirizzo è detta risoluzione DNS, convertire un indirizzo IP in nome è detto risoluzione inversa.

 


La possibilità di attribuire un nome testuale facile da memorizzare a un server (ad esempio un sito world wide web) migliora di molto l’uso del servizio, in quanto gli esseri umani trovano più facile ricordare nomi testuali (mentre gli host e i router sono raggiungibili utilizzando gli indirizzi IP numerici). Per questo, il DNS è fondamentale per l’ampia diffusione di internet anche tra utenti non tecnici, ed è una delle sue caratteristiche più visibili.
È possibile attribuire più nomi allo stesso indirizzo IP (o viceversa) per rappresentare diversi servizi o funzioni forniti da uno stesso host (o più host che erogano lo stesso servizio) Questa flessibilità risulta utile in molti casi:
Nel caso il server debba sostituire il server che ospita un servizio, o si debba modificare il suo indirizzo IP, è sufficiente modificare il record DNS, senza dover intervenire sui client.
Un utilizzo molto popolare di questa possibilità è il cosiddetto virtual hosting basato sui nomi, una tecnica per cui un web server dotato di una singola interfaccia di rete e di singolo indirizzo IP può ospitare più siti web, usando l’indirizzo alfanumerico trasmesso nell’header HTTP per identificare il sito per cui viene fatta la richiesta.
Utilizzando nomi diversi per riferirsi ai diversi servizi erogati da un host, è possibile spostare una parte dei servizi su un altro host, e spostare i client su questo nuovo host modificando il suo record nel DNS.
Facendo corrispondere più indirizzi IP a un nome, il carico dei client viene distribuito su diversi server, ottenendo un aumento delle prestazioni complessive del servizio e una tolleranza ai guasti (ma è necessario assicurarsi che i diversi server siano sempre allineati, ovvero offrano esattamente lo stesso servizio ai client).
La risoluzione inversa è utile per identificare l’identità di un host, o per leggere il risultato di un traceroute.
Il DNS viene usato da numerose tecnologie in modo poco visibile agli utenti, per organizzare le informazioni necessarie al funzionamento del servizio.


Il DNS fu ideato il 23 giugno 1983 da Paul Mockapetris, Jon Postel e Craig Partrige; le specifiche originali sono descritte nello standard RFC 882. Nel 1987 vennero pubblicati commenti allo standard RFC del DNS, con i nomi RFC 1034 e RFC 1035 rendendo obsolete le specifiche precedenti.


Un nome a dominio è costituito da una serie di stringhe separate da punti, ad esempio it.wikipedia.org. A differenza degli indirizzi IP, dove la parte più importante del numero è la prima partendo da sinistra, in un nome DNS la parte più importante è la prima partendo da destra. Questa è detta dominio di primo livello (o TLD, Top Level Domain), per esempio .org o .it.

Un dominio di secondo livello consiste in due parti, per esempio wikipedia.org, e così via. Ogni ulteriore elemento specifica un’ulteriore suddivisione. Quando un dominio di secondo livello viene registrato all’assegnatario, questo è autorizzato a usare i nomi di dominio relativi ai successivi livelli come it.wikipedia.org (dominio di terzo livello) e altri come some.other.stuff.wikipedia.org (dominio di quinto livello) e così via.


 

Ad un nome DNS possono corrispondere diversi tipi di informazioni. Per questo motivo, esistono diversi tipi di record DNS. Ogni voce del database DNS deve essere caratterizzata da un tipo. I principali tipi sono:

Record A – Indica la corrispondenza tra un nome ed uno (o più) indirizzi IP (per la precisione indirizzi IPv4, ovvero la versione attualmente in uso).
Record MX – (Mail eXchange) indica a quali server debba essere inviata la posta elettronica per un certo dominio.
Record CNAME – Sono usati per creare un alias, ovvero per fare in modo che lo stesso calcolatore sia noto con più nomi. Uno degli utilizzi di questo tipo di record consiste nell’attribuire ad un host che offre più servizi un nome per ciascun servizio. In questo modo, i servizi possono poi essere spostati su altri host senza dover riconfigurare i client, ma modificando solo il DNS.
Record PTR – Il DNS viene utilizzato anche per realizzare la risoluzione inversa, ovvero per far corrispondere ad un indirizzo IP il corrispondente nome a dominio. Per questo si usano i record di tipo “PTR” (e una apposita zona dello spazio dei nomi in-addr.arpa).
Record AAAA – Restituisce un indirizzo IPv6.
Record SRV – Identificano il server per un determinato servizio all’interno di un dominio. Possono essere considerati una generalizzazione dei record MX.
Record TXT – Associano campi di testo arbitrari ad un dominio. Questi campi possono contenere una descrizione informativa oppure essere utilizzati per realizzare servizi.
Vi sono anche tipi di record “di servizio”, necessari al funzionamento del database distribuito:

Record NS – Utilizzato per indicare quali siano i server DNS autorevoli per un certo dominio, ovvero per delegarne la gestione.
Record SOA – (Start of Authority) usato per la gestione delle zone DNS.
Nel DNS possono essere immessi altri tipi di record, alcuni folcloristici, come “LOC”, usato (poco) per riportare le coordinate geografiche di un sito, altri aggiungono funzioni di sicurezza per evitare manomissioni. Per avere riferimenti su tutti questi record vedi Tipi di record DNS.


Ad uno stesso nome di dominio, possono essere associati contemporaneamente record di tipo diverso, o più record dello stesso tipo. Questo generalmente viene fatto per suddividere il carico di un server molto frequentato su più computer che offrono lo stesso servizio


[ http://it.wikipedia.org/wiki/Domain_Name_System ]