# Bonjour (Apple)

Bonjour Protokollspezifikationen :
| IPv4LL | Dynamische Konfiguration von IPv4 Link-Local Adressen |
| mDNS | Multicast DNS |
| DNS-SD | DNS-Basiertes Service Discovery |
| DNS-LLQ | Langlebige DNS Queries |
| DNS-UL | Dynamische DNS Update Leases |
| NAT-PMP | NAT Port Mapping Protokoll |
Bonjour (französisch für „Guten Tag!“), ehemals Rendezvous (französisch für „das Treffen“), ist eine Technik, die die automatische Erkennung von Netzwerkdiensten in IP-Netzen bereitstellt. Es ist eine Implementierung des Zeroconf-Systems durch Apple. Bonjour implementiert Multicast DNS (mDNS), DNS-SD sowie IPv4LL. mDNS und DNS-SD sind Apple-Entwicklungen, die zur Anerkennung als offene Standards freigegeben wurden.
Unter anderem verwendet iTunes die Bonjour-Technologie, um automatisch andere Computer zu finden, die ihre Musik freigeben. Unter Windows wird der Bonjour-Dienst von Programmen, die diesen benötigen, bei ihrer Installation mit installiert. In Version 10.4 („Tiger,“ 2005) des Betriebssystems Mac OS X wurde Rendezvous in Bonjour umbenannt, da es rechtliche Probleme mit dem Namen gab. Verwendung findet Bonjour außerdem unter anderem in Apple Safari, iTunes, AirPrint und in einigen Adobe-Programmen sowie in netzwerkfähiger Hardware.

## Geschichte

Mit der Einführung von Apples UNIX-basiertem Mac OS X wurde das Vorgänger-Netzwerkprotokoll AppleTalk nicht migriert. Die Probleme, die vorher auf Mac OS 9 mit AppleTalk gelöst worden waren, wie etwa, einen neuen Drucker per Ethernet-Verbindung zu erreichen, bestanden wieder. Apple hatte damals nicht vor, eine AppleTalk-Variante für Mac OS X zu entwickeln, wodurch auch auf einem Mac wieder eine Netzwerkkonfiguration mit IP-Adressen wie bei einem klassischen UNIX-System durchgeführt werden musste.
Ein Benutzer namens Stuart Cheshire wollte das nicht akzeptieren und schrieb in einer E-Mail-Diskussionsgruppe sein Leid. Diese E-Mail und die ganze Diskussion haben Geschichte geschrieben, weil daraufhin Apple beschloss, einen zeitgemäßen AppleTalk-Nachfolger zu entwickeln. Seine zwei Kernaussagen in dieser Diskussion waren, dass es erstens keine Dauerlösung sein kann, dass UNIX-Benutzer zu ihm kommen, um über seinen Mac ihre Dokumente per Netzwerk aus der Ferne auszudrucken, weil auf ihren Rechnern die Konfiguration der Drucker zu umständlich und fehlerträchtig ist. Einige Teilnehmer argumentierten, dass Netzwerkprobleme die Aufgabe des Administrators seien und man deshalb keine technisch bessere Lösung konstruieren muss. Er entgegnete als zweites, dass so einfache Aufgaben auch ohne Administrator möglich sein müssten.
Später wurde Stuart Cheshire von Apple eingestellt, um einen zeitgemäßen AppleTalk-Nachfolger zu entwickeln, der auf dem TCP/IP-Protokollstapel aufbaut. Heraus kam Rendezvous, das später wegen Markenrechtsproblemen in Bonjour umbenannt wurde. Die gesamte Technik wurde als Open Source freigegeben und wird als Standard Zeroconf auch für andere Betriebssysteme weitergepflegt.

## Bonjour für Windows

Bonjour ist auch für Microsoft Windows verfügbar und steht auf der Apple-Website zum Herunterladen bereit. Die Software ermöglicht damit auch unter Windows und in heterogenen Netzen eine einfache Vernetzung von bonjour-fähiger Soft- und Hardware. Zumeist handelt es sich dabei um netzwerkfähige Drucker, die sich dank Bonjour ohne weitere Netzwerkkonfiguration durch den Benutzer verwenden lassen.

## Technik

Bonjour erfüllt wie ZeroConf drei Hauptaufgaben:
* Zuweisung von IP-Adressen, ohne dass ein DHCP-Server im Netzwerk vorhanden ist;
* Auflösung von Hostnamen und IP-Adressen, ohne dass ein DNS-Server im Netzwerk vorhanden ist;
* Publizierung und Ermittlung von existierenden Diensten (z. B. nutzbare Drucker), ohne dass ein Verzeichnis-Server wie LDAP im Netzwerk vorhanden ist.
Die kompletten technischen Konzepte von ZeroConf spezifizieren eine Reihe von RFC-Dokumenten, hauptsächlich:
* IPv4LL in RFC 3927 für die Zuweisung von Link-Local-IP-Adressen ohne zentralen DHCP-Server;
* mDNS in RFC 6762 für multicast DNS zur Auflösung von Hostnamen ohne zentralen DNS-Server;
* DNS-SD in RFC 6763 für DNS-based Service Discovery (Dienste-Ermittlung) ohne einen zentralen Directory-Server.
IANA führt ein Verzeichnis von Dienste-Namen und Ports, die service names and ports registry. In diesem Verzeichnis können sich Entwickler, die neue Dienste-Typen für ihre Systeme definieren und entwickeln möchten, eindeutige Namen reservieren und registrieren lassen.
Die Hauptkomponente der ZeroConf-Implementierung in Gestalt von Bonjour, der Darwin-mDNSResponder, steht als Open-Source unter der Apache-Lizenz zur freien Verfügung.
Bonjour startet einen Daemon, mit dem sich die dns_sd aus der Anwendung heraus verbinden kann. Für Java gibt es eine JNI-Brücke.