Как разрешить доменное имя в один IP-адрес? - PullRequest
0 голосов
/ 12 марта 2011

Я был удивлен, узнав, что одно доменное имя может иметь много 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 ]

2 голосов
/ 12 марта 2011

Если нет особых причин для привязки к IP-адресу, используйте DNS для разрешения в момент установления соединения.

Что касается того, «откуда они берутся», то на это отвечает любое количество инфраструктурных решений. Это сила DNS в том, что системы балансировки нагрузки, кэширования, доставки и т. Д. Могут динамически обслуживать домен (example.com) из любого количества источников, и вам (клиенту) не нужно беспокоиться об этой реализации.

Несколько DNS могут быть несколькими серверами, различными центрами обработки данных, сетями кэширования и т. Д., В зависимости от любого количества факторов.

1 голос
/ 12 марта 2011

Скорее всего, используется какой-то RoundRobin.

Вы можете полагаться только на доменное имя, если домен не находится под вашим контролем.

0 голосов
/ 12 марта 2011

Вы можете сделать пару вещей:

  1. Использовать System.Net.IPAddress [0] сразу.
  2. Вы можете пропинговать все 6 и посмотреть, какое из них имеет лучшее время отклика, кэшировать это значение и попытаться использовать его позже.
0 голосов
/ 12 марта 2011

IP-адреса поступают с DNS-сервера, связанного с запрашиваемым доменным именем, например, www.google.com. Это будет тот же процесс, который используется веб-браузером для получения IP-адресов сервера для подключения.

Что касается того, к какому IP-адресу подключаться, я полагаю, что все они избыточны, и вам, вероятно, следует просто подключиться к первому, однако это всего лишь предположение, и я не совсем уверен.

...