RFC 1035 - Noms de domaine - Implémentation et spécification
Statut : Standard Internet (STD 13)
Obsolète : RFC 882, 883, 973
Auteur : Paul Mockapetris (ISI)
Date de publication : Novembre 1987
Résumé
Ce RFC décrit les détails du système de domaine et du protocole, et suppose que le lecteur est familier avec les concepts discutés dans le RFC complémentaire « Domain Names - Concepts and Facilities (Noms de domaine - Concepts et facilités) » [RFC-1034].
Le système de domaine est un mélange de fonctions et de types de données qui sont un protocole officiel et de fonctions et types de données qui sont encore expérimentaux. Étant donné que le système de domaine est intentionnellement extensible, de nouveaux types de données et des comportements expérimentaux doivent toujours être attendus dans les parties du système au-delà du protocole officiel. Les parties du protocole officiel incluent les requêtes standard, les réponses et les formats de données RR de classe Internet (par exemple, les adresses d'hôte).
Importance
Le RFC 1035 forme avec le RFC 1034 la spécification de base du DNS :
- RFC 1034 : Concepts et facilités (théorie et architecture)
- RFC 1035 : Implémentation et spécification (protocole et formats)
Ce RFC fournit tous les détails techniques nécessaires pour implémenter le DNS, notamment :
- 📦 Format et encodage des messages
- 📋 Définitions des enregistrements de ressources
- 📁 Format des fichiers de zone
- 🖥️ Implémentation du serveur de noms
- 🔍 Implémentation du résolveur
Table des matières
2. Introduction
- 2.1 Vue d'ensemble
- 2.2 Configurations courantes
- 2.3 Conventions
- 2.3.1 Syntaxe de nom préférée
- 2.3.2 Ordre de transmission des données
- 2.3.3 Casse des caractères
- 2.3.4 Limites de taille
3. Domain Name Space and RR Definitions (Espace de noms de domaine et définitions RR)
- 3.1 Définitions de l'espace de noms
- 3.2 Définitions RR
- 3.2.1 Format
- 3.2.2 Valeurs TYPE
- 3.2.3 Valeurs QTYPE
- 3.2.4 Valeurs CLASS
- 3.2.5 Valeurs QCLASS
- 3.3 RR standards
- 3.3.1 Format CNAME RDATA
- 3.3.2 Format HINFO RDATA
- 3.3.3 Format MB RDATA (EXPÉRIMENTAL)
- 3.3.4 Format MD RDATA (Obsolète)
- 3.3.5 Format MF RDATA (Obsolète)
- 3.3.6 Format MG RDATA (EXPÉRIMENTAL)
- 3.3.7 Format MINFO RDATA (EXPÉRIMENTAL)
- 3.3.8 Format MR RDATA (EXPÉRIMENTAL)
- 3.3.9 Format MX RDATA
- 3.3.10 Format NULL RDATA (EXPÉRIMENTAL)
- 3.3.11 Format NS RDATA
- 3.3.12 Format PTR RDATA
- 3.3.13 Format SOA RDATA
- 3.3.14 Format TXT RDATA
- 3.4 RR spécifiques à Internet
- 3.4.1 Format A RDATA
- 3.4.2 Format WKS RDATA
- 3.5 Domaine IN-ADDR.ARPA
- 3.6 Définition de nouveaux types, classes et espaces de noms spéciaux
4. Messages
- 4.1 Format
- 4.1.1 Format de la section d'en-tête
- 4.1.2 Format de la section de question
- 4.1.3 Format des enregistrements de ressources
- 4.1.4 Compression des messages
- 4.2 Transport
- 4.2.1 Utilisation UDP
- 4.2.2 Utilisation TCP
5. Master Files (Fichiers maîtres)
- 5.1 Format
- 5.2 Utilisation des fichiers maîtres pour définir les zones
- 5.3 Exemple de fichier maître
6. Name Server Implementation (Implémentation du serveur de noms)
- 6.1 Architecture
- 6.1.1 Contrôle
- 6.1.2 Base de données
- 6.1.3 Temps
- 6.2 Traitement des requêtes standard
- 6.3 Traitement de rafraîchissement et de rechargement de zone
- 6.4 Requêtes inverses (Optionnel)
- 6.5 Requêtes et réponses de complétion
7. Resolver Implementation (Implémentation du résolveur)
- 7.1 Transformation d'une demande utilisateur en requête
- 7.2 Envoi des requêtes
- 7.3 Traitement des réponses
- 7.4 Utilisation du cache
Glossary (Glossaire)
References (Références)
Référence rapide
Format de message DNS
+---------------------+
| Header | 12 octets
+---------------------+
| Question | variable
+---------------------+
| Answer | variable
+---------------------+
| Authority | variable
+---------------------+
| Additional | variable
+---------------------+
Format d'en-tête DNS (12 octets)
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 |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Types RR courants
| TYPE | Valeur | Description |
|---|---|---|
| A | 1 | Adresse d'hôte |
| NS | 2 | Serveur de noms autoritaire |
| CNAME | 5 | Nom canonique (alias) |
| SOA | 6 | Début d'autorité |
| PTR | 12 | Pointeur de nom de domaine |
| MX | 15 | Échange de courrier |
| TXT | 16 | Chaînes de texte |
| AAAA | 28 | Adresse IPv6 (RFC 3596) |
Codes de réponse (RCODE)
| Valeur | Nom | Description |
|---|---|---|
| 0 | NOERROR | Aucune erreur |
| 1 | FORMERR | Erreur de format |
| 2 | SERVFAIL | Échec du serveur |
| 3 | NXDOMAIN | Le nom n'existe pas |
| 4 | NOTIMP | Non implémenté |
| 5 | REFUSED | Refusé |
Limites de taille
| Élément | Limite | Description |
|---|---|---|
| Étiquette | 63 octets | Longueur maximale d'une seule étiquette |
| Nom de domaine | 255 octets | Longueur maximale d'un nom de domaine complet |
| Message UDP | 512 octets | Taille de message UDP par défaut |
| Message TCP | 65535 octets | Taille maximale de message TCP |
| TTL | 2^31-1 secondes | Durée de vie maximale |
Relation avec le RFC 1034
| RFC 1034 | RFC 1035 |
|---|---|
| Concepts et théorie | Implémentation et protocole |
| Structure de l'espace de noms de domaine | Format de message |
| Fonctions du serveur de noms | Implémentation du serveur de noms |
| Concepts du résolveur | Implémentation du résolveur |
| Gestion des zones | Format des fichiers de zone |
Exigences d'implémentation
Doit implémenter (MUST)
- ✅ Requêtes et réponses standard
- ✅ Enregistrements A, NS, CNAME, SOA, PTR, MX
- ✅ Transport UDP (512 octets)
- ✅ Compression des messages
- ✅ Comparaison insensible à la casse
Devrait implémenter (SHOULD)
- ✅ Transport TCP (pour les grandes réponses)
- ✅ Transfert de zone (AXFR)
- ✅ Mise en cache et gestion TTL
- ✅ Support des requêtes récursives
Peut implémenter (MAY)
- Requêtes inverses
- Types RR expérimentaux
- Mises à jour dynamiques
RFC connexes
- RFC 1034 : Concepts et facilités DNS (document complémentaire)
- RFC 2181 : Clarifications de la spécification DNS
- RFC 2308 : Mise en cache négative des requêtes DNS
- RFC 3596 : Extensions DNS pour IPv6
- RFC 4033-4035 : DNSSEC
- RFC 6891 : EDNS(0)
- RFC 8499 : Terminologie DNS
Ressources en ligne
Document complémentaire : RFC 1034 - Concepts et facilités DNS
Chapitre suivant : 2. Introduction