【发布时间】:2017-09-07 15:10:02
【问题描述】:
我不是在问 DNS 是如何将域名转换为 IP 地址的“事情”——我可以在这方面找到大量非常好的信息。我似乎找不到关于应用程序如何以及何时与 DNS 交互以在两方之间建立连接的描述。我的误解会在我写这个问题的方式中变得清晰 - 这不是故意的,我只是无法理解这个“DNS 交互”。
如果有解释我的问题答案的网络链接(我没有找到),请提供。
让我给出一个简单的场景。我想访问我最喜欢的网站,fruity-pies。
所以我在我的网络浏览器中输入:http://www.fruity-pies.com
现在,在“连接过程”的早期,需要将地址转换为 IP 地址——这就是 DNS 为我做的事情。 DNS,或者更准确地说是 BIND(?),像 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。
【问题讨论】:
标签: dns ip-address tcp-ip