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:
- IPv4-Adresse 224.0.0.251 oder IPv6-Adresse ff02::fb
- UDP-Port 5353
- Bei Verwendung von Ethernet-Frames ist die Standard-IP-Multicast-MAC-Adresse 01:00:5E:00:00:FB (für IPv4 ) oder 33:33:00:00:00:FB (für IPv6 ).
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 ]
| Feld | Beschreibung | Längenbits |
|---|---|---|
| QNAME | Name des Knotens, auf den sich die Abfrage bezieht | Variable |
| QTYPE | Der Abfragetyp, d. h. der Typ des Ressourcendatensatzes, der in den Antworten zurückgegeben werden soll. | 16 |
| UNICAST-RESPONSE | Boolescher Wert, der angibt, ob eine Unicast-Antwort gewünscht ist. | 1 |
| QCLASS | Klassencode 1, auch bekannt als „IN“, für das Internet und IP-Netzwerke | 15 |
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:
| Feld | Beschreibung | Längenbits |
|---|---|---|
| RRNAME | Name des Knotens, zu dem der Datensatz gehört | Variable |
| RRTYPE | Der Typ des Ressourcendatensatzes | 16 |
| CACHE-FLUSH | Boolescher Wert, der angibt, ob veraltete zwischengespeicherte Datensätze gelöscht werden sollen. | 1 |
| RRCLASS | Klassencode 1, auch bekannt als „IN“, für das Internet und IP-Netzwerke | 15 |
| TTL | Zeitintervall (in Sekunden), in dem der RR zwischengespeichert werden soll | 32 |
| RDLENGTH | Ganze Zahl, die die Länge (in Oktetten) des RDATA-Felds angibt. | 16 |
| RDATA | Ressourcendaten; 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
- Bonjour Sleep Proxy
- Link-Local Multicast Name Resolution (LLMNR)
- Namensdienstumschalter (NSS)
- Simple Service Discovery Protocol (SSDP)
Referenzen
- ^ a b c Multicast DNS . Internet Engineering Task Force (IETF). doi : 10.17487/RFC6762 . RFC 6762 .
- ^ mDNS im Unternehmen
- ^ mDNS und DNS-SD halten langsam Einzug in Windows 10 , Ctrl-Blog, 21. Oktober 2015 , abgerufen am 30. August 2017
- ^ DNS-Dienstermittlung . IETF . doi : 10.17487/RFC6763 . RFC 6763 .
- ^ Manning, Bill; Woodcock, Bill (August 2000), „Multicast Domain Name Service“ , IETF Datatracker , IETF
- ^ P. Mockapetris (November 1987). DOMAINNAMEN – IMPLEMENTIERUNG UND SPEZIFIKATION . Network Working Group, IETF . doi : 10.17487/RFC1035 . RFC 1035 .Die
Externe Links
- Multicast DNS – Informationsseite, betrieben vom mDNS-Entwickler Stuart Cheshire
- LLMNR, Multicast-DNS und Namen in Ihrem LAN