为什么 DNS 响应包含问题部分?

为什么 DNS 响应包含问题部分?

以下是启用递归的 ns 查询的中间请求和响应示例:

中期反应

如您所见,响应包含问题部分。但为什么呢?是为了让解析器将响应与其发出的查询相匹配吗?但解析器也可以使用 ID 字段匹配响应,对吧?那么为什么要在答案中包含问题部分呢?

以下是同一查询的最终请求和响应:

最终回应 这次,请求的域名既包含在响应的问题部分,也包含在响应的答案部分。所以它被重复了两次。这样做的目的是什么?为什么要重复这些信息?

我的想法是,无论是在中间响应还是最终响应中,问题部分都可以省略,因为我们有 ID 字段。此外,最终响应中的答案部分有双重重复。

那么你能解释一下为什么需要复制这些信息吗?

答案1

DNS 传统上通过无连接协议 UDP 运行,因此响应无法通过网络信息表明它响应的是什么请求。

提供问题允许执行递归查询的服务器将响应发送给正确的查询者,将数据报传递给主机而不进行修改,并允许高级防火墙确定在 53 上传入的给定 udp 数据报是请求 - 响应对的一部分。

由于 UDP 无法传达此信息,因此必须由应用程序定义其数据结构以便执行该任务。

请参阅第 4.1.1 节RFC 1035了解消息结构中每个元素的描述。特别是 ID:

ID
由生成任何类型查询的程序分配的 16 位标识符。此标识符是相应答复的副本,请求者可以使用它来匹配未完成查询的答复。

因此,ID 是最终用户工作站可以判断哪个应用程序请求查找的方式。如果多个应用程序在狭窄的窗口中发出请求,这可能很重要。此信息仅与生成请求的机器有关,因为它任意分配 ID,并且没有其他应用程序或服务器或系统知道它是什么。因此很可能发生 ID 冲突。

相关内容