【发布时间】: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