0

我惊讶地发现一个域名可以有多个 IP 地址。例如,这是我的结果Dns.GetHostAddresses("www.google.com")

{System.Net.IPAddress[6]}
    [0]: {74.125.127.147}
    [1]: {74.125.127.99}
    [2]: {74.125.127.103}
    [3]: {74.125.127.104}
    [4]: {74.125.127.105}
    [5]: {74.125.127.106}

(YMMV;地址似乎会定期更改)

这些不同的地址从何而来,应该如何选择要连接的 IP 地址?

4

4 回答 4

2

除非有理由专门绑定到 IP,否则您应该在建立连接时使用 DNS 进行解析。

至于“它们来自哪里”,许多基础设施决策都可以回答这个问题。这就是 DNS 的强大之处,因为负载平衡、缓存、交付等系统可以从任意数量的来源动态地为域 (example.com) 提供服务,而您(客户端)不必担心该实现。

多个 DNS 可以是多个服务器、不同的数据中心、缓存网络等……取决于许多因素。

于 2011-03-11T21:08:47.223 回答
1

最有可能使用某种 RoundRobin。

您只能依赖域名,除非该域在您的控制之下。

于 2011-03-11T21:10:09.547 回答
0

IP 地址来自与查询的域名关联的 DNS 服务器,在您的示例中为 www.google.com。这与 Web 浏览器获取要连接的服务器 IP 地址所遵循的过程相同。

至于要连接到哪个 IP 地址,我想它们都是多余的,您可能应该只连接到第一个,但这只是猜测,我不确定。

于 2011-03-11T21:12:13.673 回答
0

你可以做几件事:

  1. 立即使用 System.Net.IPAddress[0]。
  2. 您可以 ping 所有 6 个,看看哪个具有最佳响应时间,缓存该值并稍后尝试使用它。
于 2011-03-11T21:15:49.713 回答