答案1
DNS 传统上通过无连接协议 UDP 运行,因此响应无法通过网络信息表明它响应的是什么请求。
提供问题允许执行递归查询的服务器将响应发送给正确的查询者,将数据报传递给主机而不进行修改,并允许高级防火墙确定在 53 上传入的给定 udp 数据报是请求 - 响应对的一部分。
由于 UDP 无法传达此信息,因此必须由应用程序定义其数据结构以便执行该任务。
请参阅第 4.1.1 节RFC 1035了解消息结构中每个元素的描述。特别是 ID:
ID
由生成任何类型查询的程序分配的 16 位标识符。此标识符是相应答复的副本,请求者可以使用它来匹配未完成查询的答复。
因此,ID 是最终用户工作站可以判断哪个应用程序请求查找的方式。如果多个应用程序在狭窄的窗口中发出请求,这可能很重要。此信息仅与生成请求的机器有关,因为它任意分配 ID,并且没有其他应用程序或服务器或系统知道它是什么。因此很可能发生 ID 冲突。