illivello
di applicazioen il dns.pdf
Domain Name System (spesso indicato con DNS) è un servizio utilizzato per la risoluzione di nomi di host in indirizzi IP.
Questo servizio è alla base della diffusione di internet. In pratica un nome host o un indirizzo internet vengono tradotti in un indirizzo numerico di tipo indirizzi IP. Il servizio permette così di utilizzare i nomi e le parole di uso comune per ricercare ad esempio un sito internet.
Es. il sito di Novell - www.novell.com in realtà è solo un modo facile per identificare il sito internet residente all'indirizzo http://130.57.5.25.
Il servizio è realizzato tramite un database distribuito, costituito dai server DNS. Un server è una componente informatica che fornisce servizi ad altre componenti (tipicamente chiamate client) attraverso una rete. Si noti che il termine server, così come pure il termine client, possono essere riferiti sia alla componente software che alla componente hardware.
Pertanto è comune riferirsi ad un computer di alte prestazioni ed alta affidabilità dedicato primariamente a fornire servizi chiamandolo server. È altrettanto comune usare lo stesso termine per riferirsi ad un processo (ovvero un programma software in esecuzione) che fornisca servizi ad altri processi.
La possibilità di attribuire nomi simbolici agli indirizzi IP degli host è essenziale per l'usabilità di Internet, perché gli esseri umani trovano più facile ricordare nomi testuali, mentre gli host ed i router sono raggiungibili utilizzando gli indirizzi IP numerici.
Inoltre è possibile attribuire più nomi allo stesso indirizzo IP, per rappresentare diversi servizi o funzioni forniti da uno stesso host. 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.
Un web server è un
programma (e, per estensione, il computer) che si occupa di fornire, su
richiesta del browser
una pagina web
(spesso scritta in HTML).
Le informazioni inviate dal web server viaggiano in rete trasportate dal
protocollo HTTP.
L'insieme di webserver presenti su Internet
forma il WWW
ossia il World Wide Web, uno dei servizi più sfruttati
della Grande Rete.
Normalmente un web server risiede su
sistemi dedicati ma può essere eseguito su computer
ove risiedano altri server
o che vengano utilizzati anche per altri scopi. Per esempio si può installare
un web server su un normale personal computer allo scopo di provare il proprio sito web.
I nomi DNS, o "nomi di domino", sono una delle caratteristiche più visibili di Internet.
Il DNS fu inventato nel 1983; 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 Uniform Resource Locator o URL è una sequenza di caratteri che identifica univocamente l'indirizzo di una risorsa in Internet, come un documento o un'immagine.
Ad esempio, l'URL di questa pagina è http://it.wikipedia.org/wiki/Url
.
Una definizione formale di questo acronimo, si trova in RFC 2396 di IETF.
Ogni Uniform Resource Locator è composto dalle seguenti parti principali:
lo
schema o protocollo, utilizzato per indirizzare la risorsa
il
nome dell'host o server, oppure un nome di dominio
il
path o percorso o nome file della risorsa
http://it.wikipedia.org/w/index.php
dove:
http rappresenta lo schema o protocollo (HTTP)
it.wikipedia.org è il sottodominio ( che può indicare il nome del server ) (it), completo di dominio (wikipedia.org)
w/index.php è il percorso completo della risorsa (una pagina Web)
Nelle pagine dinamiche (sviluppate con linguaggi quali PHP, ASP, ecc.), gli URL possono anche contenere una query-string, preceduta dal carattere '?' (e intervallata dal carattere '&' quando ne è presente più di una), che serve per trasmettere informazioni alla pagina seguente.
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.
Domini di primo livello nazionali (country code top-level domain): usati da uno stato o una dipendenza territoriale. È costituito da due lettere, per esempio jp per il Giappone e it per l'Italia.
Domini di primo livello generici (generic top-level domain o gTLD): usati (almeno in teoria) da particolari classi di organizzazioni (per esempio, com per organizzazioni commerciali). Tale suffisso è di tre o più lettere. La maggior parte dei gTLDs sono disponibili in tutto il mondo, ma per ragioni storiche gov, mil e edu sono riservati rispettivamente al governo, all'esercito e agli enti educativi statunitensi.
Domini di primo livello infrastrutturali (infrastructure top-level domain): il dominio di primo livello arpa è l'unico esistente.
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.
Un nome di dominio, come per esempio it.wikipedia.org, può essere parte di un URL, come http://it.wikipedia.org/wiki/Treno, o di un indirizzo e-mail, come per esempio apache@it.wikipedia.org.
Questi sono gli strumenti più utilizzati per identificare una risorsa su Internet, il che spiega la pervasività dei nomi di dominio.
Molti nomi di dominio utilizzati per server web hanno nella parte sinistra la stringa di caratteri "www", ma non è sempre necessario averla.
I DNS implementano uno spazio dei nomi gerarchico, per permettere che parti di uno spazio dei nomi, conosciute come "zone", possano essere delegate da un name server ad un altro name server che si trova più in basso nella gerarchia.
I nomi di dominio sono soggetti a determinate restrizioni: per esempio ogni parte del nome (quella cioè limitata dai punti nel nome) non può superare i 63 caratteri e il nome complessivo non può superare i 255 caratteri.
I nomi di dominio sono anche limitati ad un sottoinsieme di caratteri ASCII; in questo modo si impedisce di scrivere nomi e parole con caratteri che non tutti hanno sulla propria tastiera.
Una zona DNS è una parte dello spazio dei nomi, costituita da un dominio e i suoi sottodomini che non sono a loro volta delegati, che è sotto una stessa gestione amministrativa e quindi è gestita da uno o più server.
La gestione di una zona è delegata dalla zona superiore. Ad esempio, nella zona .org ci sarà una delega per la zona wikipedia.org ai server DNS che la gestiscono. Per ragioni di ridondanza, una delega è tipicamente costituita da più record NS, che indicano che ciascuno dei server indicati contiene le informazioni per quella zona . All'interno di una zona possono essere delegate delle zone di livello inferiore, ad esempio in wikipedia.org potrebbero esistere deleghe per devel.wikipedia.org o per accounting.admin.wikipedia.org.
I diversi server che sono delegati per una zona dovrebbero contenere le stesse informazioni, in modo che uno qualsiasi di questi possa rispondere ad una richiesta per un record della zona. La replica è tipicamente basata su un server master (primario), sul quale vengono aggiornate le informazioni e uno o più server slave (secondari), che copiano le informazioni dal master quando necessario. L'operazione di copia di tutti i record di una zona dal master ad uno slave è detta zone transfer.
La radice (root) dell'albero dei nomi DNS è la zona . (punto), che è gestita da un insieme di server chiamati appunto root servers.
Quando un computer richiede al sistema DNS la risoluzione di un nome di dominio, ovvero la conversione di un nome simbolico nel corrispondente indirizzo IP, viene analizzato il nome di dominio da destra verso sinistra, chiedendo a ciascun nameserver di fornire informazioni soltanto sull'elemento che si trova a sinistra dell'ultimo punto.
Occorre quindi precisare che tutti i nomi di dominio esistenti su Internet in realtà terminano con un . (punto): a rigore, dunque, Wikipedia appartiene al dominio "wikipedia.org." Il punto finale è implicito; i moderni software di gestione del DNS non richiedono che venga specificato espressamente per risolvere il nome di dominio. La stringa vuota che segue il punto finale è chiamata dominio radice (DNS root zone); tutti i domini di primo livello, sia quelli individuali dei singoli paesi (.us, .uk, .it ecc.) che i suffissi 'non geografici' (.com, .org, .net ecc.), appartengono a questo dominio.
I root nameserver sono i server responsabili (in inglese authoritative, ossia autorevoli, dotati di autorità) per quanto riguarda il dominio "."; possiedono infatti l'elenco dei server responsabili per ognuno dei domini di primo livello riconosciuti, e lo forniscono in risposta a ciascuna richiesta.
Ciascun dominio di primo livello (ad es. .org) possiede a sua volta un gruppo di server definiti 'autorevoli', che a loro volta delegano una parte di autorità ai nameserver responsabili di ciascun dominio di secondo livello (ad es. wikipedia.org). Questi ultimi rispondono alle interrogazioni sugli indirizzi IP relative ai sottodomini o ai singoli host (ad es. www.wikipedia.org). Anche se i nomi di dominio sono spesso a tre livelli, nulla vieta di avere host corrispondenti a nomi di secondo livello (wikipedia.org) o a livelli più elevati (www.italia.gov.it): la richiesta avviene comunque sempre allo stesso modo, interrogando ricorsivamente i vari nameserver.
In generale, per ottenere la risoluzione di un nome è necessario partire dalla radice, interrogare uno dei root servers nel dominio di primo livello, ottenere il server che lo gestisce, interrogarlo nel dominio di secondo livello, fino a raggiungere il server autoritativo per il nome desiderato. Questa tecnica è detta "ricorsione".
Alcuni server si prestano ad effettuare interrogazioni ricorsive per conto di alcuni client. Una volta che hanno ottenuto una risposta, memorizzano in una cache tutte le informazioni che hanno imparato, fino alla loro scadenza. Alcune implementazioni del servizio DNS permettono di realizzare i cosiddetti servers caching only, ovvero privi di database proprio, ma utili per reindirizzare ad un server autoritativo le richieste di risoluzione dell’indirizzo. Funzioni dei server
Un server DNS può essere configurato per assolvere ad una o più delle seguenti funzioni:
server autoritativo per una o più zone, ovvero il server su cui sono configurati i dati di una zona, e che è delegato a gestirla. Normalmente sono presenti più server autoritativi per una zona. Molte implementazioni permettono di modificare i dati di una zona solo su un server:
primario - server autoritativo su cui vengono modificati i dati di una zona
secondario - server autoritativo che copia i dati di zona da un primario
server ricorsivo - il server che viene configurato in una popolazione di client, che si occupa di risolvere le interrogazioni che riceve interrogando i server originali, e mantenendo una cache delle risposte ricevute
query forwarder - un server che viene configurato in una popolazione di client, che risolve le loro query non direttamente ma interrogando un server ricorsivo
I dati contenuti in una zona possono essere configurati da uno o più operatori, oppure possono essere alimentati da meccanismi automatici:
nelle implementazioni più semplici, i dati di zona sono memorizzati in uno o più file sul server primario
implmentazioni più raffinate immagazzinano i dati in un database. In alcuni casi, questo è accessibile non solo agli operatori del servizio ma anche direttamente ai clienti (è il caso dei servizi DNS commerciali)
Il termine DNS dinamico, o DDNS, indica un insieme di tecnologie che permettono di inserire automaticamente in una zona DNS gli indirizzi di calcolatori che ottengono un indirizzo non predefinito. A questo scopo, sono definite query DNS di "UPDATE".
Il DDNS viene inoltre utilizzato da servizi commerciali per permettere agli utenti dial-up che si colegano cioè ad internet mediante un provider cui si collegano tramite modem o ADSL di registrare un nome corrispondente all'indirizzo che viene loro assegnato di volta in volta dal loro provider. In questo modo, un host con indirizzo IP dinamico è sempre raggiungibile.
Per utilizzare il servizio, è necessario configurare su ciascun client uno o più server DNS di riferimento..
Quando un sistema ha la necessità di comunicare con un altro sistema, chiede al server DNS di riferimento di effettuare il processo detto di "risoluzione" del nome in un indirizzo IP. Il server effettua una ricerca all'interno del suo database per ottenere l'indirizzo IP corrispondente al sistema ricercato.
Se il server interrogato possiede l'informazione richiesta, il processo di ricerca termina con l'invio dell'indirizzo IP al richiedente. Se la ricerca ha esito negativo il server effettua una richiesta "ricorsiva".
Qualsiasi rete IP può usare il DNS per implementare un suo sistema di nomi privato. Tuttavia, il termine "nome di dominio" è più comunemente utilizzato quando esso si riferisce al sistema pubblico dei DNS su Internet. Questo è basato su 13 "root server" universali, i cui indirizzi IP sono distribuiti indipendentemente dal DNS tramite un file detto "root hints" (letteralmente: indizi per la radice). Da questi server principali, il DNS viene poi delegato ad altri server DNS che si occupano dei nomi all'interno di parti specifiche dello spazio dei nomi DNS.
Dieci dei tredici root server sono, almeno nominalmente, situati negli USA. Tuttavia, dato l'accesso a molti di essi è realizzato tramite indirizzamento anycast, che permette di assegnare a più computer lo stesso indirizzo IP per fornire un servizio uniforme su vaste aree geografiche, la maggior parte dei server sono in effetti localizzati al di fuori degli Stati Uniti.
In Internet, un indirizzo di tipo anycast è un indirizzo IP che può corrispondere a più di un host sulla rete. Quando un pacchetto viene inviato ad un indirizzo anycast, la rete lo consegnerà ad uno qualsiasi tra quelli associati all'indirizzo, tipicamente al più "vicino".
Questa tecnica viene utilizzata per distribuire il carico ed aumentare l'affidabilità di servizi essenziali per il funzionamento della rete, come il DNS.
Il proprietario di un nome di dominio è rintracciabile in un database chiamato Whois: per molti domini di primo livello un Whois base è gestito dalla IANA, con il Whois dettagliato mantenuto dall'autorità di registrazione che controlla quel dominio. Per i più di 240 domini nazionali l'autorità di registrazione gestisce in esclusiva il Whois per il dominio di competenza.