Vermittlungsprotokoll

Seite 3: LAN-Sprecher

Inhaltsverzeichnis

Das Prinzip ist einfach: Anwendungen übergeben einen Satz von Dienstemerkmalen an einen Bonjour-Daemon, und dieser reicht die Information standardisiert über Multicast-DNS-Pakete auf UDP-Port 5353 an Teilnehmer des eigenen Sub-Netzes weiter. Üblicherweise sind Router so konfiguriert, dass sie Multicast-DNS-Pakete nicht aus dem LAN hinausbefördern. Die von Bonjour annoncierten Dienste sind im Internet also normalerweise nicht sichtbar, die Privatheit bleibt gewahrt.

Auf den LAN-Stationen geht die Information den umgekehrten Weg, von Bonjour zu den daran angemeldeten Client-Anwendungen. Deshalb erfährt Apples Musik-Player iTunes umgehend, wenn eine Musik-Freigabe im Netz hinzugekommen ist. Nimmt der Anbieter die Freigabe zurück, werden die LAN-Stationen ebenso darüber unterrichtet und die dort laufenden Client-Programme tilgen dann den Eintrag aus ihren Listen.

dns-sd -B _http._tcp local.
Browsing for _http._tcplocal.
Timestamp A/R Flags if Domain Service Type Instance Name
17:23:26.634 Add 3 4 local. _http._tcp. hp LaserJet 4200 (00306EFDD4CB)
17:23:26.636 Add 3 4 local. _http._tcp. hp LaserJet 1320 series (9B1874)
17:23:26.636 Add 3 4 local. _http._tcp. macserver
17:23:26.636 Add 3 4 local. _http._tcp. iCals
17:23:26.637 Add 3 4 local. _http._tcp. rosinante
17:23:26.637 Add 3 4 local. _http._tcp. Mini-Archiv (dz)
17:23:26.638 Add 3 4 local. _http._tcp. Bonjour-Tools
17:23:26.638 Add 3 4 local. _http._tcp. Ingo T. Storms iMac G5
17:23:26.638 Add 2 4 local. _http._tcp. Christian Persson

Mit dns-sd kann man alle im LAN annoncierten Web-Services anzeigen lassen.

Ein vollständiges Bild über die annoncierten Dienste verschaffen Bonjour-Browser. Für Mac OS X gibt es einige solcher Programme, die alle gemeldeten Dienste nach Art, Port oder IP-Adresse der anbietenden LANStation sortieren. Eines der interessantesten ist Observation Post, das man als Application Launcher für Bonjour Services nutzen kann – klickt man auf einen Eintrag einer fremden LAN-Station, öffnet Observation Post auf dem lokalen Mac das mit dem Bonjour-Service assoziierte Programm – zum Beispiel die Shell für ssh-Verbindungen oder das Printer Setup Utility für die Drucker-Einrichtung.

Auf anderen Betriebssystemen sind solche Browser mit grafischem User-Interface noch selten. Man kann jedoch auf Java-Implementationen oder auf Kommandozeilenprogramme wie dns_sd zurückgreifen. Im Weiteren gehen wir auf Letztere ausführlich ein, weil sie auf Mac OS X, Windows und Linux gleich bedient werden und weil man damit nicht nur Dienste abfragen, sondern auch annoncieren kann.

Die Bonjour-Funktionen sind weitgehend im Daemon mDNSResponder implementiert (auf manchen Systemen auch mdnsd genannt), den der jeweilige Bonjour-Installer auf dem PC einrichtet (Windows, Linux oder Mac OS X). Läuft der Daemon, nimmt dieser PC automatisch an der Bonjour-Kommunikation teil. Ein zentraler mDNS-Server ist nicht vorgesehen.

Ein User-Interface bringt der mDNSResponder nicht mit. Die Applikationen greifen auf dessen Funktionen über das Bonjour-Framework zu und üblicherweise findet man in den Anwendungen Schalter, über die sich Bonjour-Annoncen ein- oder ausschalten lassen. Zusätzlich kann man den mDNSResponder-Daemon mit dem Kommandozeilenprogramm dns-sd nutzen. Das bringen Mac OS X ab Version 10.4 sowie Suse ab Version 10.1 mit (wie man ältere Suse-Versionen mit dnssd nachrüstet, findet sich im Kasten Suse sagt Bonjour). Beim BonjourSetup für Windows fehlt dns-sd, aber es ist immerhin Bestandteil des Bonjour SDK für Windows. Die Sourcen setzen Windows 2003 SDK, Visual Studio 2003 sowie das Driver Development Kit voraus. Wer diese umfangreichen Pakete nicht installieren will, kann statt des Bonjour SDK auch JmDNS verwenden.

Um etwa Web-Services im LAN anzeigen zu lassen, startet man dns-sd mit dem Parameter -B und gibt eine Domain (in der Regel .local) sowie einen "Service Type" an, zum Beispiel "_http._tcp" für Webserver. Die Domain .local nutzt Bonjour von Haus aus, um auch Dienste per DNS verwalten zu können.

Die Zahl der inzwischen registrierten Service Types ist enorm. Das dürfte auch daran liegen, dass man eigene Service Types mit nur geringem Aufwand registrieren lassen kann – eine Mail mit einer Hand voll Angaben genügt.

Dns-sd koppelt sich nach dem Start dauerhaft an den mDNSResponder und liefert nach kurzer Zeit eine Tabelle, die es so lange aktualisiert, bis man es via CTRL-C beendet.

Startet man dns-sd mit der Option -R, lässt sich ein neuer Service registrieren. So können interessierte Entwickler mit Bonjour erste Erfahrungen sammeln, ohne gleich eigene Programme entwickeln zu müssen. Als weitere Parameter übergibt man dem Kommando einen Label (z. B. WindowsWebServer), den Service Type und die Portnummer; der letzte Parameter, das beschreibende TXT-Feld kann leer bleiben:

dns-sd -R WindowsWebServer _http._tcp. local. 80 ""

Bonjour prüft dann, ob das Label Windows-WebServer für den avisierten Service Type noch frei ist, meldet den Dienst gegebenenfalls an und berichtet "Name now registered and active" – der Service ist nun so lange im LAN sichtbar, wie dns-sd läuft. Mit JmDNS sieht das Befehlsformat nur geringfügig anders aus:

java -jar jmdns.jar -rs WindowsWebServer _http._tcp  local. 80 path=dz/index.html

Dieser Befehl meldet einen Webservice namens WindowsWebServer an und führt Webbrowser über Port 80 zum Unterverzeichnis dz, sodass sie automatisch die dort deponierte Index-Datei öffnen.