Service d’annuaire

http://fr.wikipedia.org/wiki/Domain_Name_System

Les  services  d'annuaires  sont  similaires  aux  pages  blanches  ou  aux  pages  jaunes  des  annuaires  du téléphone.  A  l'aide  d'un  annuaire,  on  peut  rechercher  un  nom  d'entité,  un  restaurant  par  exemple, dans  un  contexte  connu,  comme  la  ville  où  l'on  réside.  Ou  bien  on  peut  rechercher  un  restaurant particulier  par  son  nom.  Grâce  aux  services  d'annuaires,  un  programme  recherche  des  attributs  de différents  types  concernant  le  contrôle  d'accès,  l'authentification,  les  domaines,  les  groupes,  les adresses réseau, les adresses de port, ….
 
La figure ci dessous illustre l'implantation d'un service d'annuaires type. Les clients se connectent au
service  d'annuaire  pour  interroger  la  base  de  données  du  service.  Certains  services  d'annuaires
peuvent échanger des informations avec d'autres.
Implantation du service d'annuaire
  
Les  services  d'annuaires  fournissent  fréquemment  une  correspondance  entre  une  dénomination explicite,  facile  à  mémoriser,  et  une  adresse  qui  le  serait  difficilement.  On  appelle  cette correspondance  un  service  de  noms.  C'est  l'un  des  nombreux  services  que  peut  offrir  un  service d'annuaires. Le système DNS (Domain Name System : système de noms de domaines) représente un exemple extrêmement populaire de ce type de services.

1. Les débuts

Le fichier hosts situé sur votre ordinateur (C:\winnt\system32\drivers\etc sous Windows 2000 et XP, /etc  pour  Linux,  …).  Ce  fichier  était  utilisé  pour  assigner  une  adresse  IP  à  un  serveur  sur  Internet. Imaginez  aujourd'hui  si  il  fallait  alimenter  ce  fichier  pour  pouvoir  accéder  facilement  à  un  site  sur Internet. Cela serait alors un fichier de plusieurs millions de lignes.
Ce système a donc été remplacé par le système DNS, mais les fichiers hosts existent toujours sur vos ordinateurs et leur utilisation est toujours possible. Vous pouvez donc effectuer un test en insérant une ligne (193.48.44.60  pleiad)  et  ensuite  vous  connecter  à  Internet  et  saisir  au  niveau  de  l'url  pleiad.
Vous constaterez alors que vous accédez au site ne.pleiad.net de la même manière.

2. DNS côté client

http://www.siteduzero.com/tutoriel-3-272111-gerer-son-nom-de-domaine.html#ss_part_2

Sur Internet comme sur n'importe quel système, nous n'avons rien trouvé de mieux aujourd'hui que d'identifier  les  choses  par  un  système  de  numérotation.  Vous  l'avez  compris  le  système  de numérotation  sur  Internet  s'appelle  l'adressage  IP.  Or  nous  avons  une  très  mauvaise  mémoire  des  chiffres, et au contraire nous nous rappelons assez facilement du nom d'une personne. Il existe alors pour  nous  aider  l'annuaire  téléphonique  par  exemple  pour  faire  la  correspondance  entre  le  n°  de téléphone et la personne.
 
Le système DNS sur Internet correspond à une gigantesque base de données permettant de faire la relation entre le nom d'une machine sur Internet et une adresse IP.

L'adresseIP d'un serveur DNS :
Adresse IP d'un serveur DNS obtenu par une ligne de commande ipconfig
Le  meilleur  moyen  de  comprendre  ce  mécanisme  est  de  tester  un  utilitaire  qui  existe  en  ligne  de commande sur la plupart de vos systèmes d'exploitations.

2.1.  NSLOOKUP

Cette commande permet de contrôler le bon fonctionnement d'un DNS. Il est possible par exemple de demander d'afficher l'adresse IP d'un site se trouvant sur Internet. Voyons comment trouver l'adresse IP de ne.pleiad.net :
La commande nslookup permet aussi de savoir si une adresse DNS est déjà attribuée.
Faisons une nslookup www.google.com et voyons le résultat
copie d'écran d'un nslookup de www.google.com


Faisons une nslookup sur une adresse inventée comme www.tyuiop.fr et inexistante
Copie d'écran d'un nslookup d'une adresse DNS inexistante

On remarque ci-dessus que l'on obtient l'information "Non-existent domain".

Comme le montre la copie d'écran ci-dessous, la commande nslookup suivi d'un DNS permet de connaître l'adresseIP de cette DNS.
Résultat d'un nslookup (copie d'écran)
Une autre fonctionnalité de cette commande permet de s'adresser à un autre serveur DNS que celui qui  vous  est  assigné.  Vous  avez  compris  que  lors  d'une  connexion  à  Internet  il  est  nécessaire  de connaître  un  serveur  DNS  permettant  de  répondre  aux  questions  que  vous  vous  posez (informatiquement  parlant).  Ce  ou  ces  serveurs  DNS  sont  par  défaut  ceux  de  votre  fournisseur d'accès.  Mais  il  est  possible  de  s'adresser  directement  à  un  autre  serveur  à  l'aide  de  la  commande nslookup.
Testez l'exemple suivant et constatez le résultat :
Vous  constaterez  alors  que  vous  pouvez  interrogez  un  serveur  racine,  que  vous  pouvez  spécifiez  le type de requête que vous désirez lancer et enfin trouvez quels sont les serveurs .fr susceptible de vous répondre sur les sous domaines de fr.
Résultats des commandes listées ci-dessus

2.2.  Host

Pour  les  adeptes  de  Linux,  la  commande  Host  existe  aussi  permettant  d'effectuer  les  mêmes
opérations. Soit vous saisissez :
Ou alors dans l'autre sens

3. DNS Côté Serveur

Le système DNS est un service de noms hiérarchisé, conçu pour couvrir efficacement un vaste espace de noms. Un espace de noms est simplement une collection de tous les noms mis à disposition par un service de noms. Un espace de noms définit aussi la syntaxe et les conventions de dénomination des
objets.
 
Le  système  DNS  était  à  l'origine  un  mécanisme  imaginé  pour  établir  une  correspondance  entre  des noms et des adresses IP (Internet Protocol). Bien que ce soit l'utilisation la plus populaire du système, DNS offre aussi d'autres fonctionnalités telles que le stockage et la fourniture d'informations sur les
utilisateurs et les listes de mail, l'amélioration des échanges de mails, etc.  
 
Le  système  DNS  définit,  entre  autres,  un  espace  de  noms,  une  base  de  données  distribuée  et  un protocole d'échange des informations.

Chaque entrée de l'arborescence DNS est appelée un node. Chaque node porte un nom. Le node au sommet  de  l'arborescence  est  appelé  la  racine.  Chaque  node  peut  aussi  être  décrit  par  un  nom  de domaine,  connu  également  sous  l'appellation  nom  de  domaine  pleinement  qualifié.  Un  nom  de
domaine est construit en utilisant le nom du node, puis en accolant le nom du parent de ce node et les nodes  parents  suivants  dans  l'ordre,  par  rapport  à  la  racine  de  l'arborescence.  Dans  un  nom  de domaine,  un  point  sépare  les  noms  de  node.  La  racine,  qui  est  aussi  représentée  par  un  point,  est
toujours  omise  dans  un  nom  de  domaine  DNS.  Chaque  composante  du  nom  de  domaine  peut  avoir une  longueur  de  63  octets  ;  la  longueur  totale  du  nom  est  limitée  à  256  octets.  Les  caractères composant le nom sont en général des caractères ASCII imprimables, mais ce n'est pas un impératif absolu. DNS traite le nom de domaine sans tenir compte de la casse.
Schéma node

 
Sur ce schéma ne.pleiad.net est un nom de domaine DNS. Vous pouvez lors remarquer que la lecture d'un nom de domaine se lit de droite à gauche, c'est-à-dire que nous lisons dans un premier temps la racine (.) puis le nom de domaine de niveau inférieur (.net), et ainsi de suite jusqu'au nom de l'hôte
(ici ne). On appelle ça aussi une résolution d'adresse.
 
Schéma ne.pleiad.net 
 
Les noms DNS de second niveau, ou domaines, ont les limitations suivantes :
Comme on vient de le voir, l'espace de noms DNS est simplement la collection, ou arborescence, de noms de domaines DNS avec les règles pour créer ces noms. Chaque node à l'intérieur d'un nom de domaine DNS représente une entité telle qu'un ordinateur ou un alias e-mail. Chaque domaine relève
d'un serveur DNS assigné qui effectue l'administration du domaine. Une compagnie ou un grand site peuvent  subdiviser  le  domaine  en  plusieurs  sous-domaines  pour  des  raisons  administratives  ou pratiques. Dans ce cas, chaque sous-domaine aurait un serveur DNS détenant la base de données de
ce sous-domaine. Toutes les modifications apportées à la base de données sont faites par son serveur attitré  ;  ce  serveur  est  interrogé,  si  nécessaire,  par  d'autres  clients  ou  d'autres  serveurs  DNS.  Un serveur  qui  détient  la  base  de  données  pour  un  domaine  ou  sous-domaine  est  qualifié  de  serveur
autorisé pour ce domaine ou sous-domaine.

4. Enregistrement de ressources

Comme  on  l'a  vu,  DNS  définit,  notamment,  une  base  de  données  distribuée.  La  base  de  données réside sur  des serveurs qui administrent divers domaines et sous-domaines. Cette base de données est  structurée  par  enregistrements  de  ressources.  Un  enregistrement  de  ressources  contient  une
adresse IP, le nom de l'hôte disposé à recevoir le courrier électronique pour ce domaine et d'autres informations.  Chaque  node  DNS  est  décrit  par  un  ou  plusieurs  enregistrements  de  ressources.  Les documents RFC 1183 et RFC 1035 définissent le format des enregistrements de ressources DNS.
Les composants d'un enregistrement de ressources sont :
 
Name
Type
Class
TTL
RDLengtth
RData
 
Le champ Name est une chaîne qui identifie le domaine possédant cet enregistrement de ressources.

Le champ Type est une valeur sur 16 bits qui identifie le type d'enregistrement de ressources – par exemple, un enregistrement de ressources de type A contient une adresse IP, un enregistrement de ressources de type MX contient le nom d'un serveur de mails, etc.

Le tableau ci-après liste certaines des valeurs qui peuvent être incluses dans le champ Type.
 
TypeDescription
AAdresse IP
NSNom de serveur autorisé
MDDestination du mail (obsolète, remplacé par MX)
MFRé-expéditeur du mail (obsolète, remplacé par MX)
CNAMENom canonique d'un alias
SOAIndicateur de début d'autorité sur une zone donnée
MBNom de domaine de boîtes aux lettres (expérimental)
MGMembre d'un groupe de mail (expérimental)
WKSDescription d'un service très connu
PTRPointeur de nom de domaine
HINFOInformation de l'hôte
MINFOInformation sur les boîtes aux lettres ou les listes de mail
MX Serveur ou passerelle de messagerie
TXTChaîne de texte
 
Le champ Class est long de 16 bits et identifie la famille de protocoles liée au type d'enregistrement de ressources – par exemple, IN pour Internet, CH pour Chaos, etc. En pratique, seule la valeur IN est utilisée. Le champ TTL (Time To Live : temps restant) contient une valeur signée de 32 bits qui indique
le temps en secondes pendant lequel l'enregistrement de ressources doit être conservé dans un cache.  
Le  champ  RDLength  spécifie  la  longueur  en  octets  du  champ  RData.  Le  champ  RData  est  de  taille variable, en fonction du type d'enregistrement de ressources. Par exemple, le champ RData contient une adresse IP sur 32 bits pour un enregistrement de ressources de type A.
 
Pour  des  raisons  d'efficacité,  les  serveurs  DNS  cachent  les  enregistrements  de  ressources  obtenus d'autres serveurs DNS. Le champ TTL décrit la valeur TTL sous forme d'un nombre de secondes - c'est-à-dire,  le  temps  en  secondes  après  lequel  le  serveur  DNS  doit  obtenir  une  copie  à  jour  de
l'enregistrement de ressources. Une valeur TTL de 0 indique que l'enregistrement de ressources doit être utilisé juste une fois, et ne doit pas être placé dans un cache.

5. Requêtes et Solveurs

Les  clients  adressent  une  requête  aux  serveurs  DNS  par  le  biais  des  solveurs.  Un  solveur  est typiquement une portion de code tournant sur un client DNS qui exécute les requêtes DNS. Le solveur envoie les requêtes (pour le compte du client) au serveur et place les réponses dans un cache. Chaque
requête  est  envoyée  en  utilisant  un  datagramme  UDP  (User  Datagram  Protocol  :  protocole  de datagramme utilisateur). Les clients peuvent émettre deux types de requêtes: récursive et itérative.
Une requête récursive d'un client oblige un serveur DNS à contacter un autre serveur DNS, lorsque le premier serveur est incapable de satisfaire la requête du client. La récursivité peut être en cascade, de sorte que le deuxième serveur peut contacter un troisième serveur et ainsi de suite, jusqu'à ce que la
requête soit satisfaite. Les clients émettent la plupart du temps une requête itérative, dans laquelle un serveur qui n'a pas l'information requise retourne les pointeurs vers d'autres serveurs susceptibles de fournir  l'information.  Les  requêtes  itératives  sont  moins  stressantes  pour  les  serveurs.  Un  solveur
place dans un cache les valeurs retournées par un serveur DNS pour améliorer les performances et abaisser la charge sur le serveur DNS.
 
Une requête DNS contient trois champs :
 
La réponse à la requête prend habituellement l'une des trois formes suivantes :

5.1.  Exemple de requête DNS

Exemple de requête DNS