Bonjour/DNS 服务发现查询

Bonjour/DNS 服务发现查询

我正在尝试在我的应用程序中实现 DNS 服务发现(不,我不是在寻求程序化的答案)。我认为我最大的痛点之一是生成查询。我知道我需要在端口 5353 上发送多播广播,并希望查找类型_ipp._tcp和的设备_print._tcp,但我不知道问题部分应该是什么样子。

例如,在 SSDP 中我发送了如下查询:

"M-SEARCH * HTTP/1.1\r\n"
"HOST: 239.255.255.250:1900\r\n" +
"MAN: \"ssdp:discover\"\r\n"
"ST: urn:schemas-upnp-org:device:Printer:1\r\n"
"MX: 5000\r\n\r\n"

根据我对 DNS 查询的了解,我需要发送类似以下内容的内容:

"_ipp.tcp,all,all"

但我知道还需要更多。

如能提供任何指向文档等的指针,我们将不胜感激!

更新 rfc1035似乎包含有关消息结构的有希望的信息。

答案1

之间rfc1035wireshark,我对查询的样子有了一个相当清晰的印象。对于标准查询,答案/权限/附加字段基本上是空白的。标题包含一般信息,包括包含多少个问题部分。

+---------------------+
|        Header       |
+---------------------+
|       Question      | the question for the name server
+---------------------+
|        Answer       | RRs answering the question
+---------------------+
|      Authority      | RRs pointing toward an authority
+---------------------+
|      Additional     | RRs holding additional information
+---------------------+

Wireshark甚至会为您提供 DNS 查询的位和十六进制视图。这是一个很酷的工具,我希望早点知道。

相关内容