Home » Comment ça marche, Internet

Internet, basé sur un énorme annuaire (6)

10 mai 2010 447 vues 2 commentaires
tags : ,
Download PDF

Crédit : Claude Mongrain

On entends globalement assez peu parler des DNS, sauf dernièrement, entre autre grâce au poisson d’avril de Science et Vie Junior, mais beaucoup de gens ignorent encore de quoi il retourne exactement.

Exercice difficile, mais essayons quand même. Internet est un réseau d’ordinateurs qui communiquent entre eux via tout un tas de protocoles divers qui, pour la quasi totalité des échanges, reposent sur un système d’adressage numérique. Celui qui est massivement utilisé aujourd’hui sur Internet est IP dans sa version 4 qui donne des adresses du type 24.243.128.4. Le réseau parallèle qui commence a se monter en utilisant la version 6 voit quand à lui des adresses du type 2a01:534:6ab:65::aab5, mais ce n’est pas le sujet de cet article.

Quelle que soit la version du protocole IP utilisé, il a très vite été impossible de retenir des adresses de ce genre en mémoire, et il faut bien avouer que commercialement, on voit mal une entreprise marquer en gros sur son affiche « venez sur notre site http://157.166.226.26/ » .. non, on préfère indiquer « venez sur notre site http://www.cnn.com/ ».

Mais alors, que faire ? Un annuaire pardi. Une machine à qui votre ordinateur pourra demander « dis voir, c’est quoi l’adresse de www.cnn.com ? ».

Internet étant ce qu’il est, il fallait biensur inventer un système décentralisé, ne serait-ce que parce qu’une seule entité ne peut pas gérer la masse de travail phénoménale qui consiste à mettre à jour ces informations pour l’ensemble des noms de domaine sur Internet.

Crédit : MKFM

Un système hiérarchique à donc été conçu. Un peu de la même façon qu’une adresse postale contient, si on la prends par le bas, le pays, puis la ville, puis la rue, puis le numéro, puis éventuellement le bâtiment, l’étage, la porte et enfin le nom de la personne, le systeme DNS contient un certain nombre de domaines de premier niveau (com, net, org, fr, us, eu, etc …), suivi de noms de second niveau (cnn.com, 20minutes.fr, brutele.be, …), suivi de noms de troisieme niveau (www, ftp, mais aussi pourquoi pas lsdhjglrgh) et ainsi de suite quasiment jusqu’a l’infini.

Il existe 13 serveurs racine dans le monde qui portent chacun une lettre et qui connaissent, a eux 13, l’ensemble des noms de domaine du premier niveau. De la même manière que, partout dans le monde, un facteur qui a entre les mains une lettre adressée à la France saura qu’il doit la mettre dans un avion en partance pour la france, les 13 serveurs racine connaissent l’adresse des 7 serveurs qui gerent le domaine de premier niveau .fr.

Ces 7 serveurs connaissent eux même l’adresse de l’ensemble des serveurs DNS qui gèrent tous les domaines du .FR. Ils connaissent par exemple l’adresse des deux serveurs DNS qui gèrent 20minutes.fr. Ces deux serveurs sont les seuls a connaitre l’information qui nous interesse, à savoir « quelle est l’adresse de la machine qui contient le site www.20minutes.fr ». Ce sont des serveurs DNS dits « autoritaires », c’est à dire que leur unique mission est de fournir une information à propos d’un nom de domaine.

Mais pour que chaque machine d’Internet n’ai pas a aller poser des tas de questions à toute cette succession de serveurs, on a inventé un autre type de serveurs DNS dits récursifs. Ce sont les adresses de ces serveurs qui sont configurées dans votre machine lorsque vous vous connectez à Internet.

Votre machine va donc demander a ces serveurs récursifs « quelle est l’adresse de www.20minutes.fr ». Une fois votre demande recue, si on imagine que le serveur récursif en question vient d’être mis en route, il va donc aller demander, dans l’ordre :

  • a l’un des 13 serveurs racine (les seuls dont il a connaissance)  « dis moi, quelle est l’adresse de www.20minutes.fr ». Le serveur racine va lui répondre « Je ne sais pas, par contre, les 7 machines suivantes (a.nic.fr, b.nic.fr, …) connaissent l’information pour tout .fr, va leur demander et conserve cette information pendant 48 heures »
  • Il va en profiter donc pour stocker pendant 48 heures l’information « si on me demande quelquechose qui fini par .FR, il faudra que je demande a l’un des 7 serveurs qu’on vient de m’indiquer » (ce délais est appelé TTL, Time To Live)
  • Il va ensuite choisir au hasard un serveur dans la liste que le serveur racine lui a donné et va lui poser la même question
  • Le serveur (mettons a.nic.fr) va lui répondre « je ne sais pas, par contre, va demander à gladia.oxalide.net ou à cleon.oxalide.net, eux, ils savent, et garde cette information tant de temps
  • Notre serveur récursif va donc retenir 48h que, si on lui demande une information à propos de 20minutes.fr, il faut aller demander à ces deux machines chez Oxalide
  • Il va ensuite contacter au hasard l’un des deux serveur indiqué (mettons gladia.oxalide.net) pour lui demander toujours la même question, « quelle est l’adresse de www.20minutes.fr » qui, lui, va avoir la réponse et va lui donner, à savoir « www.20minutes.fr est un renvoi vers www.20minutes.fr.edgesuite.net et garde cette information 10 minutes maximum »

Les lecteurs attentifs auront remarqué qu’on est drolement avancé avec cettte information, nous n’avons toujours pas d’adresse IP d’une machine contenant le site pour aller le lui demander.

C’est vrai, mais en redemandant aux serveurs racine qui gère www.20minutes.fr.edgesuite.net, on obtiendra la réponse de qui gère .net, puis celle de qui gère edgesuite.net, puis celle de fr.edgesuite.net, puis 20minutes.fr.edgesuite.net et enfin, encore une information qui ne nous avancera pas, à savoir que c’est un renvoi vers a671.b.akamai.net. Heureusement, au final, quand on aura, pour la 3ème fois, fait le tour de tout ces serveurs DNS, on apprendra que a671.b.akamai.net pointe sur deux adresses IP qui sont 217.89.107.48 et 217.89.107.41. OUF ! notre navigateur va enfin pouvoir aller établir une connexion avec l’une de ces deux adresses et lui demander la page du site qu’on veut aller voir.

Au passage, notre serveur récursif aura emmagasiné, pour des durées variables, un certain nombre d’informations qu’il pourra redonner à qui en aura besoin, tant que leur durée de vie ne sera pas expirée. On a, au passage, appris que 20 Minutes est prudent et prévoit une durée de vie de l’information « www.20minutes.fr » de 10 minutes (et pas de 20 :)), de sorte qu’il peut, en cas de panne des machines chez Akamai, rediriger l’ensemble de ses visiteurs ailleurs en moins de 10 minutes.

Les lecteurs encore plus attentifs auront décelé un autre problème, nous ne parlons depuis tout à l’heure que de noms, mais comment fait notre serveur récursif pour « aller demander à a.nic.fr » s’il ne connait pas son adresse numérique ?

Eh bien il va redemander aux serveurs racine. Et la, vous me dites, « oui, mais on tourne en rond, il va demander qui est a.nic.fr et on va lui répondre de demander à a.nic.fr » et vous aurez raison. Cest pour cela qu’on a inventé la notion d’enregistrement « glue ». Lorsqu’on a appris aux 13 serveurs racine que le .FR était géré par a.nic.fr, b.nic.fr, etc … on leur a aussi appris les adresses numériques de ces machines.

Il en va de même pour notre exemple de tout à l’heure, les serveurs qui gèrent .NET connaissent les adresses IP de gladia.oxalide.net et cleon.oxalide.net.

Nous voila donc sauvés, nous pouvons, à partir des adresses des 13 serveurs racine, connaitre l’adresse correspondante à n’importe quel nom sur Internet.

Mais si la vie était aussi simple, ce ne serait pas drôle. Vous avez déjà assez mal à la tête pour aujourd’hui, j’attendrai donc quelques jours avant de vous parler des réponses  dépendantes de la géolocalisation, de l’anycast et des signatures DNSSEC.

2 Comments »

  • jerome said:

    Salut !

    ça m’énerve ces articles sont excellents du coup je passe des heures à les lire au lieu de faire autre chose, font chier ces mecs qui ont du talent!

    Petite remarque qui ne tiens qu’à moi, je préfère l’expression serveur « d’autorité » que serveurs « autoritaire », manquerait plus qu’un serveur dns me donne un ordre… c’est moi le client! Et il se trouve que je m’adresse à un serveur (syntaxiquement proche d’un serviteur) qui fait autorité sur un domaine et non « preuve d’autorité »…

    Sinon faut rien changer ça envoie grave la buche comme on dit chez les djeun’s…

    Cordialement,

  • Bruno (author) said:

    Oui, on a eu de grands débats sur la traduction exacte de « authoritative DNS server ». J’ai eu la flemme de patcher mes articles mais on s’est arrêté sur « serveur DNS faisant autorité » de mémoire.

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.


8 − = deux