DNS

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) è:

  1. Un protocollo a livello di applicazione utilizzato da altri protocolli per risolvere nomi in indirizzi IP
  2. Un database distribuito in rete in DNS server.

Funzionamento
...

Un browser (client HTTP) richiede la pagina www.someschool.edu/index.html

  1. HTTP richiede la risoluzione di www.someschool.edu in indirizzo IP, ad una applicazione DNS posta sul client, passandogli il nome del sito
  2. DNS (applicazione lato client) interroga un DNS server con il nome del sito
  3. Il client DNS riceverà una risposta (se esiste una corrispondenza (se il sito esiste))
  4. DNS (lato server) restituirà l’IP al client HTTP che potrà procedere con l’instaurare una connessione TCP con il lato server di HTTP all’indirizzo IP di www.someschool.edu

Il DNS esegue altre operazioni:

  • Distribuisce il traffico in rete. Alcuni siti sono disponibili su più server che hanno lo stesso hostname (nome del sito) e che possono fruire gli stessi contenuti. Netflix.com per esempio è accessibile a diversi indirizzi IP. Il server DNS, quando riceve una richiesta per siti di questo tipo, ritorna tutti gli indirizzi a cui il sito è accessibile, questi vengono ritornati ad ogni richiesta in un ordine diverso, così da distribuire il traffico su quel sito.
  • Ci sono hostname più complessi detti hostname canonici. Enterprise.com può avere come hostname canonico relay1.west-coast.enterprise.com. Un DNS server può essere interrogato anche per tradurre l’hostname semplificato nella sua versione canonica.
  • Risoluzione dei sinonimi di mail server. Una mail bob@yahoo.com può avere hostname canonico più complesso. Il DNS risolve l’hostname sinonimo in canonico. Per esempio yahoo.com, può essere un alias di un nome canonico del tipo: webserver1.yahoo.com.

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).
Pasted image 20230919115245.png
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.
Pasted image 20230919115453.png
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.

DNS caching
...

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.

Record di risorsa
...

Il database distribuito DNS memorizza i record di risorsa, cosiffatti:

NameValeTypeTTL

Il parametro TTL si riferisce al Time To Live e determina quando una risorsa vada rimossa dalla cache.
Il parametro Type può assumere valori:

  • A (address), in questo caso Name contiene l’hostname di richiesta e Val l’indirizzo IP
  • NS (name server, in questo caso Name è un dominio e Val l’hostname del DNS autoritativo
  • CNAME (canonical name), in questo caso Val rappresenta il nome canonico
  • MX (mail exchange), in questo caso Val è il nome canonico di un mail server

Formato di un messaggio DNS:
Pasted image 20230919120924.png

Campo di intestazione
...

Il campo di intestazione è di 12 bytes.

  • L’identificatore (identification) serve per identificare in modo univoco una query DNS specifica e associarla alle risposte corrispondenti.
  • Tra i flag ci sono il bit di richiesta/risposta, il bit di risposta da server autoritativo, il bit di richiesta di ricorsione.
Campo delle domande
...

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).

Campo delle risposte
...

La sezione delle risposte (answers) contiene uno o più record di risorsa.

Come viene aggiunto al database un hostname nuovo?

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.