I siti web hanno dei nomi che gli esseri umani riescono a ricordare facilmente. Tuttavia tale modo di chiamare un sito non dice niente sulla sua locazione in internet. Così internet preferisce identificare gli host nella rete con un indirizzo IP (numero di 4 byte, ogni byte indica un numero compreso tra 0-255 separato da un punto, es: 134.21.77.9).
Il DNS traduce gli host in indirizzi IP.
DNS (domain name server) è:
Un browser (client HTTP) richiede la pagina www.someschool.edu/index.html
Il DNS esegue altre operazioni:
Abbiamo visto come avviene una richiesta di risoluzione di un hostname in IP (in Funzionamento, paragrafo sopra).
Quando il client DNS effettua la query al DNS server per cercare una corrispondenza invia le richieste sotto forma di datagrammi UDP sulla porta 53. Notiamo che si aggiunge un’altra quantità di ritardo (dell’ordine dei millisecondi).
La gerarchia del DNS server potrebbe essere centrale, ovvero le richieste di risoluzione di un hostname vengono dirottate verso un unico server. Tanto bello quanto inefficiente. Avere un unico server porterebbe anche ad avere un unico punto di fallimento, se non funziona quel server, nessun host può richiedere risoluzione di un hostname. Inoltre il numero di host è incredibilmente alto e un solo server potrebbe non essere capace di gestire tutte le richieste. Il database potrebbe essere fisicamente distante da alcuni host (e più vicino per altri).
Ci sono root server, TLD (top level domain) server e server autoritativi, i server autoritativi sono server DNS che hanno l'informazione definitiva su un particolare dominio di internet, essi forniscono informazioni accurate e definitive riguardo un dominio specifico. Gli hostname e la loro risoluzione è distribuita su tutti i server.
Un client DNS contatta prima un root server, che gli fornisce un range di indirizzi che contengono i TLD, che al loro volta vengono contattati e che restituiscono un range di indirizzi dei server autoritativi che risolvono l’hostname.
C’è un altro DNS server, detto DNS server locale che non appartiene direttamente a questa gerarchia, ma è centrale in questa organizzazione. Ogni ISP ha uno o più DNS server locali, quando un host si connette all’ISP gli viene assegnato un indirizzo IP fra quelli dei DNS server locali. Le richieste di un host per la risoluzione di un hostname passano per il DNS server locale che effettua le richieste per l’host richiedente. La richiesta che parte dall’host richiedente è ricorsiva, le richieste che partono dal DNS server locale sono in genere iterative.
La prima richiesta è ricorsiva nel senso che non si riceve una risposta diretta, ma aspetta che il resolver (DNS server locale) abbia la risoluzione dell’hostname.
Le chiamate dal resolver sono iterative, ovvero ottengono risposta ad ogni richiesta. A volte, il TLD non ha l’indirizzo IP dell’hostname richiesto, in quel caso viene ritornato l’indirizzo di un DNS server locale (del sito richiesto) che restituisce l’indirizzo esatto dell’hostname.
Abbiamo visto che il numero di richieste effettuate dal DNS server locale (resolver) sono numerose. Il DNS caching riduce il numero di richieste. Quando il DNS server locale risolve un indirizzo che non aveva mai risolto prima, lo salva nella cache, quando in futuro verrà fatta una richiesta uguale, il DNS sarà in grado di rispondere prontamente. Internet varia di continuo, il DNS server infatti cancella le informazioni riguardanti la sua cache (e un certo hostname) ogni 2 giorni circa.
Il database distribuito DNS memorizza i record di risorsa, cosiffatti:
Name | Vale | Type | TTL |
---|
Il parametro TTL si riferisce al Time To Live e determina quando una risorsa vada rimossa dalla cache.
Il parametro Type può assumere valori:
Formato di un messaggio DNS:
Il campo di intestazione è di 12 bytes.
La sezione delle domande (questions) contiene informazioni sulle richieste che stanno per essere fatte. Che include un campo nome con l’hostname che si vuole risolvere e un campo tipo sul tipo della richiesta (A se si sta richiedendo l’IP di un hostname non mail server, MX viceversa).
La sezione delle risposte (answers) contiene uno o più record di risorsa.
Prima di tutto si registra l’hostname presso un registrar (un ente autorizzato a registrare nomi di dominio). Si fornisce a questo l’indirizzo IP dei server autoritativi (primario e secondario). I server autoritativi sono server DNS che gestiscono e mantengono aggiornati i record DNS per il dominio che si vuole registrare. Vanno forniti quello primario e quello secondario, poiché se uno dei due non funziona, l'altro può risolvere le richieste ricevute.
Poi l’ente si occupa di aggiungere al database una entry di tipo NS e tipo A.
Ci si deve anche accertare che gli indirizzi di tipo A e MX vengano inseriti nei DNS autoritativi.