2009-06-15 113 views
5

這個問題可能突出了我對網絡主體缺乏理解,而不是編程問題。Dns.GetHostEntry返回多個IP地址

我使用

Dns.GetHostEntry 

這將返回IPHostEntry給我一個主機名,其中有一個AddressList中財產是ip地址的數組做查找。

我一直認爲主機名和IP之間有1對1的映射關係,但我發現在某些情況下,我找回了幾個同一主機的IP地址。

這對我來說是一個驚喜。

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

回答

7

任何系統都可以有多個網絡接口和互聯網地址,但只有一個名稱。從名稱到地址的正向映射將返回映射到特定名稱的所有地址。我們曾經使用我們的文件服務器來做到這一點,以便主機在訪問文件時不必遍歷網絡邊界,並將負載分散到各種NIC上。文件服務器將駐留在我們各個子網的每個子網上,具有多個接口卡,每個接口卡都具有不同的子網地址,但名稱相同。校園中的DNS服務器仍然以這種方式建立。此外,您可能有一個映射到多個系統的名稱,通過DNS提供某種級別的負載平衡。

+1

系統可以通過多個名稱到達 - 只是DNS條目的問題。然而,你是對的,通常機器本身只有一個名稱,但這不一定與DNS有任何關係。 – 2009-06-15 12:37:45

2

一種可能性:
名稱可以解析爲多個地址,這是有時用於round robin 它的負載平衡您的服務器軟弱的方式。

1

據我所知可以允許一個主機名的多個IP地址允許高可用性。那就是:當一臺機器停機時,會使用另一臺機器。

2

您可以使用多個網絡適配器或多個協議的多個地址。 通常情況下,您將擁有同一臺主機的IPV4和IPV6地址。

8

物理網絡接口,DNS名稱和IP地址之間的映射實際上是任意的。但是,您應該區分網絡接口(通常是以太網適配器,Wifi適配器,藍牙網絡設備等)和DNS端,它們只處理名稱和IP地址(不包括物理接口)。

這裏有一些事實,你可以混合和匹配:

  • 一個網卡可以有1個或多個IP地址。
  • 單個DNS名稱可以解析爲1個或多個IP地址。
  • 一個IP地址可以(並且通常會)確定一臺機器
  • 多張DNS名稱可以映射到一個單一的IP地址

考慮託管服務提供商:他們將指向多個DNS名稱相同 - 共享 - 服務器。該服務器可能出於可靠的原因配備了多個網卡,每個網卡都有多個IP地址。

對於個人電腦,如果您通過主機名進行查詢,您通常會獲得多個IP地址,因爲現在您通常至少擁有兩個(WiFi和以太網)適配器及其各自的IP地址(大多數爲單個IP地址)。 但是,在負載平衡方案中,可能會出現各種巧妙的映射和重定向(虛擬IP地址等)。

DNS和IP協議都非常靈活,但這當然不一定會使它們更容易理解。