Dns.GetHostEntry返回多个IP地址

时间:2009-06-15 12:19:31

标签: c# networking dns

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

我正在使用

查找主机名
Dns.GetHostEntry

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

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

对我来说这是一个惊喜。

我不理解域名解析的哪一部分?

5 个答案:

答案 0 :(得分:8)

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

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

  • 单个网卡可以有1个或多个IP地址。
  • 可以将单个DNS名称解析为1个或多个IP地址。
  • 单个IP地址可以(并且通常)标识单个计算机
  • 多个DNS名称可以映射到单个IP地址

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

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

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

答案 1 :(得分:7)

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

答案 2 :(得分:2)

一种可能性:
名称可以解析为多个地址,有时用于round robin 这是负载平衡服务器的弱方法。

答案 3 :(得分:2)

您可以拥有多个网络适配器或多个协议的多个地址。 通常,您将拥有同一主机的IPV4和IPV6地址。

答案 4 :(得分:1)

据我所知,可以为一个主机名允许多个IP地址以实现高可用性。也就是说:当一台机器关闭时,将使用另一台机器。