Bonjour / DNS Сервис Обнаружение запросов

589
senloe

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

0

1 ответ на вопрос

0
senloe

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