Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aplikacje wysokiego poziomu w usłudze Azure Sphere mogą przeprowadzać odnajdowanie usług przy użyciu odnajdowania usług DNS (DNS-SD). Aplikacje mogą używać odnajdowania usług do znajdowania usług sieciowych i rozwiązywania problemów z nazwami hostów, dzięki czemu mogą pracować z usługą za pośrednictwem zapory Azure Sphere. Multicast DNS (mDNS) może być również używany do wykonywania odnajdowania w komunikacji równorzędnej w sieci lokalnej, co jest szczególnie przydatne, gdy adresy IP i nazwy hostów docelowego punktu końcowego nie są znane w czasie projektowania.
Aplikacje używają zapytań DNS-SD do pobierania rekordów DNS z nielokalizacji serwerów DNS lub za pośrednictwem linku multicast. Jeśli nazwa będąca zapytaniem znajduje się w domenie .local najwyższego poziomu (TLD), zapytanie jest multiemisji w sieci lokalnej za pośrednictwem wszystkich włączonych interfejsów sieciowych. W przeciwnym razie jest wykonywane odnajdowanie usługi emisji pojedynczej. W przykładzie odnajdowania usługi pokazano, jak przeprowadzić odnajdowanie usług w usłudze Azure Sphere.
Uwaga
Zapora Azure Sphere uniemożliwia aplikacjom komunikowanie się z nieautoryzowanymi usługami. Jednak zezwolenie na połączenia wychodzące z . local TLDs w manifeście aplikacji może zwiększyć zagrożenie bezpieczeństwa dla urządzenia, zezwalając aplikacji na łączenie się z nieautoryzowanymi usługami reklamowanymi w sieci lokalnej. Aplikacje powinny zezwalać na połączenia wychodzące z . local TLDs tylko w zabezpieczonych środowiskach, które uniemożliwiają nieautoryzowanym podmiotom dostęp do usług reklamowych. Aby zapewnić dodatkową ochronę w tym scenariuszu, usługa Azure Sphere wymaga, aby usługi wykryte w sieci lokalnej również znajdować się w lokalnej podsieci.
Dołączanie plików nagłówków
Aplikacje wykonujące odnajdowanie usług muszą zawierać plik nagłówka rozpoznawania nazw:
#include <resolv.h>
Zezwalanie na połączenie z usługą
Przed wykonaniem zapytania DNS-SD należy dodać usługę do funkcji AllowedConnections manifestu aplikacji. Zapora Azure Sphere umożliwi aplikacji łączenie się z wykrytymi wystąpieniami usługi przy użyciu skojarzonych z nimi nazw hostów i adresów IP. Jeśli określono usługę .local TLD, zapora zezwala na połączenia tylko do odnalezionych zasobów w lokalnej podsieci.
W funkcji AllowedConnections są obsługiwane następujące typy nazw usług:
- Lokalna nazwa usługi DNS, na przykład "_sample._tcp.local"
- Nie lokalna nazwa usługi DNS, na przykład "_sampleinstance._tcp.dns-sd.org"
- Nazwa lokalnego wystąpienia usługi, na przykład "_sampleinstance._tcp.hostname.local"
- Nazwa domeny, na przykład "samplehost.contoso.com"
- Adres IP
Oto fragment manifestu aplikacji, który zawiera nazwę usługi innej niż lokalna.
"AllowedConnections": [ "_http._tcp.dns-sd.org" ]
Wykonywanie zapytania DNS-SD
Aby wykonać zapytanie DNS-SD, musisz zażądać kilku typów rekordów DNS:
- Rekordy PTR wyliczanie wystąpień usługi DNS.
- Rekordy SRV i TXT zawierające szczegóły wystąpień usługi, takie jak nazwa hosta i port.
- Rekordy zawierające adresy IP pobranych nazw hostów.
Przed wysłaniem zapytania należy je utworzyć i zainicjować, a następnie dodać komunikat zapytania żądający rekordu DNS. Zapytanie DNS-SD można utworzyć i zainicjować, wywołując funkcję POSIX res_init(). Komunikat dla zapytania można utworzyć, wywołując funkcję POSIX res_mkquery().
Wysyłanie jednoskładnego zapytania DNS
Podczas odnajdowania usługi emisji pojedynczej możesz wysłać zapytanie DNS-SD i pobrać odpowiedź, wywołując funkcję POSIX res_send().
Wysyłanie zapytania za pośrednictwem linku multiemisji
Aby wysłać zapytanie DNS-SD za pośrednictwem linku multicast, aplikacja musi otworzyć gniazdo i wysłać żądanie przez gniazdo na adres IP loopback 127.0.0.1 (port docelowy 53). Po wysłaniu żądania może zostać zwróconych wiele odpowiedzi. Aplikacja powinna zaczekać i odsłuchać kilka sekund, aby zebrać wszystkie odpowiedzi. Jest to wykazane w przykładzie odnajdowania usługi.
Ważne
Ten zapętlony adres IP jest funkcją beta, która zostanie wycofana, a następnie zastąpiona w przyszłych wersjach. Będzie to przełomowa zmiana dla aplikacji, które korzystają z adresu.
Dozwolone połączenia hostów z wieloma adresami IP
Zapora Azure Sphere umożliwia połączenia tylko z jednym adresem IP na nazwę hosta. Jeśli host ma wiele adresów IP, zapora Azure Sphere zezwala tylko na połączenia z jednym z adresów. Aplikacja może używać curl do żądania HTTPS do hosta, który ma wiele adresów IP; curl spróbuje połączyć się z każdym adresem IP do momentu znalezienia dozwolonego adresu. Może to jednak spowodować opóźnienie, gdy aplikacja znajdzie dozwolony adres.