2012-06-28 2 views
1

Я хочу прочитать все адреса (IPv4 и IPv6) с помощью getaddrinfo(). Вопрос в том, возвращает ли getaddrinfo() адрес IPv6, за которым следует IPv4 в списке. Предполагая, что я передаю AF_UNSPEC в getaddrinfo() и используя двойной стек.Будет ли getaddrinfo() сначала возвращать адреса IPv6?

+0

Что он делает, когда вы проверяете? Что говорит документация? Скорее всего, ответ заключается в том, что «нет гарантии при заказе продукции». – Romain

+4

Правила сортировки адресов назначения подробно описаны в разделе 6 [RFC 3484] (http://www.ietf.org/rfc/rfc3484.txt), но я не уверен, что типичные 'getaddrinfo()' реализации действительно следуют этому примеру. Правила требуют предсказывать, какой адрес источника ядро ​​будет использовать для достижения определенного адреса назначения, что, в свою очередь, зависит от запроса ядра, чтобы получить список исходных адресов, которые действительно доступны, и выяснить, как был настроен алгоритм выбора исходного кода ядра , Действительно ли 'getaddrinfo()' фактически идет на эти длины? – Celada

ответ

2

Как уже прокомментировал Celada, RFC 3484 дает предлагаемый заказ на возвращаемые результаты.

В частности, для GNU libc, заказ может быть заказан /etc/gai.conf и настроен как локальная политика.

1

Ответ здесь:

http://tools.ietf.org/html/rfc6724

Операционные системы должны (и в основном делают) следовать этому стандарту или предыдущую версию. В то время как getaddrinfo() выбирает адрес назначения, ядро ​​затем выбирает адрес источника, если приложение не привязывается к определенному.

По умолчанию глобальные собственные адреса IPv6 предпочтительнее всех IPv4-адресов.

0

Это действительно зависит от сервера имен и ОС. getaddrinfo() извлекает информацию разрешения dns с сервера имен. Если ваш сервер имен заказывает адреса IPv6 перед адресами IPv4, он будет возвращать адреса IPv6 перед адресами IPv4.

По умолчанию адреса IPv6 имеют более высокий приоритет, чем адреса IPv4. @Pavel Simerda написал: «По умолчанию глобальные собственные адреса IPv6 предпочтительнее всех адресов IPv4».

 Смежные вопросы

  • Нет связанных вопросов^_^