Il DNS
Dns distribuiti
Come detto più volte in precedenza, i DNS sono progettati per fare 2 cose:
- Accettare richieste da programmi per convertire nomi di dominio in indirizzi IP
- Accettare richieste da altri DNS per convertire nomi di dominio in indirizzi IP
Quando una di queste due richieste arriva, il DNS può fare diverse cose:
- Può rispondere alla richiesta se conosce l'IP address del dominio
- Può contattare altri DNS e girare a loro la richiesta
- Può rispondere "Non conosco l'IP address del dominio richiesto ma conosco quello di un DNS che lo sa"
- Può rispondere con un messaggio di errore se il dominio richiesto è inesistente o errato
Supponiamo di aver digitato nel nostro browser www.comefunziona.net. Il browser contatterà il server DNS dicendogli "Ho bisogno dell'indirizzo IP del dominio www.comefunziona.net". Il DNS per prima cosa controllerà se nella sua cache c'è l'IP address del sito richiesto.
Se lo trova lo restituisce immediatamente al browser ed il suo lavoro finisce. In caso contrario contatterà uno dei cosiddetti root name servers. Questi server (al momento ne esistono 13) conoscono gli indirizzi IP dei DNS che gestiscono i domini di primo livello. Nel nostro esempio quindi, il DNS contatterà il server dei domini .net che l suo interno conterrà il dominio che stiamo cercando oppure un altro DNS a cui girare la richiesta. Una volta trovato l'IP address del dominio comefunziona.net, questo verrà ritornato dal root server fino al nostro DNS che provvederà poi a comunicarlo al browser.
L'albero di ricerca usato dai server DNS nell'esempio precedente
Ecco la lista dei server, con relativo indirizzo IP:
A.ROOT-SERVERS.NET. IP=198.41.0.4
B.ROOT-SERVERS.NET. IP=128.9.0.107
C.ROOT-SERVERS.NET. IP=192.33.4.12
D.ROOT-SERVERS.NET. IP=128.8.10.90
E.ROOT-SERVERS.NET. IP=192.203.230.10
F.ROOT-SERVERS.NET. IP=192.5.5.241
G.ROOT-SERVERS.NET. IP=192.112.36.4
H.ROOT-SERVERS.NET. IP=128.63.2.53
I.ROOT-SERVERS.NET. IP=192.36.148.17
J.ROOT-SERVERS.NET. IP=198.41.0.10
K.ROOT-SERVERS.NET. IP=193.0.14.129
L.ROOT-SERVERS.NET. IP=198.32.64.12
M.ROOT-SERVERS.NET. IP=202.12.27.33
Praticamente con una struttura di DNS distribuiti, viene creato una sorta di albero binario in cui ricercare i domini.