【问题标题】:What's the difference between AI_FQDN and AI_CANONNAME results in ADDRINFOW structure?AI_FQDN 和 AI_CANONNAME 结果在 ADDRINFOW 结构中有什么区别?
【发布时间】:2019-07-09 18:55:15
【问题描述】:

关于使用 GetAddrInfoW(我来自 C# 使用背景)。

ADDRINFOW 结构可以将 ai_flags 设置为 AI_FQDN 和 AI_CANONNAME,这样 PWSTR ai_canonname 将包含:

在 DNS 中注册的规范名称 要么 平面名称解析为的完全限定域名

Windows 文档: “在 DNS 中注册的规范名称,可能与平面名称解析到的完全限定域名不同。”

这两者有什么区别?

【问题讨论】:

    标签: windows sockets winapi networking dns


    【解决方案1】:

    ai_canonname 是一种输出(在 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”。

    【讨论】:

      【解决方案2】:

      我相信(但没有检查过)AI_FQDNai_canonname 是在搜索路径处理后在 DNS 查找中使用的名称​​。因此,如果您查找www 并且您的搜索路径包含example.com,您将获得www.example.com 以在ai_canonname 中成功查找,这与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),而仅仅应用搜索路径就可以得到一些真正有意义的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-16
        相关资源
        最近更新 更多