Il DNS (Domain Name System) è l' infrastruttura più critica di Internet.
Ogni utente connesso a Internet, consapevolmente o inconsapevolmente, fa centinaia di query DNS ogni giorno.
Così, in un certo senso, internet è quasi inutile senza il sistema chiamato come DNS.
L'unico modo per utilizzare internet senza DNS, è quello di memorizzare tutti gli indirizzi IP numerici associati ad ogni singolo dominio e non solo, ma dovrete ricordare quale indirizzo IP è per quale dominio. Come dire Mission Impossible.
L' architettura DNS funziona su una struttura ad albero invertita.
Nella parte superiore dell' albero invertito si trovano 13 root server DNS, e poi segue il TLD server (Top Level Domain), e sotto i server TLD segue il server DNS autoritativo per ogni specifico dominio (a volte chiamato come dominio secondario).
Il diagramma mostra la classificazione della struttura ad albero invertita DNS.
Si può vedere chiaramente che i server root sono nella parte superiore dell' albero invertito, gTLD (Generic Top Level Domains) & CCTLD (Country Code Top Level Domain) si trova al di sotto dei server root, e poi arriva il server DNS per un dominio di esempio.
Ora consideriamo la struttura ad albero mostrata come il diagramma di flusso di una risoluzione del nome DNS.
Quindi, per esempio, se si desidera trovare l' indirizzo IP di mail.es_dominio.com, è possibile effettuare due tipi di domanda (query) DNS.
Una è chiamato "interattiva" e l'altra "ricorsiva" (che è la configurazione normale di tutti i server DNS locali).
Il sistema Domain Name System (DNS), tradotto Sistema di nome di dominio, è stato elaborato nel novembre del 1983 da Paul Mockapetris (RFC 882 e RFC 883), poi rivisto nel 1987 negli RFCs 1034 e 1035. Il DNS è stato oggetto di più RFC.
Il sistema propone:
Uno
spazio dei nomi (
namespace) gerarchico che permette di garantire l'unicità di un nome in una struttura ad arborescenza, allo stesso modo dei
sistemi di file di Unix;
Un sistema di server distribuiti permette di rendere disponibile lo spazio dei nomi;
Un sistema di client permette di «risolvere» i nomi dei domini, cioè di interrogare i server per conoscere l'indirizzo IP corrispondente ad un nome.
Lo spazio dei nomi
La strutturazione del sistema DNS si basa su una struttura ad arborescenza in cui sono definiti dei domini di livello superiore (detti TLD, per Top Level Domains), collegati ad un nodo radice rappresentato da un punto:
Viene detto nome del dominio ogni nodo dell'albero.
Ogni nodo possiede un'etichetta (in inglese «label») con una lunghezza massima di 63 caratteri.
L'insieme dei nomi di dominio costituisce quindi un albero inverso dove ogni nodo è separato dal seguente da un punto (« . »).
L'estremità di un ramo è detta host, e corrisponde ad un terminale o un'entità di rete.
Il nome del host che gli è attribuito deve essere unico nel dominio considerato, o se esiste nel sotto-dominio.
Ad esempio il server web di un dominio ha quindi generalmente il nome www.
La parola «dominio» corrisponde formalmente al suffisso di un nome di dominio, cioè l'insieme delle etichette dei nodi di un arborescenza, ad eccezione del host.
Il nome assoluto corrispondente all'insieme delle etichette dei nodi di un'arborescenza, separate da punti, e terminato da un punto finale, è detto indirizzo FQDN (Fully Qualified Domain Name, cioè Nome del Dominio Totalmente Qualificato).
La profondità massima dell'arborescenza è di 127 livelli e la lunghezza massima di un nome FQDN è di 255 caratteri. L'indirizzo FQDN permette di individuare inequivocabilmente un terminale sulla rete di reti. Quindi supporto.fattispazio.it. rappresenta un indirizzo FQDN.
I server dei nomi
I terminali detti server di nome di dominio permettono di stabilire la corrispondenza tra il nome del dominio e l'indirizzo IP dei terminali di una rete.
Ogni dominio possiede un server di nomi di domini, detto «server di nomi primario » (primary domain name server), nonché un server di nomi secondario (secondary domaine name server), che permette di sostituirsi al server di nomi primario in caso di indisponibilità.
Ogni server di nomi è dichiarato in un server di nomi di dominio di livello immediatamente superiore, cosa che permette implicitamente una delega di autorità sui domini.
Il sistema di nomi è un'architettura distribuita, dove ogni entità è responsabile della gestione del proprio nome di dominio.
Non esiste quindi un organismo che abbia il compito di gestire l'insieme dei nomi di domini.
I server corrispondenti ai domini di più alto livello (TLD) sono detti «server di nomi radice».
Ne esistono tredici, ripartiti in tutto il mondo, sotto i nomi «a.root-servers.net» a «m.root-servers.net».
Un server di nomi definisce una zona, cioè un insieme di domini sui quali il server ha autorità. Il sistema di nomi di dominio è trasparente per l'utente, tuttavia non bisogna dimenticare i punti seguenti:
Ogni computer deve essere configurato con l'indirizzo di un terminale capace di trasformare qualunque nome in un indirizzo IP. Questo terminale è detto Domain Name Server.
Quando vi connettete ad internet, l'ISP modifica automaticamente i vostri parametri di rete per mettervi a disposizione questi server di nomi.
L'indirizzo IP di un secondo Domain Name Server (secondary Domain Name Server) deve essere ugualmente definito.
Il server di nomi secondario può sostituire il server di nomi primario in caso di malfunzionamento del primo.
Il server più conosciuto si chiama
BIND (
Berkeley Internet Name Domain). Si tratta di un software libero disponibili sui sistemi
UNIX, sviluppato inizialmente dall'università di Berkeley in California e ormai mantenuto dall'
ISC (
Internet Systems Consortium).
Risoluzione dei nomi di dominio
Il meccanismo che consiste nel trovare l'indirizzo IP corrispondente al nome di un host è detto «risoluzione di nome di dominio».
L'applicazione che permette di realizzare questa operazione (generalmente integrata al sistema operativo) è detta «resolver».
Quando un'applicazione vuole connettersi ad un host conosciuto con il suo nome di dominio (ad esempio «supporto.fattispazio.it»), questa interroga un server di nomi definito nella sua configurazione di rete.
Ogni terminale connesso alla rete ha in effetti nella sua configurazione gli indirizzi IP dei due server di nomi del suo provider internet.
Una richiesta è quindi inviata al primo server di nomi (detto «server di nome primario»). Se questo ha la registrazione nella sua cache, la invia all'applicazione, in caso contrario interroga il server radice (nel nostro caso un server radice che corrisponda al TLD «.it»). Il server del nome radice rinvia un elenco di server di nomi che rappresentano un'autorità sul dominio (in questo caso gli indirizzi IP dei server di nomi primari e secondari di fattispazio.it).
Il server di nomi primario che ha autorità sul dominio sarà interrogato e manderà la registrazione corrispondente al host sul dominio (nel nostro caso supporto):
Tipi di registrazioni
Un DNS è un database ripartito contenente delle registrazioni, dette RR (Resource Records), che riguardano i nomi dei domini. I soli ad essere interessati alla lettura delle informazioni riportate in seguito sono le persone responsabili dell'amministrazione di un dominio, dato che il funzionamento dei server di nomi è totalmente trasparente per gli utenti.
A causa del sistema di cache che permette al sistema DNS di essere ripartito, le registrazioni di ogni dominio possiedono una durata di vita, detta TTL (Time To Live, tradotto speranza di vita), che permette ai server intermedi di conoscere la data di scadenza delle informazioni e così di sapere se una verifica è più o meno necessaria. In maniera generale, una registrazione DNS comporta le seguenti informazioni:
Nome del dominio (FQDN) | TTL | Tipo | Classe | RData |
supporto.fattispazio.it. |
3600 |
A |
IN |
108.61.159.211 |
Nome del dominio: il nome del dominio deve essere un nome FQDN, cioè terminare con un punto. Se il punto è omesso, il nome del dominio è relativo, cioè il nome del dominio principale suffisserà il dominio inserito;
Tipo: un valore su 16 bit che specifica il tipo di risorsa descritta dalla registrazione.
Il tipo di risorsa può essere una delle seguenti:
A: si tratta del tipo di base che stabilisce la corrispondenza tra un nome canonico e un indirizzo IP.
D'altronde, possono esistere più registrazioni A, corrispondenti ai differenti terminali di rete (server)M
CNAME (Canonical Name): permette di far corrispondere un alias al nome canonico.
E' particolarmente utile per fornire dei nomi alternativi corrispondenti ai diversi servizi di uno stesso terminale;
HINFO: si tratta di un campo descrittivo che permette di descrivere soprattutto l'hardware (CPU) e il sistema operativo (OS) di un host.
Generalmente si consiglia di non indicarlo per non fornire degli elementi di informazione che possano rivelarsi utili per dei pirati informatici;
MX (
Mail eXchange): corrisponde al server di gestione della posta. Quando un utente invia un messaggio elettronico ad un indirizzo (
utente@dominio), il server della posta in uscita interroga il server di nome che ha autorità sul dominio per ottenere la registrazione MX.
Possono esistere più MX per dominio, per fornire una ridondanza in caso di guasto del server di messaggeria principale. Così la registrazione permette di definire una priorità con un valore che può andare da 0 a 65 535 :supporto.fattispazio.it. IN MX 10 mail.fattispazio.it.
NS: corrisponde al server di nomi con autorità sul dominio;
PTR: un puntatore verso un'altra parte dello spazio di nomi dei domini;
SOA (Start Of Authority): il campo SOA permette di descrivere il server di nome con autorità sulla zona, nonché l'indirizzo elettronico del contatto tecnico (da cui il carattere «@» è sostituito da un punto);
Classe: la classe può essere sia IN (corrispondente ai protocolli d'internet, si tratta quindi del sistema usato nel nostro caso,) sia CH (per i sistemi caotici);
RDATA: si tratta dei dati corrispondenti alla registrazione. Ecco le informazioni attese secondo il tipo di registrazione
A: un indirizzo IP a 32 bit;
CNAME: un nome di dominio;
MX: un valore di priorità a 16 bit, seguito da un nome del host;
NS: un nome dell'host;
PTR: un nome di dominio;
SOA: più campi.
Domini di alto livello
Esistono due categorie di TLD (Top Level Domain, ossia domini di più alto livello):
I domini detti «generici», chiamati gTLD (generic TLD). I gTLD sono dei nomi di domini generici di livello superiore che propongono una classificazione secondo il settore di attività. Così ogni gTLD ha le proprie regole di accesso:
gTLD storici
.com corrispondevano inizialmente alle aziende a vocazione commerciale. Ormai questo TLD è diventato il « TLD di default » e l'acquisizione del dominio con questa estensione è possibile anche per i privati.
.edu corrisponde agli enti educativi;
.gov corrisponde agli enti governativi;
.int corrisponde alle organizzazioni internazionali;
.mil corrisponde agli organismi militari;
.net corrispondeva inizialmente agli enti con tratti di rete. Questo TLD è diventato da qualche anno un TLD corrente. L'acquisizione di domini con questa estensione è possibile anche per i privati.
.org corrisponde solitamente alle aziende senza scopo di lucro.
nuovi gTLD introdotti nel novembre 2000 dall'ICANN :
.aero corrisponde all'industria aeronautica;
.biz( business) corrisponde alle aziende commerciali;
.museum corrisponde ai musei;
.name corrisponde a nomi di persone o a nomi di personaggi immaginari;
.info corrisponde agli enti con tratti di informazione;
.coop corrispondente alle cooperative;
.pro corrispondente alle professioni liberali.
gTLD speciali:
.arpa corrisponde alle infrastrutture di gestione di rete. L'gTLD arpa serve quindi alla risoluzione inversa dei terminali di rete, permettendo di trovare il nome corrispondente ad un indirizzo IP.
I domini detti «nazionali», chiamati ccTLD(country code TLD). I ccTLD corrispondono ai differenti paesi e i loro nomi corrispondono alle abbreviazioni dei nomi dei paesi definite dalla norma ISO 3166.
La tabella qua sotto riassume l'elenco dei ccTLD:
Codice Paese
- AC Isola dell'Ascensione - AD Andorra - AE Emirati Arabi Uniti - AF Afganistan - AG Antigua e Barbuda - AI Anguilla - AL Albania - AM Armenia - AN Antille Olandesi - AO Angola - AQ Antartica - AR Argentina - AS Samoa Americane - AT Austria - AU Australia - AW Aruba - AZ Azerbaigian - BA Bosnia-Erzegovina - BB Barbados - BD Bangladesh - BE Belgio - BF Burkina Faso -BG Bulgaria - BH Bahreïn - BI Burundi - BJ Benin - BM Bermuda - BN Brunei - BO Bolivia - BR Brasile - BS Bahamas - BT Bhutan - BV Isola Bouvet - BW Botswana - BY Bielorussia - BZ Belize - CA Canada - CC Isole del Coco - CD Repubblica democratica del Congo - CF Republica Centrafricana - CG Congo - CH Svizzera - CI Costa d'Avorio - CK Isole Cook - CL Cile - CM Camerun - CN Cina - CO Colombia - COM Organismi a scopo commerciale - CR Costa Rica - CU Cuba - CV Capo Verde - CX Isola Christmas - CY Cipro - CZ Republica Ceca - DE Germania - DJ Gibuti - DK Danimarca - DM Dominica - DO Republica Dominicana - DZ Algeria - EC Equatore - EDU Organismo con un rapporto con l'educazione - EE Estonia - EG Egitto - EH Sahara Occidentale - ER Eritrea - ES Spagna - ET Etiopia - EU Europa - FI Finlandia - FJ Fiji - FK Isole Falkland (Malvine) - FM Micronesia - FO Isole Faroer - FR Francia - FX France (Territorio Europeo) - GA Gabon - GB Gran Bretagna - GD Grenada - GE Georgia - GF Guyana Francese - GG Guernesey - GH Ghana - GI Gibilterra - GL Groenlandia - GM Gambia - GN Guinea - GOV Organismo governativo - GP Guadalupe - GQ Guinea Equatoriale - GR Grecia - GS Georgia del Sud - GT Guatemala - GU Guam (USA) - GW Guinea-Bissau - GY Guyana - HK - Hong Kong - HM Isole Heard and McDonald - HN Honduras - HR Croazia - HT Haïti - HU Ungheria - ID Indonesia - IE Irlanda - IL Israele - IM Isola de Man - IN India - IO Territori Britannici dell oceano Indiano - IQ Irak - IR Iran - IS Islanda - IT Italia - JM Giamaica - JO Giordania - JP Giappone - KE Kenia - KG Kirghizistan - KH Cambogia - KI Kiribati - KM Comore - KN Saint Kitts and Nevis - KP Corea del Nord - KR Corea del Sud - KW Kuwait - KY Isole Cayman - KZ Kazakhistan - LA Laos - LB Libano - LC Santa Lucia - LI Liechtenstein - LK Sri Lanka - LR Liberia - LS Lesotho - LT Lituania - LU Lussemburgo - LV Lettonia - LY Libia - MA Marocco - MC Monaco - MD Moldavia - MG Madagascar - MH Isole Marshall - MK Macedonia - ML Mali - MIL Organismo militare - MM Myanmar - MN Mongolia - MO Macao - MP Isole Marianne del Nord - MQ Martinica - MR Mauritania - MS Montserrat - MU Isole Mauritius - MV Maldive - MW Malawi - MX Messico - MY Malesia - MZ Mozambico - NA Namibia - NC Nuova Caledonia - NE Niger - NET Organismo con un rapporto con Internet - NF Isole Norfolk - NG Nigeria - NI Nicaragua - NL Paesi Bassi - NO Norvegia - NP Népal - NR Nauru - NT Zona Neutra - NU Niue - NZ Nuova Zelanda - OM Oman - ORG Organismo non referenziato - PA Panama - PE Perù - PF Polinesia Francese - PG Papuasia Nuova Guinea - PH Filippine - PK Pakistan - PL Polonia - PM Saint-Pierre e Miquelon - PN Pitcairn - PR Porto Rico (USA) - PS Territori Palestinesi - PT Portogallo - PY Paraguay - PW Palau - QA Qatar - RE Réunion - RO Romania - RU Federazione Russa - RW Rwanda - SA Arabia Saudita - SB Isole Salomone - SC Seychelles - SD Sudan - SE Svezia - SG Singapore - SH Sant Elena - SI Slovenia - SJ Isole Svalbard e Jan Mayen - SK Repubblica Slovacca - SL Sierra Leone - SM San Marino - SN Senegal - SO Somalia - SR Suriname - ST Sao Tomé e Principe - SU Unione Sovietica - SV Salvador - SY Siria - SZ Swaziland - TC Isole Turks e Caicos - TD Ciad - TF Territori Australi Francesi - TG Togo - TH Tailandia - TJ Tadjikistan - TK Tokelau - TM Turkmenistan - TN Tunisia - TO Tonga - TP Timor Est - TR Turchia - TT Trinidad e Tobago - TV Tuvalu - TW Taiwan - TZ Tanzania - UA Ucraina - UG Uganda - UK Regno Unito - UM US Minor Outlying Islands - US Stati Uniti - UY Uruguay - UZ Uzbekistan - VA Città del Vaticano - VC Saint-Vincent e Grenadines - VE Venezuela - VG Isole Vergini Britanniche - VI Isole Vergini Americane - VN Vietnam - VU Vanuatu - WF Wallis e Futuna - WS Samoa Occidentali - YE Yemen - YT Mayotte - YU Iugoslavia - ZA Sud Africa - ZM Zambia - ZR Zaire - ZW Zimbabwe