Sdílet prostřednictvím


Provádění zjišťování služeb

Důležité

Toto je dokumentace k Azure Sphere (starší verze). Azure Sphere (starší verze) se vyřazuje 27. září 2027 a uživatelé musí do této doby migrovat do Azure Sphere (integrované). K zobrazení dokumentace k Azure Sphere (integrované) použijte selektor verzí umístěný nad obsahem.

Aplikace vysoké úrovně v Azure Sphere můžou provádět zjišťování služeb pomocí zjišťování služeb DNS (DNS-SD). Aplikace můžou pomocí zjišťování služeb najít síťové služby a provádět překlad názvů hostitelů, aby mohly komunikovat se službou prostřednictvím brány firewall Azure Sphere. Dns vícesměrového vysílání (mDNS) se dá použít také k provádění zjišťování peer-to-peer v místní síti, což je užitečné zejména v případě, že IP adresy a názvy hostitelů cílového koncového bodu nejsou v době návrhu známé.

Aplikace používají dotazy DNS-SD k načtení záznamů DNS z jiných než místních serverů DNS nebo přes odkaz vícesměrového vysílání. Pokud je název dotazovaný pod doménou .local nejvyšší úrovně (TLD), dotaz je vícesměrové vysílání v místní síti prostřednictvím všech povolených síťových rozhraní; jinak se provede zjišťování jednosměrové služby. Ukázka zjišťování služeb ukazuje, jak provádět zjišťování služeb v Azure Sphere.

Poznámka:

Brána firewall Azure Sphere brání aplikacím v komunikaci s neoprávněnými službami. Povolení odchozích připojení k .local TLD v manifestu aplikace však může zvýšit bezpečnostní riziko pro zařízení tím, že aplikaci umožní připojení s neoprávněnými službami inzerovanými v místní síti. Aplikace by měly povolit odchozí připojení k .local TLD pouze v zabezpečených prostředích, která brání neoprávněným stranám v reklamních službách. K zajištění další ochrany v tomto scénáři vyžaduje Azure Sphere, aby se služby zjištěné v místní síti nacházejí také v místní podsíti.

Zahrnout soubory hlaviček

Aplikace, které provádějí zjišťování služby, musí obsahovat soubor hlavičky překladu:

 #include <resolv.h>

Povolit připojení ke službě

Před provedením dotazu DNS-SD je nutné přidat službu do funkce AllowedConnections manifestu aplikace. Brána firewall Azure Sphere pak umožní aplikaci připojit se ke zjištěným instancím služby pomocí přidružených názvů hostitelů a IP adres. Pokud je zadaná služba .local TLD, brána firewall povolí připojení pouze ke zjištěným prostředkům v místní podsíti.

Funkce AllowedConnections podporuje následující typy názvů služeb:

  • Název místní služby DNS, například "_sample._tcp.local"
  • Název jiné než místní služby DNS, například "_sampleinstance._tcp.dns-sd.org"
  • Název místní instance služby, například "_sampleinstance._tcp.hostname.local"
  • Název domény, například samplehost.contoso.com
  • IP adresa

Tady je výňatek z manifestu aplikace, který obsahuje jiný než místní název služby.

"AllowedConnections": [ "_http._tcp.dns-sd.org" ]

Provedení dotazu DNS-SD

Pokud chcete provést dotaz DNS-SD, musíte požádat o několik typů záznamů DNS:

  • PTR záznamy, které vyčíslují instance služby DNS.
  • Záznamy SRV a TXT , které obsahují podrobnosti o instancích služby, jako je název hostitele a port.
  • Záznamy , které obsahují IP adresy načtených názvů hostitelů.

Než odešlete dotaz, musíte ho vytvořit a inicializovat a pak přidat zprávu dotazu, která požaduje záznam DNS. Dotaz DNS-SD můžete vytvořit a inicializovat voláním funkce POSIX res_init(). Zprávu pro dotaz můžete vytvořit voláním funkce POSIX res_mkquery().

Odeslání dotazu DNS jednosměrového vysílání

Při zjišťování jednosměrové služby můžete odeslat dotaz DNS-SD a načíst odpověď voláním funkce POSIX res_send().

Pokud chcete odeslat dotaz DNS-SD přes vícesměrové vysílání, musí aplikace otevřít soket a odeslat požadavek přes soket na IP adresu zpětné smyčky 127.0.0.1 (cílový port 53). Po odeslání požadavku může být vráceno více odpovědí. Aplikace by měla čekat a naslouchat několik sekund, aby shromáždila všechny odpovědi. To je znázorněno v ukázce zjišťování služby.

Důležité

Tato IP adresa zpětné smyčky je funkce Beta, která bude vyřazena a následně nahrazena v budoucích verzích. To bude zásadní změna pro aplikace, které spoléhají na adresu.

Povolená připojení pro hostitele s více IP adresami

Brána firewall Azure Sphere umožňuje připojení pouze k jedné IP adrese na název hostitele. Pokud má hostitel více IP adres, brána firewall Azure Sphere umožňuje připojení jenom k jedné z těchto adres. Aplikace může pomocí nástroje curl odesílat požadavky HTTPS na hostitele, který má více IP adres. Curl se pokusí připojit ke každé IP adrese, dokud se nenajde povolená adresa. To však může způsobit zpoždění, když aplikace najde povolenou adresu.