Domain Name Services
Next: Configurazione di un name server
Up: Introduzione
Previous: Routing su larga scala
Il Domain Name System è un database distribuito, utilizzato dalle
applicazioni TCP/IP per tradurre i nomi degli host nei rispettivi indirizzi
IP. E' distribuito perchè su Internet non esiste alcun sito
che conosca le informazioni di tutti i domini.
Ciascuna zona o gestore di un dominio mantiene un proprio database
di informazioni attraverso un server DNS primario, che puo' essere interrogato
da qualsiasi client sulla rete.
I client e il name server comunicano tra di loro con il protocollo DNS.
Le applicazioni accedono alle informazioni del DNS tramite un programma
client chiamato resolver.
In Unix le funzioni di libreria che fanno da interfaccia al resolver
si chiamano gethostbyname - che ritorna l' indirizzo dell' host e gethostbyaddr
- che ritorna l' indirizzo dell' host. Il resolver è quindi
parte dell' applicazione, non del kernel Unix.
Il protocollo DNS utilizza il protocollo UDP per mandare query e ricevere
informazioni da un server. Le specifiche sono contenute nel RFC 1034, mentre
le specifiche dell' implementazione nel RFC 1035. Il DNS più diffuso
su Internet si chiama BIND (Berkeley Internet Name Domain).
Quando un server riceve una query per la quale non ha informazioni, deve
contattare un altro name server, in grado di dargli l'informazine richiesta.
Poichè il database è distribuito, i name sever non hanno
informazioni su tutti gli altri name server.
Si utilizzano allora i cosiddetti root name servers
, i cui indirizzi sono conosciuti da tutti i name server primari.
I root name server contengono gli indirizzi IP di tutti i name server
autoritativi (primario e secondario) per tutti i domini di primo livello.
Quindi alcune query possono risultare in una query al root name server,
seguita da una query al server il cui indirizzo è stato fornito
dal root name server. Una caratteristica fondamentale del DNS è il
caching delle informazioni.
Il Domain Name System contiene diversi tipi di record di risorse
(RR - Resource Records ). Ce ne sono circa una ventina. i più usati
sono:
- A (Address). Definisce un indirizzo IP. E' memorizzato come
numero binario di 32 bit.
- PTR (Pointer). Definisce il nome corrispondente ad un indirizzo
IP, L' indirizzo IP è memorizzato come un nome nel dominio in-addr.arpa.
- CNAME (Canonical Name) E' rappresentato come un nome a domini,
ovvero una sequenza di etichette. E' anche noto come alias di un nome a
domini.
- HINFO (Host Information): 2 stringhe di caratteri che
specificano il tipo di CPU e di sistema operativo sul quale si trova il
name server.
- MX (Mail exchange). E' un record utilizzato per definire il
server di posta elettronica corrispondente ad un determinato dominio o
ad una determinata macchina. Possono essere specificati piu' host con
diversa priorità in modo da continuare a fornire il servizio di
posta anche in caso in cui l' host di default non sia disponibile.
- NS (Name server). Specifica il nome del name server autoritativo
(sia primario che secondario) per quel dominio. E' rappresentato da un nome
di domino
Ogni query ad un DNS è formata da tre parti: il nome da ricercare,
il tipo della query e la classe della query. I tipi più comuni di query
corrispondono ai vari tipi di RR: A (1) NS (2) CNAME (5) PTR (12) HINFO (13)
MX (15) AXFR (252) request for zone transfer ANY (255) tutti i tpi di risorse
La classe è sempre 1
Per interrogare un name sever si può usare nslookup
nslookup
Default Server: maggiore.dsnet.it
Address: 0.0.0.0
> set type=any
> cs.unibo.it
Server: maggiore.dsnet.it
Address: 0.0.0.0
Non-authoritative answer:
cs.unibo.it nameserver = leporello.cs.unibo.it
cs.unibo.it nameserver = simon.cs.cornell.edu
cs.unibo.it nameserver = admii.arl.army.mil
cs.unibo.it nameserver = dns.nis.garr.it
cs.unibo.it internet address = 130.136.1.110
cs.unibo.it preference = 10, mail exchanger = spoletta.dm.unibo.it
cs.unibo.it preference = 0, mail exchanger = leporello.cs.unibo.it
Authoritative answers can be found from:
cs.unibo.it nameserver = leporello.cs.unibo.it
cs.unibo.it nameserver = simon.cs.cornell.edu
cs.unibo.it nameserver = admii.arl.army.mil
cs.unibo.it nameserver = dns.nis.garr.it
leporello.cs.unibo.it internet address = 130.136.1.110
simon.cs.cornell.edu internet address = 128.84.154.10
admii.arl.army.mil internet address = 192.5.25.5
admii.arl.army.mil internet address = 128.63.5.4
dns.nis.garr.it internet address = 193.205.245.8
spoletta.dm.unibo.it internet address = 130.136.1.25
> dsnet.it
Server: maggiore.dsnet.it
Address: 0.0.0.0
dsnet.it nameserver = maggiore.dsnet.it
dsnet.it nameserver = ns.ita.tip.net
dsnet.it
origin = maggiore.dsnet.it
mail addr = postmaster.dsnet.it
serial = 980506
refresh = 43200 (12 hours)
retry = 3600 (1 hour)
expire = 604800 (7 days)
minimum ttl = 86400 (1 day)
dsnet.it preference = 20, mail exchanger = maggiore.dsnet.it
dsnet.it preference = 10, mail exchanger = minghetti.dsnet.it
dsnet.it nameserver = maggiore.dsnet.it
dsnet.it nameserver = ns.ita.tip.net
maggiore.dsnet.it internet address = 195.32.0.15
ns.ita.tip.net internet address = 194.20.0.111
minghetti.dsnet.it internet address = 195.32.0.11
> set type=PTR
> 195.32.0.15
Server: maggiore.dsnet.it
Address: 0.0.0.0
15.0.32.195.in-addr.arpa name = maggiore.dsnet.it
0.32.195.in-addr.arpa nameserver = maggiore.dsnet.it
0.32.195.in-addr.arpa nameserver = fusilla.abanet.it
maggiore.dsnet.it internet address = 195.32.0.15
fusilla.abanet.it internet address = 195.32.12.10
> set type=A
> 195.32.0.15
Server: maggiore.dsnet.it
Address: 0.0.0.0
Name: maggiore.dsnet.it
Address: 195.32.0.15
SOFTWARE PROGETTO DSNET
Mercoledi' 13 maggio 1998