Välja ett protokoll för enhetskommunikation
Med IoT Hub kan enheter använda följande protokoll för kommunikation på enhetssidan:
Information om hur dessa protokoll stöder specifika IoT Hub finns i Vägledning för kommunikation från enhet till moln och Vägledning för kommunikation från moln till enhet.
Följande tabell innehåller rekommendationer på hög nivå för ditt val av protokoll:
| Protokoll | När du bör välja det här protokollet |
|---|---|
| MQTT MQTT via WebSocket |
Använd på alla enheter som inte behöver ansluta flera enheter (var och en med sina egna autentiseringsuppgifter per enhet) via samma TLS-anslutning. |
| AMQP AMQP via WebSocket |
Använd på fält- och molngatewayer för att dra nytta av anslutnings multiplexering mellan enheter. |
| HTTPS | Används för enheter som inte stöder andra protokoll. |
Tänk på följande när du väljer protokoll för kommunikation på enhetssidan:
Moln-till-enhet-mönster. HTTPS har inget effektivt sätt att implementera server-push. När du använder HTTPS kan enheter därför IoT Hub efter meddelanden från moln till enhet. Den här metoden är ineffektiv för både enheten och IoT Hub. Enligt de aktuella HTTPS-riktlinjerna ska varje enhet avse meddelanden var 25:e minut eller mer. Utfärdande av fler HTTPS tar emot resultat IoT Hub begränsning av begäranden. MQTT och AMQP har stöd för server-push när meddelanden från molnet till enheten tas emot. De möjliggör omedelbara push-meddelanden från IoT Hub till enheten. Om leveranssvarstid är ett problem är MQTT eller AMQP de bästa protokollen att använda. Https fungerar också för enheter som sällan är anslutna.
Fältgatewayer. MQTT och HTTPS stöder endast en enskild enhetsidentitet (enhets-ID plus autentiseringsuppgifter) per TLS-anslutning. Därför stöds inte dessa protokoll för fältgatewayscenarier som kräver multiplexering av meddelanden med flera enhetsidentiteter i en enda eller en pool med överordnade anslutningar till IoT Hub. Sådana gatewayer kan använda ett protokoll som stöder flera enhetsidentiteter per anslutning, till exempel AMQP, för sin överordnade trafik.
Enheter med låg resurs. MQTT- och HTTPS-biblioteken har ett mindre fotavtryck än AMQP-biblioteken. Om enheten därför har begränsade resurser (till exempel mindre än 1 MB RAM-minne) kan dessa protokoll vara den enda protokollimplementering som är tillgänglig.
Nätverkstrasslar. Standard-AMQP-protokollet använder port 5671 och MQTT lyssnar på port 8883. Användning av dessa portar kan orsaka problem i nätverk som är stängda för icke-HTTPS-protokoll. Använd MQTT via WebSockets, AMQP över WebSockets eller HTTPS i det här scenariot.
Nyttolaststorlek. MQTT och AMQP är binära protokoll, vilket resulterar i mer kompakta nyttolaster än HTTPS.
Varning
När du använder HTTPS ska varje enhet inte avse meddelanden från molnet till enheten mer än en gång var 25:e minut. Under utveckling kan varje enhet avse oftare, om så önskas.
Viktigt
Följande funktioner för enheter som använder X.509-certifikatutfärdarautentisering (CA) är ännu inte allmänt tillgängliga och förhandsgranskningsläget måste vara aktiverat:
- HTTPS, MQTT över WebSockets och AMQP över WebSockets-protokoll.
- Filuppladdningar (alla protokoll).
Det är allmänt tillgängligt på enheter som använder X.509-tumavtrycksautentisering. Mer information om X.509-autentisering med IoT Hub finns i X.509-certifikat som stöds.
Portnummer
Enheter kan kommunicera med IoT Hub Azure med hjälp av olika protokoll. Vanligtvis styrs valet av protokoll av de specifika kraven i lösningen. I följande tabell visas de utgående portar som måste vara öppna för att en enhet ska kunna använda ett visst protokoll:
| Protokoll | Port |
|---|---|
| MQTT | 8883 |
| MQTT över WebSockets | 443 |
| AMQP | 5671 |
| AMQP över WebSockets | 443 |
| HTTPS | 443 |
När du har skapat en IoT-hubb i en Azure-region behåller IoT-hubben samma IP-adress under IoT-hubbens livslängd. Men om Microsoft flyttar IoT-hubben till en annan skalningsenhet för att upprätthålla tjänstkvaliteten tilldelas den en ny IP-adress.
Nästa steg
Mer information om hur IoT Hub implementerar MQTT-protokollet finns i Kommunicera med din IoT-hubb med hjälp av MQTT-protokollet.