Wie kann mein Server seine Anwesenheit jedem im Netzwerk bekannt geben

Wie kann mein Server seine Anwesenheit jedem im Netzwerk bekannt geben

Die Situation ist wie folgt. Ich möchte eine Anwendung auf einem Server laufen lassen. Alle Desktops im Unternehmen müssen sich damit verbinden. Aber ich möchte nicht, dass die IP-Adresse des Servers fest in die Desktop-Apps codiert wird. Vielmehr möchte ich, dass der Server sich selbst durch einige Broadcast-Mechanismen ankündigen kann. Die Desktop-Apps würden auf eine solche Nachricht warten und so die IP-Adresse des Servers erfahren und sich dann mit ihm verbinden können.

Wie kann ich das machen? Muss ich Multicast verwenden? Wie weit reichen die Multicast-Nachrichten? Wie können die Desktop-Apps Multicast-Daten abhören?

Antwort1

Die gebräuchlichste Methode hierfür ist die Verwendung von normalemDNS. Ihr Unternehmen hat wahrscheinlich einen eigenen Domänennamen, möglicherweise einen internen. Fügen Sie einfach eine Subdomäne darunter hinzu – myapp.internal.example.comoder myapp.corpetwas Ähnliches – und verweisen Sie auf die Adresse Ihres Servers.

myapp.<domain>.         A       10.0.0.5
myapp.<domain>.         AAAA    2001:db8::123:4

(Es ist schließlich einServer, seine IP-Adresse ändert sich wahrscheinlich nicht wöchentlich. Und wenn sie sich ändert, müssen Sie nur die Subdomäne im DNS aktualisieren.)

Sie können es weiter verfeinern und verwendenSRV-Einträgeanstelle von direkten A/AAAA-Adressdatensätzen. Das XMPP-Chatprotokoll verwendet beispielsweise SRV-Datensätze, um Server für eine Domäne zu lokalisieren, von denen es mehrere mit unterschiedlichen Prioritäten geben kann:

chat1.<domain>.         A       10.0.0.4
chat2.<domain>.         A       10.0.0.7

                                ; priority, weight, port, hostname
_xmpp._tcp.<domain>.    SRV      0 0 5222 chat1.<domain>.
_xmpp._tcp.<domain>.    SRV     10 0 5222 chat1.<domain>.

Dies ist für die Apps komplexer, da sie nun eine gewisse Logik benötigen, um die zurückgegebenen Datensätze nach SRV-Priorität und dann nach Gewicht zu sortieren. Es bietet jedoch möglicherweise einige Vorteile, beispielsweise die Möglichkeit, langsamere „Backup“-Server hinzuzufügen.


Wenn das aus irgendeinem Grund nicht akzeptabel ist, können Sie einen der vorhandenen Multicast-basiertenDiensterkennungsprotokolle. (Einige von ihnen kombinieren Namensauflösung und Diensterkennung zu einem, andere halten sie getrennt.)

  • Apple und verschiedene Linux-Distributionen verwenden Bonjour/Avahi akamDNS("Multicast DNS") kombiniert mitDNS-SDsowohl für die allgemeine Diensterkennung als auch für die lokale Namensauflösung;

  • Microsoft bevorzugt die UPnP-basierteSSDP, außer wenn es bevorzugtWS-Erkennungstattdessen. In der Vergangenheit wurde NetBIOS verwendet. Alle sind dokumentiert unterFunktionsanbieter.

  • (Einige Programme entscheiden sich dafür, einfach UDP-Datagramme mit der Meldung „Ich bin hier!“ in ihrem eigenen benutzerdefinierten Format zu senden. Das funktioniert nicht gut.)

Normalerweise gibt es sowohl vom Betriebssystem bereitgestellte APIs als auch Bibliotheken von Drittanbietern, um bestimmte Dienste mithilfe des entsprechenden Erkennungsprotokolls nachzuschlagen.

Wenn Sie selbst etwas implementieren möchten, bietet jedes Betriebssystem auch Funktionen zumEiner Multicast-Gruppe beitretenund um Nachrichten zu empfangen, die jemand an diese Gruppe sendet.IP-Multicastsollte standardmäßig innerhalb einer Broadcast-Domäne funktionieren, muss aber oftso konfiguriert, dass Router.

verwandte Informationen