【问题标题】:Is there an inconsistency with the DNS specification?是否与 DNS 规范不一致?
【发布时间】:2014-10-23 15:27:21
【问题描述】:

我对 DNS Specification 中的某些内容有些困惑。

所以,我认为我非常了解规范,但我对单个 DNS 响应数据报包含单个消息标头这一事实感到困惑,但显然可以回答多个问题。

例如,DNS 消息标头 包含大量信息和标志,指示有关响应的信息。例如,DNS 消息头包含一个响应代码标志,指示各种错误代码,例如“未实现”错误代码,这意味着提问者要求的记录类型服务器不支持。

但问题是DNS spec 允许在一个数据报中发送多个问题(我的意思是,QDCOUNT 字段还有什么用途?)我实际上从未见过 DNS 客户端提出多个问题一次,但显然这是允许的。

所以...假设客户端问了两个问题 - 因此QDCOUNT 设置为 2。那么 DNS 客户端如何确切地知道哪些答案指的是哪个问题? (可能有任意数量的答案。)或者就此而言,DNS 客户端如何知道标头中的错误代码指的是哪些问题?

示例:

假设 DNS 客户端在单个查询中请求 A (IPv4) 记录和 AAAA (IPv6) 记录。假设服务器支持A 记录-但实现AAAA 记录。

服务器应该做什么?返回仅包含 A 记录答案的响应 - 或返回包含任何答案并设置 "Not Implemented" 错误代码标志的响应?

这在规范中似乎并不清楚。总的来说,问题似乎是,即使规范允许在单个查询数据报中出现多个问题,似乎没有任何方法可以将特定问题映射到响应数据报中的特定答案。这是规范的问题吗?或者我在这里误解了什么?或许这就是为什么实际上没有一个真正的 DNS 解析器似乎对每个数据报提交一个以上的问题。

【问题讨论】:

    标签: dns


    【解决方案1】:

    这是早期 DNS 规范中的一个缺陷,是的。在实践中,如果您尝试向当前使用的任何权威名称服务器软件发送包含多个问题的请求,它会忽略除第一个问题之外的所有问题,或者给您一个错误响应(根据我的经验,通常是 SERVFAIL 或 FORMERR)。

    如果您设法在野外找到一台服务器可以做其他事情,我非常想听听。

    【讨论】:

      【解决方案2】:

      您描述的问题并没有很好地描述为不一致——规范本身并不冲突——相反,它更像是一个漏洞。我快速浏览了一下,没有找到任何关于服务器应如何响应包含多个问题的请求的规范,其中一个或多个需要错误响应。

      我可以想到几种可能的服务器行为,不一定由客户端区分,因此客户端的最佳方法可能是通过不在同一条消息中提出多个问题来避免这种情况。 RFC 断言这是正常情况,我认为这是正确的,即使客户想要与同名相关联的多种信息。

      我不确定任何特定的名称服务器如何处理这种情况,但如果我自己实现一个,那么我会强烈考虑拒绝所有此类错误代码为 5 的多问题消息(请求因服务器策略而被拒绝)。

      【讨论】:

        猜你喜欢
        • 2015-01-27
        • 2019-11-05
        • 1970-01-01
        • 2016-07-20
        • 2021-03-27
        • 1970-01-01
        • 2013-07-12
        • 2020-02-01
        • 1970-01-01
        相关资源
        最近更新 更多