2010-11-05 27 views
1

Une fois qu'un utilisateur rencontre une URL, la machine locale effectue une recherche sur le fichier hosts pour voir s'il y a des entrées, sinon la machine locale envoie un DNS (comment? Où?) Pour résoudre l'URL et obtenir l'adresse IP associée ... Une fois qu'il obtient l'IP, il ouvre un canal de socket sur cette adresse IP et interagit avec le serveur ...Comment un client (navigateur) génère-t-il une requête à envoyer à un serveur?

Est-ce exact? J'essaie de comprendre étape par étape et en détail comment la requête est générée et envoyée à un serveur.

Merci pour votre participation! Je suppose que vous parlez d'une connexion TCP.

+0

Si vous voulez comprendre en détail, je ne pense pas que vous devriez poser sur stackoverflow. Vous devriez commencer une lecture sérieuse (y compris les RFC). –

+1

* (comment? Où?) * Votre connexion Internet est associée à un serveur DNS. La recherche commence à partir de là et passe du serveur au serveur jusqu'à ce qu'elle trouve l'adresse IP correcte. http://en.wikipedia.org/wiki/File:An_example_of_theoretical_DNS_recursion.svg –

+0

Croyez-moi, j'ai lu beaucoup, beaucoup de documentation, y compris les documents Apache 2.2. Parfois, il est plus agréable d'avoir quelqu'un de souligner les parties importantes pour vous parce qu'il n'y a aucun moyen que je peux digérer tout ce que – qodeninja

Répondre

2

Le client, comme vous le dites, effectue une recherche dans son fichier hosts; S'il n'y a pas d'entrée, il recherche son premier serveur DNS configuré (en fonction de la configuration manuelle ou des paramètres DHCP) et établit une connexion avec ce serveur. Une fois que le client a l'adresse du serveur désiré, il enverra un paquet SYN à ce serveur, qui répondra avec un SYN/ACK, et le client répondra avec un paquet ACK pour établir la connexion. C'est le TCP handshake. Une fois la connexion établie, le client et le serveur communiquent sur leurs sockets respectifs, transmettent des données à travers les couches du protocole TCP et envoient des paquets de correction d'erreur et de métadonnées pour se coordonner les uns avec les autres. Cette information contient le type de requête, généralement dépendant du protocole. Pour HTTP, il s'agit généralement d'une requête GET ou POST, à laquelle le serveur répond correctement. Si vous voulez des informations plus spécifiques, pouvez-vous poster quel type de protocole vous intéresse?

+0

paramètres DHCP - Je vois ... Merci de partager cette information détaillée de mise en réseau.J'ai seulement une compréhension lâche de tcp/ip, mais je suis généralement intéressé à comprendre ce qui se passe avec une requête http. Jusqu'à présent, c'est aweswome! – qodeninja

4

Pour un aperçu très détaillé du fonctionnement du DNS, voir RFC 1035 et pour le fonctionnement de HTTP, voir RFC 2616.

Ce sont les documents canoniques. Ils sont très détaillés, mais si vous vous en tenez aux sections Opérations globales et que vous recherchez les parties sur lesquelles vous avez besoin d'éclaircissements, elles peuvent être très utiles.

Fondamentalement, pour tout protocole que vous voulez une explication (à un niveau plus profond, vous voudrez peut-être voir TCP), l'endroit le plus détaillé pour obtenir des informations est les RFC.

+0

Merci. J'aime les diagrammes ASCII dans les spécifications lol – qodeninja

+0

Pourquoi n'avez-vous pas publié les liens directs de l'IETF? –

+0

Modifié, j'étais juste un peu aller avec le premier succès de google. –

1

Oui. Tu es de plus en plus correct.

Il regarde sur le fichier hosts, puis dans DNS. Sur la machine Linux, vous pouvez changer l'ordre dans le fichier etc/resolv.conf.

Votre serveur DNS principal est configuré dans vos paramètres tcp/ip. DNS utilise le port UDP/53 pour tel demandé. Si votre DNS ne peut pas résoudre le nom d'hôte, il le transmet au DNS parent, mais ceci est un autre sujet. Après l'obtention de l'adresse IP, il ouvre le socket au serveur en utilisant l'adresse (IP + port).

Espérons que ça aide.

1

http://betterexplained.com/wp-content/uploads/compression/HTTP_request.png

+1

Bien qu'une jolie image, je ne pense pas que cela répond vraiment à la question dans la profondeur désirée et le sens technique. –