Multiemisja DNS
W sieciach komputerowych protokół multiemisji DNS ( mDNS ) tłumaczy nazwy hostów na adresy IP w małych sieciach, które nie zawierają lokalnego serwera nazw . Jest to o zerowej konfiguracji , wykorzystująca zasadniczo te same interfejsy programistyczne, formaty pakietów i semantykę działania, co system nazw domen (DNS) emisji pojedynczej. Został zaprojektowany do pracy jako samodzielny protokół lub kompatybilny ze standardowymi serwerami DNS. Wykorzystuje protokół IP multicast User Datagram Protocol (UDP) i jest implementowany przez pakiety oprogramowania Apple Bonjour i open source Avahi , zawarte w większości dystrybucji Linuksa. Chociaż systemu Windows 10 ograniczała się do wykrywania drukarek sieciowych, kolejne wersje rozwiązały również nazwy hostów. mDNS może działać w połączeniu z DNS Service Discovery (DNS-SD), towarzyszącą techniką sieciową o zerowej konfiguracji, określoną oddzielnie w dokumencie RFC 6763.
Historia
Multiemisja DNS została po raz pierwszy zaproponowana przez Billa Woodcocka i Billa Manninga w IETF w 2000 r., a ostatecznie została opublikowana jako ścieżka standardów IETF RFC 6762 przez Stuarta Cheshire i Marca Krochmala trzynaście lat później.
Przegląd protokołów
Kiedy klient mDNS musi rozwiązać nazwę hosta, wysyła zapytanie multiemisji IP , które prosi hosta o tej nazwie o zidentyfikowanie się. Następnie ta maszyna docelowa wysyła multiemisję, która zawiera jej adres IP. Wszystkie maszyny w tej podsieci mogą następnie użyć tych informacji do aktualizacji swoich pamięci podręcznych mDNS. Każdy host może zrezygnować z prawa do nazwy, wysyłając pakiet odpowiedzi z czasem życia (TTL) równym zeru.
Domyślnie mDNS rozpoznaje wyłącznie nazwy hostów kończące się na domenę najwyższego poziomu .local . Może to powodować problemy, jeśli .local zawiera hosty, które nie implementują mDNS, ale można je znaleźć za pośrednictwem konwencjonalnego serwera DNS emisji pojedynczej. Rozwiązanie takich konfliktów wymaga zmian w konfiguracji sieci, których mDNS został zaprojektowany w celu uniknięcia.
Struktura pakietu
Wiadomość mDNS to pakiet multiemisji UDP wysyłany przy użyciu następującego adresowania:
- Adres IPv4 224.0.0.251 lub adres IPv6 ff02::fb
- Port UDP 5353
- W przypadku korzystania z ramek Ethernet standardowy adres MAC multiemisji IP 01:00:5E:00:00:FB (dla IPv4 ) lub 33:33:00:00:00:FB (dla IPv6 )
Struktura danych jest oparta na formacie pojedynczego pakietu DNS , który składa się z dwóch części — nagłówka i danych.
Nagłówek jest identyczny z tym, który można znaleźć w DNS emisji pojedynczej, podobnie jak podsekcje w części danych: zapytania, odpowiedzi, autorytatywne serwery nazw i dodatkowe rekordy. Liczba rekordów w każdej podsekcji jest zgodna z wartością odpowiedniego pola *COUNT w nagłówku.
Zapytania
Format drutu dla rekordów w sekcji zapytań jest nieco zmodyfikowany w stosunku do formatu pojedynczego DNS, dodając jednobitowe pole UNICAST-RESPONSE.
Pole | Opis | Bity długości |
---|---|---|
QNAME | Nazwa węzła, którego dotyczy zapytanie | Zmienny |
TYP | Typ zapytania, czyli typ RR, który ma zostać zwrócony w odpowiedziach. | 16 |
ODPOWIEDŹ UNICAST | Flaga logiczna wskazująca, czy wymagana jest odpowiedź emisji pojedynczej | 1 |
KLASA Q | Kod klasy, 1 aka „IN” dla Internetu i sieci IP | 15 |
Podobnie jak w DNS typu unicast, pole QNAME składa się z serii podpól długości/wartości zwanych „etykietami”. Każda etykieta reprezentuje jeden z podłańcuchów oddzielonych kropkami w pełni kwalifikowanej nazwie domeny (FQDN). Lista jest zakończona albo pojedynczym bajtem zerowym reprezentującym „korzeń” DNS, albo bajtem z ustawionymi dwoma bitami wysokiego rzędu (wartość 192), aby zasygnalizować pośredni wskaźnik do innej lokalizacji w wiadomości. Jest to znane jako kompresja nazw w RFC-6762.
Pole UNICAST-RESPONSE jest używane do minimalizowania niepotrzebnych emisji w sieci: jeśli ten bit jest ustawiony, respondenci POWINNI wysłać odpowiedź skierowaną w trybie emisji pojedynczej bezpośrednio do węzła pytającego, zamiast rozgłaszać odpowiedź do całej sieci.
Pole QCLASS jest identyczne z polem w DNS emisji pojedynczej.
Rekordy zasobów
Wszystkie rekordy w sekcjach odpowiedzi, autorytatywnych serwerów nazw i dodatkowych rekordów mają ten sam format i są wspólnie określane jako rekordy zasobów (RR).
Rekordy zasobów w mDNS mają również nieco zmodyfikowany ogólny format w porównaniu do pojedynczego DNS:
Pole | Opis | Bity długości |
---|---|---|
RRNAZWA | Nazwa węzła, którego dotyczy rekord | Zmienny |
RRTYP | Typ rekordu zasobu | 16 |
USUWANIE CACHE | Flaga logiczna wskazująca, czy przestarzałe rekordy w pamięci podręcznej powinny zostać usunięte | 1 |
RRKLASA | Kod klasy, 1 aka „IN” dla Internetu i sieci IP | 15 |
TTL | Przedział czasu (w sekundach), w którym RR powinien być buforowany | 32 |
DŁUGOŚĆ | Liczba całkowita reprezentująca długość (w oktetach) pola RDATA | 16 |
RDATA | dane zasobów; struktura wewnętrzna różni się w zależności od RRTYPE | Zmienny |
Bit CACHE-FLUSH jest używany do instruowania sąsiednich węzłów, że rekord powinien nadpisać, a nie być dołączany, wszelkie istniejące wpisy w pamięci podręcznej dla tego RRNAME i RRTYPE.
Formaty pól RDATA są takie same, jak w przypadku pojedynczego DNS. Jednak DNS Service Discovery (DNS-SD), najczęstszy przypadek użycia mDNS, określa niewielkie modyfikacje niektórych ich formatów (zwłaszcza rekordów TXT).
Zobacz też
- Zastępca uśpienia Bonjour
- Link-Local Multicast Name Resolution (LLMNR)
- Przełącznik usługi nazw (NSS)
Linki zewnętrzne
- Multicast DNS - strona informacyjna prowadzona przez projektanta mDNS, Stuarta Cheshire
- LLMNR, Multicast DNS i nazwy w Twojej sieci LAN