2017-09-07 15 views
0

Je ne demande pas comment DNS fait sa "chose" de la conversion des noms de domaine en adresses IP - je peux trouver une mine de très bonnes informations à ce sujet. Ce que je n'arrive pas à trouver, c'est comment et quand une application interagit avec DNS pour établir une connexion entre deux parties. Mon malentendu va devenir clair dans la façon dont j'écris cette question - ce n'est pas délibéré, je n'arrive pas à comprendre cette "interaction DNS".A quel moment de la session est configuré le DNS "appelé"

S'il y a un lien Web (que je n'ai pas trouvé) qui explique la réponse à ma question, veuillez le fournir.

Permettez-moi de donner un scénario simple. Je veux accéder à mon site préféré, des tartes aux fruits.

Donc je tape dans mon navigateur web: http://www.fruity-pies.com

Maintenant, dès le début du « processus de connexion » cette adresse doit être convertie en une adresse IP - c'est ce que DNS fait pour moi. DNS, ou peut-être plus exactement BIND (?), "Fonctionne" au niveau de la couche d'application comme HTTP. Donc je pense que d'une manière ou d'une autre HTTP (ou n'importe quel service que j'utilise comme ftp) "sait" qu'un appel à DNS/BIND (?) Est requis. Ce qui est envoyé est le nom de domaine, fruity-pies.com, ce qui revient est l'adresse IP de la ressource, 213.1.19.34? Est-ce que c'est ce qui arrive? Si cela est correct, alors chaque processus de couche d'application devrait avoir le code pour "appeler" DNS et cette duplication ne me semble pas correcte.

Bien que l'application ait reçu l'adresse IP de DNS, cela ne devient important que sur la couche réseau. L'adresse IP est-elle transmise de la couche d'application à la couche de transport, mais ignorée, car elle n'est pas pertinente au niveau de la couche de transport? La couche de transport divise le message d'origine en paquets et ajoute le numéro de port pour identifier le processus qui gère le message à la destination. Ensuite, le paquet de données est transmis avec l'adresse IP (provenant de l'interaction de la couche application avec DNS/BIND) à la couche réseau qui place l'adresse IP en en-tête? Est-ce exact?

Désolé si c'est un malentendu, mais pour souligner mon principal problème en ce moment, c'est la façon dont DNS/BIND s'intègre dans la configuration de la communication. Je peux voir qu'une fois que l'adresse IP a été résolue DNS/BIND n'est plus nécessaire pour cette communication particulière.

Répondre

0

Je pense avoir trouvé la solution à ma question pour une connexion IPv4. Source originale Python de https://wiki.python.org/moin/TcpCommunication

Je crois que lorsqu'une application tente de communiquer avec un processus « à distance » à l'aide prises, que ce soit ou non le service de DNS est nécessaire se produit en raison des paramètres passés à la prise d'application.Ainsi, dans l'extrait suivant d'un client codé en Python 3 qui tente de se connecter à un emplacement distant

import socket 

< < Cela indique Python le programme voudra faire une connexion réseau, donc inclure le code nécessaire

TCP_IP = 'www.fruity-pies.com' 

< < C'est là l'application veut se connecter à

TCP_PORT = 40375 

< < C'est le port de l'application client veut se connecter au fruité tartes

BUFFER_SIZE = ..... 
MESSAGE = ....... 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

< < Cela crée (?) Une prise et indique que je veux utiliser IPv4 (AF_INET) et les protocoles TCP (SOCK_STREAM) pour communiquer

s.connect((TCP_IP, TCP_PORT)) 

< < Ceci est la tentative de se connecter à l'emplacement distant. Comme l'adresse distante est une chaîne, 'www.fruity-pies.com', elle est interceptée et la résolution de noms, via un fichier hôte local ou le DNS, tente de trouver un enregistrement pour traduire www.fruity-pies.com en une adresse IP.

.... rest of code 

Je pense que mon incompréhension était basée sur une idée que le traitement TCP/IP a travaillé de la même manière que les couches OSI et que chaque « appel » paramètres passés « vers le bas » à la couche suivante. Ainsi, si une application OSI s'exécute au niveau 7, un processus de niveau 6 reçoit la demande de connexion. De même, je pensais que faire un appel de socket à partir d'une application essayant de communiquer avec un processus distant, où l'adresse cible était exprimée en une chaîne, disons www.fruity-pies.com, qu'un certain processus de couche transport serait responsable de la traduction de une adresse IP. Ce n'est pas comme ça que ça fonctionne.