Bonjour / DNS-Dienstermittlungsabfragen

690
senloe

Ich versuche, DNS-Service Discovery in meiner Anwendung zu implementieren (Nein, ich frage nicht nach einer programmatischen Antwort). Was ich glaube, ist einer meiner großen Probleme, die Abfrage zu generieren. Ich weiß, dass ich eine Multicast-Übertragung an Port 5353 senden muss und nach Geräten vom Typ _ipp._tcpund suchen möchte _print._tcp, aber ich weiß nicht, wie der Fragenabschnitt aussehen muss.

Zum Beispiel habe ich in SSDP eine Abfrage gesendet, die wie folgt aussieht:

"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" 

Von dem, was ich über eine DNS-Abfrage weiß, muss ich Folgendes senden:

"_ipp.tcp,all,all" 

aber ich weiß, dass es mehr geben muss.

Jeder Hinweis auf Dokumentation usw. wäre sehr dankbar!

Das Update rfc1035 scheint vielversprechende Informationen zur Nachrichtenstruktur zu enthalten.

0

1 Antwort auf die Frage

0
senloe

Zwischen rfc1035 und wireshark habe ich ein ziemlich gutes Bild davon, wie eine Abfrage aussieht. Bei einer Standardabfrage sind die Felder Antwort / Berechtigung / Zusatz grundsätzlich leer. Die Kopfzeile enthält allgemeine Informationen, einschließlich der Anzahl der Frageabschnitte.

+---------------------+ | 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 gibt Ihnen sogar die Bit- und Hex-Ansicht der DNS-Abfrage. Es ist ein ziemlich cooles Werkzeug, von dem ich wünschte, ich hätte es früher gewusst.