RFC 1035 - Nomi di dominio - Implementazione e specifica
Stato: Standard Internet (STD 13)
Obsoleto: RFC 882, 883, 973
Autore: Paul Mockapetris (ISI)
Data di pubblicazione: Novembre 1987
Riepilogo
Questo RFC descrive i dettagli del sistema di dominio e del protocollo, e presuppone che il lettore abbia familiarità con i concetti discussi nel RFC complementare «Domain Names - Concepts and Facilities (Nomi di dominio - Concetti e strutture)» [RFC-1034].
Il sistema di dominio è una combinazione di funzioni e tipi di dati che costituiscono un protocollo ufficiale e funzioni e tipi di dati che sono ancora sperimentali. Poiché il sistema di dominio è intenzionalmente progettato per essere estensibile, nuovi tipi di dati e comportamenti sperimentali dovrebbero sempre essere previsti nelle parti del sistema oltre il protocollo ufficiale. Le parti del protocollo ufficiale includono query standard, risposte e formati di dati RR di classe Internet (ad esempio, indirizzi host).
Importanza
RFC 1035 insieme a RFC 1034 forma la specifica di base del DNS:
- RFC 1034: Concetti e strutture (teoria e architettura)
- RFC 1035: Implementazione e specifica (protocollo e formati)
Questo RFC fornisce tutti i dettagli tecnici necessari per implementare il DNS, inclusi:
- 📦 Formato e codifica dei messaggi
- 📋 Definizioni dei record di risorse
- 📁 Formato dei file di zona
- 🖥️ Implementazione del name server
- 🔍 Implementazione del resolver
Indice
2. Introduction (Introduzione)
- 2.1 Panoramica
- 2.2 Configurazioni comuni
- 2.3 Convenzioni
- 2.3.1 Sintassi del nome preferita
- 2.3.2 Ordine di trasmissione dei dati
- 2.3.3 Maiuscole e minuscole dei caratteri
- 2.3.4 Limiti di dimensione
3. Domain Name Space and RR Definitions (Spazio dei nomi di dominio e definizioni RR)
- 3.1 Definizioni dello spazio dei nomi
- 3.2 Definizioni RR
- 3.2.1 Formato
- 3.2.2 Valori TYPE
- 3.2.3 Valori QTYPE
- 3.2.4 Valori CLASS
- 3.2.5 Valori QCLASS
- 3.3 RR standard
- 3.3.1 Formato CNAME RDATA
- 3.3.2 Formato HINFO RDATA
- 3.3.3 Formato MB RDATA (SPERIMENTALE)
- 3.3.4 Formato MD RDATA (Obsoleto)
- 3.3.5 Formato MF RDATA (Obsoleto)
- 3.3.6 Formato MG RDATA (SPERIMENTALE)
- 3.3.7 Formato MINFO RDATA (SPERIMENTALE)
- 3.3.8 Formato MR RDATA (SPERIMENTALE)
- 3.3.9 Formato MX RDATA
- 3.3.10 Formato NULL RDATA (SPERIMENTALE)
- 3.3.11 Formato NS RDATA
- 3.3.12 Formato PTR RDATA
- 3.3.13 Formato SOA RDATA
- 3.3.14 Formato TXT RDATA
- 3.4 RR specifici di Internet
- 3.4.1 Formato A RDATA
- 3.4.2 Formato WKS RDATA
- 3.5 Dominio IN-ADDR.ARPA
- 3.6 Definizione di nuovi tipi, classi e spazi dei nomi speciali
4. Messages (Messaggi)
- 4.1 Formato
- 4.1.1 Formato della sezione header
- 4.1.2 Formato della sezione question
- 4.1.3 Formato del record di risorse
- 4.1.4 Compressione dei messaggi
- 4.2 Trasporto
- 4.2.1 Utilizzo UDP
- 4.2.2 Utilizzo TCP
5. Master Files (File master)
- 5.1 Formato
- 5.2 Utilizzo dei file master per definire le zone
- 5.3 Esempio di file master
6. Name Server Implementation (Implementazione del name server)
- 6.1 Architettura
- 6.1.1 Controllo
- 6.1.2 Database
- 6.1.3 Tempo
- 6.2 Elaborazione delle query standard
- 6.3 Elaborazione dell'aggiornamento e ricaricamento della zona
- 6.4 Query inverse (Opzionale)
- 6.5 Query e risposte di completamento
7. Resolver Implementation (Implementazione del resolver)
- 7.1 Trasformazione di una richiesta utente in una query
- 7.2 Invio delle query
- 7.3 Elaborazione delle risposte
- 7.4 Utilizzo della cache
Glossary (Glossario)
References (Riferimenti)
Riferimento rapido
Formato del messaggio DNS
+---------------------+
| Header | 12 byte
+---------------------+
| Question | variabile
+---------------------+
| Answer | variabile
+---------------------+
| Authority | variabile
+---------------------+
| Additional | variabile
+---------------------+
Formato dell'header DNS (12 byte)
1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ID |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR| Opcode |AA|TC|RD|RA| Z | RCODE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QDCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ANCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| NSCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ARCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Tipi RR comuni
| TYPE | Valore | Descrizione |
|---|---|---|
| A | 1 | Indirizzo host |
| NS | 2 | Name server autoritativo |
| CNAME | 5 | Nome canonico (alias) |
| SOA | 6 | Inizio dell'autorità |
| PTR | 12 | Puntatore al nome di dominio |
| MX | 15 | Scambio di posta |
| TXT | 16 | Stringhe di testo |
| AAAA | 28 | Indirizzo IPv6 (RFC 3596) |
Codici di risposta (RCODE)
| Valore | Nome | Descrizione |
|---|---|---|
| 0 | NOERROR | Nessun errore |
| 1 | FORMERR | Errore di formato |
| 2 | SERVFAIL | Errore del server |
| 3 | NXDOMAIN | Il nome non esiste |
| 4 | NOTIMP | Non implementato |
| 5 | REFUSED | Rifiutato |
Limiti di dimensione
| Elemento | Limite | Descrizione |
|---|---|---|
| Etichetta | 63 byte | Lunghezza massima di una singola etichetta |
| Nome di dominio | 255 byte | Lunghezza massima di un nome di dominio completo |
| Messaggio UDP | 512 byte | Dimensione predefinita del messaggio UDP |
| Messaggio TCP | 65535 byte | Dimensione massima del messaggio TCP |
| TTL | 2^31-1 secondi | Tempo di vita massimo |
Relazione con RFC 1034
| RFC 1034 | RFC 1035 |
|---|---|
| Concetti e teoria | Implementazione e protocollo |
| Struttura dello spazio dei nomi di dominio | Formato del messaggio |
| Funzioni del name server | Implementazione del name server |
| Concetti del resolver | Implementazione del resolver |
| Gestione delle zone | Formato dei file di zona |
Requisiti di implementazione
Deve implementare (MUST)
- ✅ Query e risposte standard
- ✅ Record A, NS, CNAME, SOA, PTR, MX
- ✅ Trasporto UDP (512 byte)
- ✅ Compressione dei messaggi
- ✅ Confronto case-insensitive
Dovrebbe implementare (SHOULD)
- ✅ Trasporto TCP (per risposte di grandi dimensioni)
- ✅ Trasferimento di zona (AXFR)
- ✅ Caching e gestione TTL
- ✅ Supporto per query ricorsive
Può implementare (MAY)
- Query inverse
- Tipi RR sperimentali
- Aggiornamenti dinamici
RFC correlati
- RFC 1034: Concetti e strutture DNS (documento complementare)
- RFC 2181: Chiarimenti sulla specifica DNS
- RFC 2308: Caching negativo delle query DNS
- RFC 3596: Estensioni DNS per IPv6
- RFC 4033-4035: DNSSEC
- RFC 6891: EDNS(0)
- RFC 8499: Terminologia DNS
Risorse online
- Pagina ufficiale di RFC 1035
- RFC 1035 DataTracker
- Analizzatore di protocollo DNS
- Strumento di query DNS
Documento complementare: RFC 1034 - Concetti e strutture DNS
Capitolo successivo: 2. Introduction (Introduzione)