Les records DNS renferment généralement plusieurs champs. Ces champs contiennent toutes sortes d'informations pertinentes. Comparé à d’autres enregistrements, le record SOA comprend beaucoup de champs :
- <name> : nom de la zone
- <class> : classe du réseau
- <type> : type d’enregistrement
- <mname> : nom du serveur principal
- <rname> : adresse email de l’administrateur responsable
- <serial> : numéro de série incrémenté, permettant d’identifier la version du fichier de zone
- <refresh> : intervalle précisant à quel moment un serveur secondaire doit interroger la version du serveur primaire
- <retry> : intervalle précisant à quel moment un serveur secondaire doit renouveler sa requête en cas d’échec
- <expire> : intervalle précisant à quel moment les informations DNS ne doivent plus être délivrées en cas d’absence de réponse de la part du serveur primaire
- <minimum> : intervalle précisant combien de temps les informations peuvent être conservées dans le cache
Les trois premiers champs sont représentatifs de tous les records DNS. Le nom de la zone est un Domain-Name rédigé sous la forme d’un Fully Qualified Domain Names (FQDN) (noms de domaines pleinement qualifiés). À la différence des URL, cette information est enregistrée avec un point final. Pourquoi ? Un FQDN présente toute la structure hiérarchique du domaine avec, à son extrémité, le répertoire-racine. Celui-ci étant vide, il ne reste plus que le point de séparation. On trouve cette forme de notation dans tous les noms de domaines du DNS, même dans les champs MNAME et RNAME.
Le champ Classe n’a plus qu’une signification historique. Il est donc très souvent laissé de côté. Lorsque le DNS a été développé, il existait, en plus de l’Internet, deux autres projets : Hesiod (HS) et Chaos (CH). Ces deux réseaux n’existent plus de nos jours, ce qui explique que ce champ renferme exclusivement la mention IN. Le Type renvoie au type d’enregistrement DNS. Ici, il s’agit d’un enregistrement SOA.
MNAME, aussi connu sous le nom de Primary Master, est un champ qui précise le nom du serveur primaire par rapport au serveur secondaire. Cette information permet à un serveur subordonné de savoir vers quel serveur il doit se tourner pour le transfert de zones. Il y a quelques précautions à prendre quant au format de l’adresse email dans le champ RNAME. L’enregistrement ne doit pas comporter le signe @. Pour séparer la partie locale (ex. le nom de l’utilisateur) du domaine, vous devez utiliser le point. Dans le cas où l’adresse email originale comprendrait un point avant le signe @, vous devrez remplacer ce point par un backslash (\).
Le numéro de série doit être incrémenté à chaque fois que le fichier de zone est modifié. Deux variantes sont communes. On peut opter pour un simple incrément de 1, en ajoutant 1 au numéro de série à chaque modification. Cette option est assez courante. Elle permet de voir combien de modifications ont été apportées.
L’autre option consiste à choisir un format de date : AAAAMMJJVV On commence par inscrire l’année avec quatre chiffres, suivie du mois et du jour (à deux chiffres chacun) et on termine la saisie par un numéro de version à deux chiffres. Ce format permet d’identifier la date à laquelle la version a été modifiée. Pour chaque modification apportée le même jour, le numéro de version sera incrémenté. Le jour suivant, le numéro de série s’adapte à la nouvelle date, tandis que le numéro de version commence à 00.
L’enregistrement SOA se termine par trois, voire quatre indications de temps, exprimées en secondes. Le premier champ (« Refresh ») donne au serveur secondaire l’intervalle de temps entre deux vérifications du numéro de série de la version du fichier de zone. Si cette requête est laissée sans réponse, c’est le champ « Retry » qui détermine quand doit avoir lieu la première tentative. Il est important que ce délai soit inférieur à la valeur précédente.
Si le serveur de niveau inférieur dans la hiérarchie ne reçoit pas de réponse, la troisième valeur temporelle (« Expire ») prend le relais. C’est elle qui détermine combien de temps on peut continuer à utiliser le fichier de zone, avant que le serveur ne rejette la délivrance d’informations DNS. Si le serveur continuait à fournir à des clients requérants des données provenant de fichiers de zones périmés, on aurait vite des problèmes de validité, avec des problèmes de connexion et des risques sur le plan de la sécurité.
Le champ « Minimum » marque la fin. Ce champ correspond au Time to Live qu’on rencontre dans les autres enregistrements DNS. Ce champ précise combien de temps un client peut conserver les données dans le cache avant de devoir renouveler sa requête. Généralement le TTL est enregistré de manière globale pour l’ensemble de la zone avec la mention $TTL. Dans un tel cas, il est inutile de répéter cette mention dans chaque enregistrement. Le nom de la zone peut être défini au début du fichier au moyen de la mention $ORIGIN.
L’enregistrement se fait toujours au début du fichier de zone.