2010-12-08 31 views
5

Je développe une application réseau qui devrait être capable de contacter les serveurs DNS. Je me demandais quelle serait la meilleure façon de le faire. Et les navigateurs me sont venus à l'esprit. Par exemple, comment Firefox ou Chrome résolvent les noms de domaine que je mets dans la barre d'URL?Comment mon navigateur Web résout-il les noms de domaine?

Je veux dire, je tape http://www.google.com, comment sait-il que doit faire une demande TCP à l'IP 209.85.195.104?

Merci!

+0

J'ai lu que la résolution DNS est faite par votre FAI, mais je ne sais pas combien cela est vrai et je ne me souviens pas où je l'ai lu, désolé. – BlackBear

+0

Oui, en fait, dans mon resolv.conf les 4 premiers serveurs de noms (à partir de 5) appartiennent à mon FAI. – santiagobasulto

Répondre

4

Dans le scénario le plus simple, les navigateurs utilisent une fonction telle que gethostbyname() pour résoudre les noms en adresses. Cependant, cette fonction n'est pas toujours implémentée de manière à ce qu'elle soit pratique pour un navigateur (elle bloque généralement jusqu'à obtenir une réponse).

Les navigateurs commencent aujourd'hui à utiliser "DNS prefetch", où le navigateur envoie directement les requêtes DNS à un serveur DNS au chargement de la page, afin de résoudre les adresses avant que l'utilisateur ne clique sur le lien suivant. De cette façon, l'utilisateur n'a pas à attendre la résolution du nom lorsqu'il clique et l'expérience de navigation apparaît plus rapidement.

6

Voici une bonne bande dessinée qui décrit la façon dont votre navigateur résolve les noms d'hôtes:

http://www.labnol.org/internet/comic-how-browser-works/18086/

Votre environnement doit être capable de gérer la résolution de nom d'hôte pour vous. Y a-t-il une raison pour laquelle vous auriez besoin de le faire vous-même?

+0

Merci, mais je ne suis pas un idiot. Je sais comment fonctionnent les serveurs DNS. Je veux juste savoir comment, techniquement, les navigateurs Web le font. – santiagobasulto

+1

@santiagobasulto: J'imagine que leur code frappe l'API de l'OS hôte pour obtenir cette information. Je ne pense pas qu'ils le feraient manuellement. Quelque chose comme ceci: http://msdn.microsoft.com/en-us/library/ms682016%28v=vs.85%29.aspx – David

+0

Merci David! Avez-vous un article, un livre ou quelque chose comme ça pour en lire un peu plus? – santiagobasulto