В чем разница между результатами AI_FQDN и AI_CANONNAME в структуре ADDRINFOW? - PullRequest
0 голосов
/ 15 февраля 2019

Относительно использования GetAddrInfoW (я исхожу из опыта использования C #).

Структура ADDRINFOW может устанавливать ai_flags либо в AI_FQDN, либо в AI_CANONNAME, так что имя ai_canon в PWSTR будет содержать либо:

каноническое имя, зарегистрированное в DNS, или полное доменное имя, которое разрешено в плоском названии

Документы Windows: «каноническое имя, зарегистрированное в DNS, которое может отличаться от полного имени домена, разрешенного в плоском именик. "

В чем разница между этими двумя?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Я считаю (но не проверял это), что с AI_FQDN, ai_canonname - это имя, которое использовалось при поиске DNS после обработки пути поиска .Поэтому, если вы ищете www, а ваш путь поиска содержит example.com, вы получите www.example.com для успешного поиска в ai_canonname, независимо от того, что DNS говорит для www.example.com.

Спри более старой опции AI_CANONNAME распознаватель выполняет обработку пути поиска и традиционную канонизацию на основе CNAME.Итак, продолжая первый пример, если запись DNS для www.example.com такова:

www.example.com. IN A 192.0.2.1

, вы снова получите www.example.com в ai_canonname.Но если DNS содержит это вместо:

www.example.com. CNAME www1.example.net.

и:

www.example1.net. IN A 192.0.2.1

Вы получите www1.example.net, потому что это каноническое имя в конце изменения CNAME в этом случае.

Разница имеет смысл, потому что каноническое имя для чего-то, что размещено в CDN, обычно совершенно бессмысленно (например, e8178.e6.cdn-provider.example), в то время как простое применение пути поиска дает что-то действительно значимое.

0 голосов
/ 15 февраля 2019

ai_canonname является параметром out (в c #).

Но он может содержать либо полностью квалифицированное имя , либо каноническое имя на основе установленного флага (AI_FQDN / AI_CANONNAME).

Полное имя: Вы получите полный путь от корневого уровня (например: ru.wikipedia.org.)

https://en.wikipedia.org/wiki/Fully_qualified_domain_name#/media/File:DNS-names-ru.svg

Каноническое имя: это если сопоставлено доменное имя.Предположим, что есть IP-адрес, чье фактическое доменное имя - «test.com».Но для обеспечения бесперебойной работы «www.test.com» создается каноническая запись имени, поэтому «www.test.com» указывает на «test.com».

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