Dns.GetHostEntry返回多个IP地址

spe*_*der 7 c# dns networking

这个问题可能突出了我对网络主体缺乏了解,而不是编程问题.

我在使用主机名进行查找

Dns.GetHostEntry
Run Code Online (Sandbox Code Playgroud)

这会向我返回一个IPHostEntry,它有一个AddressList属性,它是一个IPAddress数组.

我一直认为主机名和IP之间存在1对1的映射,但我发现在某些情况下我会找回同一主机的几个IPAddress.

这对我来说是一个惊喜.

我不明白哪个域名解析部分?

Dan*_*ler 8

物理网络接口,DNS名称和IP地址之间的映射几乎是任意的.但是,您应该区分网络接口(通常是以太网适配器,Wifi适配器,蓝牙网络设备等)和DNS方面,它们只处理名称和IP地址(不是物理接口).

以下是您可以混合搭配的一些事实:

  • 单个网卡可以有1个或多个IP地址.
  • 单个DNS名称可以解析为1个或多个IP地址.
  • 单个IP地址可以(通常)识别单个机器
  • 多个DNS名称可以映射到单个IP地址

考虑托管提供商:他们将有许多DNS名称指向同一个 - 共享 - 服务器.该服务器可能出于可靠的原因配备多个网卡,每个网卡具有多个IP地址.

对于PC,如果按主机名查询,通常会获得多个IP地址,因为现在您通常至少有两个(wifi和以太网)适配器及其个人(主要是单个)IP地址.然而,在负载平衡方案中,可能发生各种巧妙的映射和重定向(虚拟IP地址等).

DNS和IP协议都非常灵活,但这当然不一定使它们更容易理解.


tva*_*son 7

任何系统都可以有多个网络接口和Internet地址,但只有一个名称.从名称到地址的转发映射将返回映射到特定名称的所有地址.我们曾经使用我们的文件服务器执行此操作,以便主机在访问文件时不必遍历网络边界,并将负载分散到各个NIC上.文件服务器将驻留在我们的每个子网上,具有多个接口卡,每个接口卡具有不同的子网地址,但名称相同.校园中的DNS服务器仍以这种方式设置.此外,您可能有一个映射到多个系统的名称,通过DNS提供某种级别的负载平衡.