会议设置的什么时候是DNS“称为”



我不是在问DNS如何将域名转换为IP地址的"事物",我可以在此上找到大量非常好的信息。我似乎找不到的描述是应用程序如何以及何时与DNS进行交互以建立两个当事方之间的联系。我的误解将在我写这个问题的方式上变得清晰 - 这不是故意的,我只是无法围绕这种" DNS互动"。

如果有一个Web链接(我找不到)解释了我问题的答案,请提供。

让我给出一个简单的场景。我想访问我最喜欢的网站,果味 -

所以我在网络浏览器中输入:http://www.fruity-pies.com

现在,在"连接过程"的早期,地址需要转换为IP地址 - 这就是DNS对我所做的。DNS,或更准确地绑定(?),在应用程序层的"工作"和HTTP一样。因此,我认为需要以某种方式HTTP(或我使用的任何服务,例如FTP)"知道"对DNS/BIND(?)的调用。发送的是域名,Fruity-pies.com,回到资源的IP地址,213.1.19.34?这发生了吗?如果这是正确的,那么每个应用程序层过程都必须具有"调用" DNS的代码,而重复对我来说似乎并不正确。

尽管该应用程序已从DNS接收了IP地址,但这仅在网络层变得很重要。因此,IP地址是否从应用程序层传递到传输层,但由于在传输层不相关而被忽略吗?传输层将原始消息拆分为数据包,并添加端口号以识别哪个进程处理目的地的消息。然后,数据包与IP地址(来自与DNS/BIND的应用程序层交互一起)的网络层传递,该网络层将IP地址作为标题放置?这是正确的吗?

对不起,如果这是一种误解,但是目前强调我的主要问题是DNS/BIND如何拟合到通信设置中。我可以看到,一旦解决了IP地址,此特定通信就不再需要DNS/BIND。

我认为我已经为IPv4连接解决了问题的解决方案。https://wiki.python.org/moin/tcpccommunication

的原始Python来源

我相信,当应用程序试图使用 sockets 与某些"远程"进程进行通信时,是否需要DNS的服务,这是由于传递给应用程序套接字的参数而进行的。因此,在以下从python 3中编码的客户端的摘录中,该摘要正在尝试连接到远程位置

import socket  

<<这告诉Python该程序需要建立网络连接,因此请包括必要的代码

TCP_IP = 'www.fruity-pies.com'  

<<这是该应用要连接到

的地方
TCP_PORT = 40375  

<<这是客户端应用想要连接到Fruity-pies

的端口
BUFFER_SIZE = .....
MESSAGE = .......
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  

<<这会创建(?)一个套接字,并指示我要使用ipv4(af_inet)和tcp(sock_stream)协议进行通信

s.connect((TCP_IP, TCP_PORT))  

<<这是连接到远程位置的尝试。由于远程地址是字符串," www.fruity-pies.com",因此通过本地主机文件或DNS截获并分辨该名称分辨率,试图找到记录以翻译www.fruity-pies.comIP地址。

.... rest of code

我认为我的误解是基于一个想法,即TCP/IP处理的工作方式与OSI层相同,并且每个"调用"传递的参数"向下"到下一层。因此,如果OSI应用程序在7级运行,则某些级别的6级进程会收到连接请求。同样,我认为从试图与远程过程进行通信的应用程序进行插座调用,在该过程中,目标地址以字符串表示,例如www.fruity-pies.com,某些运输层过程将负责将其翻译成IP地址。这似乎不是工作的方式。

最新更新