Multicast-DNS ( mDNS ) ist ein Netzwerkprotokoll , das Hostnamen in kleinen Netzwerken ohne lokalen Nameserver in IP-Adressen auflöst . Es handelt sich um einen Dienst, der keine Konfiguration erfordert und im Wesentlichen dieselben Programmierschnittstellen, Paketformate und dieselbe Semantik wie das Unicast- Domain Name System (DNS) verwendet. Es wurde so konzipiert, dass es sowohl als eigenständiges Protokoll als auch in Verbindung mit Standard-DNS-Servern funktioniert. [ 1 ] mDNS nutzt IP-Multicast- und UDP-Pakete ( User Datagram Protocol ) und wird von Apple Bonjour , Windows 10 und späteren Versionen sowie den Open-Source -Softwarepaketen von Avahi implementiert, die in den meisten Linux-Distributionen enthalten sind . Während die Windows-10 -Implementierung in früheren Versionen (Version 1703) [ 2 ] auf die Erkennung von Netzwerkdruckern, Bildschirmspiegelungsgeräten, drahtlosen Lautsprechern usw. beschränkt war, können spätere Versionen (Windows 10 1903 und später) auch Hostnamen auflösen. [ 3 ] mDNS kann in Verbindung mit DNS Service Discovery (DNS-SD) verwendet werden, einer zugehörigen Netzwerktechnik ohne Konfiguration, die separat in RFC  6763 spezifiziert ist . [ 4 ]

Geschichte

Multicast-DNS wurde erstmals im Jahr 2000 von Bill Woodcock und Bill Manning in der IETF vorgeschlagen und schließlich dreizehn Jahre später von Stuart Cheshire und Marc Krochmal als Standardisierungs- RFC 6762 veröffentlicht. [ 1 ] [ 5 ] 

Protokollübersicht

Wenn ein mDNS-Client einen Hostnamen auflösen muss, sendet er eine IP-Multicast -Anfrage an den Host mit diesem Namen, um sich zu identifizieren. Der Zielrechner sendet daraufhin eine Multicast-Nachricht mit seiner IP-Adresse zurück. Alle Rechner im selben Subnetz können diese Information nutzen, um ihre mDNS- Caches zu aktualisieren . Jeder Host kann seinen Anspruch auf einen Namen aufgeben, indem er ein Antwortpaket mit einer Gültigkeitsdauer (TTL) von null sendet.

Standardmäßig löst mDNS ausschließlich Hostnamen auf, die mit der .localTop-Level-Domain enden. Dies kann zu Problemen führen, wenn .localHosts betroffen sind, die mDNS nicht implementieren, aber über einen herkömmlichen Unicast-DNS-Server gefunden werden können. Die Behebung solcher Konflikte erfordert Netzwerkkonfigurationsänderungen, die mDNS eigentlich vermeiden soll.

Paketstruktur

Eine mDNS-Nachricht ist ein Multicast-UDP-Paket, das unter Verwendung der folgenden Adressierung gesendet wird:

Die Nutzlaststruktur basiert auf dem Unicast-DNS-Paketformat und besteht aus zwei Teilen – dem Header und den Daten. [ 6 ]

Der Header ist identisch mit dem von Unicast-DNS, ebenso wie die Unterabschnitte im Datenteil: Anfragen, Antworten, autoritative Nameserver und zusätzliche Einträge. Die Anzahl der Einträge in jedem Unterabschnitt entspricht dem Wert des entsprechenden *COUNT-Felds im Header.

Anfragen

Das Datenformat für Datensätze im Abfrageabschnitt ist gegenüber dem von Unicast-DNS leicht modifiziert und enthält das einbitige Feld UNICAST-RESPONSE. [ 1 ]

mDNS-Abfrageabschnittsfelder
FeldBeschreibungLängenbits​
QNAMEName des Knotens, auf den sich die Abfrage beziehtVariable
QTYPEDer Abfragetyp, d. h. der Typ des Ressourcendatensatzes, der in den Antworten zurückgegeben werden soll.16
UNICAST-RESPONSEBoolescher Wert, der angibt, ob eine Unicast-Antwort gewünscht ist.1
QCLASSKlassencode 1, auch bekannt als „IN“, für das Internet und IP-Netzwerke15

Wie bei Unicast-DNS besteht das QNAME-Feld aus einer Reihe von Längen-/Wert-Unterfeldern, den sogenannten Labels . Jedes Label repräsentiert einen der durch Punkte getrennten Teilstrings eines vollqualifizierten Domänennamens (FQDN). Die Liste wird entweder durch ein einzelnes Nullbyte, das die DNS- Root-Adresse darstellt , oder durch ein Byte mit gesetzten beiden höchstwertigen Bits (Wert 192) abgeschlossen, um einen indirekten Verweis auf eine andere Stelle in der Nachricht zu signalisieren. Dies wird in RFC 6762 als Namenskomprimierung bezeichnet.

Das Feld UNICAST-RESPONSE dient dazu, unnötige Broadcasts im Netzwerk zu minimieren: Wenn das Bit gesetzt ist, SOLLTEN die Antwortenden eine gerichtete Unicast-Antwort direkt an den anfragenden Knoten senden, anstatt die Antwort im gesamten Netzwerk zu verteilen.

Das Feld QCLASS ist identisch mit dem in Unicast-DNS.

Ressourcendatensätze

Alle Einträge in den Abschnitten Antworten, autoritative Nameserver und zusätzliche Einträge haben das gleiche Format und werden zusammenfassend als Resource Records (RR) bezeichnet.

Ressourceneinträge in mDNS haben im Vergleich zu Unicast-DNS auch ein leicht modifiziertes allgemeines Format:

mDNS-Ressourcendatensatzfelder
FeldBeschreibungLängenbits​
RRNAMEName des Knotens, zu dem der Datensatz gehörtVariable
RRTYPEDer Typ des Ressourcendatensatzes16
CACHE-FLUSHBoolescher Wert, der angibt, ob veraltete zwischengespeicherte Datensätze gelöscht werden sollen.1
RRCLASSKlassencode 1, auch bekannt als „IN“, für das Internet und IP-Netzwerke15
TTLZeitintervall (in Sekunden), in dem der RR zwischengespeichert werden soll32
RDLENGTHGanze Zahl, die die Länge (in Oktetten) des RDATA-Felds angibt.16
RDATARessourcendaten; die interne Struktur variiert je nach RRTYPE.Variable

Das CACHE-FLUSH-Bit wird verwendet, um benachbarten Knoten mitzuteilen, dass der Datensatz alle bereits vorhandenen Einträge für diesen RRNAME und RRTYPE überschreiben und nicht anhängen soll.

Die Formate der RDATA-Felder entsprechen denen von Unicast-DNS. Allerdings sieht DNS Service Discovery (DNS-SD), der häufigste Anwendungsfall für mDNS, geringfügige Modifikationen an einigen ihrer Formate vor (insbesondere an TXT-Einträgen).

Siehe auch

Referenzen

  1. ^ a b c Multicast DNS . Internet Engineering Task Force (IETF). doi : 10.17487/RFC6762 . RFC 6762 .
  2. ^ mDNS im Unternehmen
  3. ^ mDNS und DNS-SD halten langsam Einzug in Windows 10 , Ctrl-Blog, 21. Oktober 2015 , abgerufen am 30. August 2017
  4. ^ DNS-Dienstermittlung . IETF . doi : 10.17487/RFC6763 . RFC 6763 .
  5. ^ Manning, Bill; Woodcock, Bill (August 2000), „Multicast Domain Name Service“ , IETF Datatracker , IETF
  6. ^ P. Mockapetris (November 1987). DOMAINNAMEN – IMPLEMENTIERUNG UND SPEZIFIKATION . Network Working Group, IETF . doi : 10.17487/RFC1035 . RFC 1035 .Die