Dns.GetHostEntry возвращает несколько IP-адресов - PullRequest
7 голосов
/ 15 июня 2009

Этот вопрос, вероятно, подчеркивает недостаток понимания сетевых принципов с моей стороны, а не проблему программирования.

Я выполняю поиск по имени хоста, используя

Dns.GetHostEntry

Это возвращает мне IPHostEntry, у которого есть свойство AddressList, которое является массивом IPAddress.

Я всегда думал, что между именем хоста и IP-адресом есть сопоставление 1: 1, но я обнаружил, что в некоторых случаях я получаю несколько IP-адресов для одного хоста.

Для меня это сюрприз.

Какую часть разрешения доменного имени я не понимаю?

Ответы [ 5 ]

8 голосов
/ 15 июня 2009

Отображения между физическими сетевыми интерфейсами, DNS-именами и IP-адресами практически произвольны. Однако следует различать сетевые интерфейсы (обычно адаптеры Ethernet, адаптеры Wi-Fi, сетевые устройства Bluetooth и т. Д.) И аспекты DNS, которые имеют дело только с именами и IP-адресами (а не с физическими интерфейсами).

Вот несколько фактов, которые вы можете смешивать и сопоставлять:

  • одна сетевая карта может иметь 1 или несколько IP-адресов.
  • одно DNS-имя может быть преобразовано в 1 или несколько IP-адресов.
  • один IP-адрес может (и обычно будет) идентифицировать одну машину
  • Несколько DNS-имен могут быть сопоставлены с одним IP-адресом

Рассмотрим хостинг-провайдеров: у них будет много DNS-имен, указывающих на один и тот же - общий - сервер. Этот сервер по причинам надежности может быть оснащен несколькими сетевыми картами, каждая из которых имеет несколько IP-адресов.

Для ПК вы обычно получаете более одного IP-адреса, если запрашиваете имя хоста, потому что в настоящее время у вас обычно есть как минимум два адаптера (wifi и ethernet) с их индивидуальным (в основном одним) IP-адресом. Однако в сценариях балансировки нагрузки могут происходить все виды умных сопоставлений и перенаправлений (виртуальные IP-адреса и т. П.).

Протоколы DNS и IP очень гибкие, однако это, конечно, не обязательно облегчает их понимание.

7 голосов
/ 15 июня 2009

Любая система может иметь несколько сетевых интерфейсов и интернет-адресов, но иметь только одно имя. Прямое сопоставление от имени к адресу вернет все адреса, сопоставленные с определенным именем. Раньше мы делали это с нашими файловыми серверами, чтобы хостам не приходилось пересекать границу сети при доступе к файлам и распределять нагрузку между различными сетевыми картами. Файловые серверы будут размещаться в каждой из наших различных подсетей, имеющих несколько интерфейсных карт, каждая с разным адресом подсети, но с одинаковым именем. DNS-серверы в кампусе все еще настроены таким образом. Кроме того, у вас может быть имя, которое отображается на несколько систем, обеспечивая некоторый уровень балансировки нагрузки через DNS.

2 голосов
/ 15 июня 2009

Вы можете иметь несколько адресов от нескольких сетевых адаптеров или нескольких протоколов. Часто у вас будет IPV4 и IPV6 адрес для одного хоста.

2 голосов
/ 15 июня 2009

Одна возможность:
Имя может содержать несколько адресов, иногда оно используется для round robin это слабый способ балансировки нагрузки ваших серверов.

1 голос
/ 15 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...