Bonjour / DNS Service Discovery запросы

0

Я пытаюсь реализовать обнаружение службы 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 кажется, содержит многообещающую информацию о структуре сообщения.

senloe
источник

Ответы:

0

Между RFC1035 а также Wireshark У меня есть довольно приличная картина того, как выглядит запрос. Для стандартного запроса в основном поля Ответ / Полномочия / Дополнительные будут пустыми. Заголовок содержит общую информацию, включая количество разделов вопросов.

+---------------------+
|        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-запроса. Это довольно крутой инструмент, о котором я бы хотел знать раньше.

senloe
источник