关于使用GetAddrInfoW (我来自C#使用背景)。
ADDRINFOW structure可以将ai_flags设置为AI_FQDN或AI_CANONNAME,以便PWSTR ai_canonname将包含以下任一项:
在DNS中注册的规范名称或平面名称解析到的完全限定的域名
Windows文档:“在DNS中注册的规范名称可能与平面名称解析到的完全限定的域名不同。”
这两者之间的区别是什么?
发布于 2019-02-16 02:49:16
ai_canonname是out (in c#)参数类型。
但它可以包含基于标志集(AI_FQDN/AI_CANONNAME)的完全限定名称或规范名称。
完全限定名称:从根级别获取完整路径(例如:ru.wikipedia.org。)
https://en.wikipedia.org/wiki/Fully_qualified_domain_name#/media/File:DNS-names-ru.svg
规范名称:如果映射了域名,则为规范名称。假设有一个实际域名为test.com的IP地址。但是为了确保"www.test.com“能够正常工作,我们创建了一个规范的名称记录,以便"www.test.com”指向"test.com“。
发布于 2019-02-16 04:41:02
我相信(但没有检查过这一点),在AI_FQDN中,ai_canonname是在搜索路径处理后用于DNS查找的名称。因此,如果您查找www,并且您的搜索路径包含example.com,那么您将获得在ai_canonname中成功查找的www.example.com,而独立于DNS对www.example.com的说明。
使用较旧的AI_CANONNAME选项,解析器执行搜索路径处理和传统的基于CNAME的规范化。因此,继续第一个示例,如果www.example.com的DNS条目如下:
www.example.com. IN A 192.0.2.1您将再次在ai_canonname中获得www.example.com。但如果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),而仅仅应用搜索路径就会给出一些实际上有意义的东西。
https://stackoverflow.com/questions/54712570
复制相似问题