DNS – Come Funziona il Domain Name System

Il Domain Name System o più semplicemente il DNS viene detto anche la guida telefonica di Internet in quanto le persone accedono alle informazioni online tramite dei nomi di dominio, come ad esempio il famosissimo giornale americano nytimes.com. Tramite i browser Web interagiscono con gli indirizzi Internet Protocol o meglio dire gli IP. Il DNS traduce i nomi di dominio in indirizzi IP, in modo che i browser possano caricare le risorse Internet.

Ogni dispositivo collegato a Internet è dotato di un indirizzo IP unico, e sono gli altri dispositivi ad usare l’indirizzo IP per trovarlo. Quella che è principalmente la funzione dei server DNS è eleminare la necessità di memorizzare gli indirizzi IP di tutti i dispositivi, dando loro l’unicità di cui appunto dispongono.

Più nel dettaglio verranno analizzate le seguenti caratteristiche dei DNS.

  1. Cos’è e come funziona;
  2. I passaggi della ricerca;
  3. Le varie tipologie di DNS;
  4. Il caching;
  5. DNS autoritativo e ricorsivo;

Cos’è e come funziona il DNS

La funzione sopra citata è il processo di risoluzione DNS. Questo prevede la conversione di un hostname come www.example.com in un indirizzo IP compatibile con il computer, per esempio 192.168.1.1. Si assegna un indirizzo IP a ciascun dispositivo su Internet, e tale indirizzo è necessario per trovare il dispositivo Internet appropriato, proprio come per trovare una determinata casa si utilizza un indirizzo stradale. Quando un utente desidera caricare una pagina web, deve avvenire una traduzione tra ciò che un utente digita nel proprio browser web, quindi il hostname esempio.com e il seguente indirizzo riconoscibile dalla macchina, che sarà dunque necessario per individuare la pagina esempio.com.

Per comprendere il processo alla base della risoluzione DNS, è importante conoscere i diversi componenti hardware tra cui deve passare una query DNS. Per il browser, la ricerca DNS avviene “dietro le quinte” e non richiede alcuna interazione dal computer dell’utente, a parte la richiesta iniziale di ricerca.

I passaggi della ricerca

Nella maggior parte dei casi, DNS si preoccupa della traduzione di un nome di dominio nell’indirizzo IP appropriato, come abbiamo spiegato sopra. Per sapere come funziona questo processo, può essere d’aiuto seguire il percorso di una ricerca DNS, dal momento in cui parte da un browser web, quindi viaggia attraverso il processo di ricerca DNS, e poi effettua il percorso inverso.

Generalmente la ricerca e il processo di lavoro del DNS rispetta i seguenti passaggi:

  1. Un utente digita “esempio.com” in un browser. La query si sposta su Internet, e viene recepita da un resolver DNS ricorsivo;
  2. Il resolver interroga quindi un root nameserver DNS;
  3. Il root server risponde al resolver fornendo l’indirizzo di un server DNS TLD ovvero Top Level Domain come .com o .net, che memorizza le informazioni per i suoi domini. Durante la ricerca di example.com, la nostra richiesta è rivolta al TLD .com;
  4. Il resolver invia successivamente una richiesta al TLD .com;
  5. Il server TLD risponde con l’indirizzo IP del nameserver del dominio, example.com;
  6. Il l risolutore ricorsivo invia una query al nameserver del dominio;
  7. L’indirizzo IP per example.com viene quindi restituito al resolver dal nameserver;
  8. Il resolver DNS risponde al browser con l’indirizzo IP del dominio richiesto inizialmente.

Dopo che gli otto passaggi della ricerca DNS avranno restituito l’indirizzo IP per example.com, il browser sarà in grado di formulare la richiesta per la pagina web: Infine il browser invia una richiesta HTTP all’indirizzo IP e restituisce all’utente la pagina da reindirizzare nel browser.

Per una più facile comprensione si può osservare il seguente schema, che indica come 9° step la breve conclusione nel paragrafo precedente.

Le varie tipologie di DNS 

In una tipica ricerca DNS avvengono tre tipi di query. Utilizzando una combinazione di queste query, l’ottimizzazione del processo di risoluzione DNS può determinare una riduzione della distanza percorsa. In una situazione ideale saranno disponibili i dati dei record memorizzati nella cache, che consentono a un nameserver DNS di restituire una query non ricorsiva.

  1. Query ricorsiva. In una query ricorsiva, un client DNS richiede che un server DNS (in genere un resolver DNS ricorsivo) risponda al client con il record di risorse richiesto, oppure con un messaggio di errore qualora il risolutore non riesca a reperire il record.
  2. Query iterativa. In questa situazione il client DNS consentirà a un server di restituire la migliore risposta possibile. Se il server richiesto non ha una corrispondenza per il nome della query, restituirà un riferimento a un server DNS autoritativo per un livello inferiore del namespace del dominio. Il client quindi eseguirà una query all’indirizzo di riferimento. Questo processo continua con server aggiuntivi lungo la catena di query fino a quando si verifica un errore o un timeout.
  3. Query non ricorsiva. In genere si verifica quando un client resolver invia una query a un server DNS per un record a cui ha accesso perché è autoritativo per il record, o perché il record esiste all’interno della sua cache. In genere, un server memorizza nella cache i record per prevenire un ulteriore consumo di larghezza di banda e caricare su server upstream.

Il caching 

Lo scopo del caching, o memorizzazione nella cache, è quello di archiviare temporaneamente i dati in un certo posto. Questo comporta miglioramenti di prestazioni e affidabilità per le richieste dati.

La memorizzazione nella cache comporta l’archiviazione dei dati in un luogo più vicino al client richiedente, in modo che la query possa essere risolta più velocemente e si evitino ulteriori query nella catena di ricerca. Ciò migliora i tempi di caricamento e riduce il consumo di larghezza di banda e di risorse CPU. I dati possono essere memorizzati in una pluralità di ubicazioni, ognuna delle quali memorizzerà i record per un determinato intervallo di tempo, stabilito da un time to live.

I browser più moderni sono progettati per memorizzare di default nella cache i record per un dato lasso di tempo. Il motivo è che quanto più vicino al browser avviene il caching DNS, meno passaggi dovranno essere eseguiti per controllare la cache e formulare le richieste corrette a un indirizzo IP. Quando viene effettuata una richiesta per un record, la cache del browser è la prima ubicazione che viene controllata.

Su Chrome per esempio è possibile vedere lo stato della propria cache DNS andando su chrome://net-internals/#dns.

Il resolver DNS a livello di sistema operativo è la seconda e ultima fermata locale prima che una query lasci il computer. Il processo all’interno del sistema operativo che è progettato per gestire questa query è comunemente chiamato “stub resolver” o client. Quando uno stub resolver riceve una richiesta da un’applicazione, controlla prima la propria cache per verificare la presenza di un record. In caso contrario, invia una query DNS (con un flag ricorsivo impostato) all’esterno della rete locale a un resolver ricorsivo all’interno del provider di servizi Internet (ISP).

Quando il resolver ricorsivo all’interno dell’ISP riceve una query, come tutti i passaggi precedenti, verificherà anche se la traduzione richiesta dall’host all’indirizzo IP sia già memorizzata nel proprio livello di persistenza locale. Il risolutore ricorsivo ha anche funzionalità aggiuntive a seconda dei tipi di record presenti nella cache:

Se il resolver non ha i record non ha i record A ma ha i record NS per i nameserver autoritativi, interrogherà direttamente quei nameserver, ignorando diversi passaggi nella query DNS. Questo collegamento impedisce le ricerche dai nameserver root e .com (nella nostra ricerca di example.com) e aiuta a risolvere più rapidamente la query DNS. Se il resolver non ha i record NS, invierà una query ai server TLD (.com nel nostro caso), saltando il root server.

Nel caso improbabile in cui il resolver non abbia record che puntano ai server TLD, invierà quindi una query ai root server. Questo evento si verifica in genere dopo l’eliminazione di una cache DNS.

Il DNS autoritativo e il DNS ricorsivo

Chiarite le funzionalità del resolver, è bene anche distinguere le categorie a cui appartiene. Quest’ultimo può essere: ricorsivo oppure autoritativo, come di seguito:

 

  • Il resolver ricorsivo è il computer che risponde a una richiesta ricorsiva da un client, e che impiega del tempo per rintracciare il record. Lo fa formulando una serie di richieste, fino a quando non raggiunge il nameserver autoritativo per il record richiesto. Nel caso non venga trovato alcun record, scade o mostra un messaggio di errore. Fortunatamente, per rintracciare i record necessari per rispondere a un client i resolver ricorsivi non devono fare formulare richieste multiple; la memorizzazione nella cache è un processo di persistenza dei dati che permette di abbreviare il percorso delle richieste fornendo il record risorsa richiesto in precedenza nella ricerca DNS.

  • Un server autoritativo è un server che effettivamente detiene ed è responsabile dei record di risorse DNS. Si tratta del server che si trova nell’ultima parte della catena di ricerca che risponderà con il record richiesto, consentendo in definitiva al browser che effettua la richiesta di raggiungere l’indirizzo IP necessario per accedere a un sito o ad altre risorse web. Un nameserver autoritativo può soddisfare le query dai propri dati senza la necessità di eseguirne una da un’altra fonte, in quanto è source of truth finale per alcuni record DNS.

COMMENTI