リファレンス - 通信プロトコルの選択Reference - choose a communication protocol

IoT Hub によって、デバイスはデバイス側の通信に次のプロトコルを使うことができるようになります。IoT Hub allows devices to use the following protocols for device-side communications:

  • MQTTMQTT
  • WebSocket 経由の MQTTMQTT over WebSockets
  • AMQPAMQP
  • AMQP over WebSocketAMQP over WebSockets
  • HTTPSHTTPS

これらのプロトコルがサポートしている具体的な IoT Hub 機能については、「device-to-cloud 通信に関するガイダンス」と「cloud-to-device 通信に関するガイダンス」をご覧ください。For information about how these protocols support specific IoT Hub features, see Device-to-cloud communications guidance and Cloud-to-device communications guidance.

プロトコル選択に関する高度な推奨事項には次のようなものがあります。The following table provides the high-level recommendations for your choice of protocol:

ProtocolProtocol そのプロトコルを選択しなければならない場合When you should choose this protocol
MQTTMQTT
WebSocket 経由の MQTTMQTT over WebSocket
同じ TLS 接続で (それぞれがデバイス独自の資格情報を有する) 複数のデバイスに接続する必要がないすべてのデバイスで使用します。Use on all devices that do not require to connect multiple devices (each with its own per-device credentials) over the same TLS connection.
AMQPAMQP
WebSocket 経由の AMQPAMQP over WebSocket
デバイスを多重化する接続を活用するために、フィールド ゲートウェイとクラウド ゲートウェイで使用します。Use on field and cloud gateways to take advantage of connection multiplexing across devices.
HTTPSHTTPS その他のプロトコルをサポートできないデバイスに使用します。Use for devices that cannot support other protocols.

デバイス側の通信用プロトコルを選択する場合、次の点を考慮してください。Consider the following points when you choose your protocol for device-side communications:

  • C2D のパターンCloud-to-device pattern. HTTPS には、サーバー プッシュを実装する効率的な方法がありません。HTTPS does not have an efficient way to implement server push. そのため、HTTPS を使うと、デバイスは IoT Hub に対して C2D メッセージのポーリングを行います。As such, when you are using HTTPS, devices poll IoT Hub for cloud-to-device messages. この方法は、デバイスと IoT Hub の両方で非効率的です。This approach is inefficient for both the device and IoT Hub. 現在の HTTPS ガイドラインでは、各デバイスによるメッセージのポーリングの間隔は 25 分以上となっています。Under current HTTPS guidelines, each device should poll for messages every 25 minutes or more. MQTT と AMQP では、C2D メッセージを受信する場合のサーバー プッシュがサポートされています。MQTT and AMQP support server push when receiving cloud-to-device messages. IoT Hub からデバイスへのメッセージも即座にプッシュできます。They enable immediate pushes of messages from IoT Hub to the device. 配信の待機時間が問題となる場合は、MQTT または AMQP が使用に最適なプロトコルです。If delivery latency is a concern, MQTT or AMQP are the best protocols to use. 頻繁に接続されないデバイスの場合は、HTTPS でも対応できます。For rarely connected devices, HTTPS works as well.

  • フィールド ゲートウェイField gateways. MQTT と HTTPS を使う場合は、同じ TLS 接続で (それぞれがデバイス独自の資格情報を有する) 複数のデバイスに接続することはできません。When using MQTT and HTTPS, you cannot connect multiple devices (each with its own per-device credentials) using the same TLS connection. フィールド ゲートウェイ シナリオの場合、接続するデバイスごとにフィールド ゲートウェイと IoT Hub の間に TLS 接続が 1 つ必要となるため、次善のプロトコルになります。For Field gateway scenarios that require one TLS connection between the field gateway and IoT Hub for each connected device, these protocols are suboptimal.

  • リソースの少ないデバイスLow resource devices. MQTT および HTTPS ライブラリのフットプリントは、AMQP ライブラリの場合より小さくなります。The MQTT and HTTPS libraries have a smaller footprint than the AMQP libraries. そのため、リソースが限られたデバイス (RAM が 1 MB 未満など) の場合、MQTT と HTTP/1 が実装可能な唯一のプロトコルとなります。As such, if the device has limited resources (for example, less than 1-MB RAM), these protocols might be the only protocol implementation available.

  • ネットワーク トラバーサルNetwork traversal. 標準の AMQP プロトコルはポート 5671 を使用し、MQTT はポート 8883 をリッスンします。The standard AMQP protocol uses port 5671, and MQTT listens on port 8883. これらのポートを使うと、ネットワークが HTTPS 以外のプロトコルに限定されている場合、問題が発生する可能性があります。USe of these ports could cause problems in networks that are closed to non-HTTPS protocols. このようなシナリオの場合は、MQTT over WebSockets、AMQP over WebSockets、または HTTPS を使ってください。Use MQTT over WebSockets, AMQP over WebSockets, or HTTPS in this scenario.

  • ペイロードのサイズPayload size. MQTT と AMQP はバイナリ プロトコルであり、HTTPS よりもペイロードが小さくなります。MQTT and AMQP are binary protocols, which result in more compact payloads than HTTPS.

警告

HTTPS を使う場合、各デバイスでは 25 分以上の間隔で C2D メッセージをポーリングする必要があります。When using HTTPS, each device should poll for cloud-to-device messages every 25 minutes or more. ただし、開発段階では、ポーリングの頻度を 25 分より短く設定することができます。However, during development, it is acceptable to poll more frequently than every 25 minutes.

ポート番号Port numbers

デバイスは、さまざまなプロトコルを使用して Azure の IoT Hub と通信できます。Devices can communicate with IoT Hub in Azure using various protocols. 通常、プロトコルの選択は、ソリューションの特定の要件によって左右されます。Typically, the choice of protocol is driven by the specific requirements of the solution. 次の表に、デバイスが特定のプロトコルを使用できるようにするために開く必要がある送信ポートを示します。The following table lists the outbound ports that must be open for a device to be able to use a specific protocol:

ProtocolProtocol ポートPort
MQTTMQTT 88838883
WebSocket 経由の MQTTMQTT over WebSockets 443443
AMQPAMQP 56715671
AMQP over WebSocketAMQP over WebSockets 443443
HTTPSHTTPS 443443

Azure リージョンに IoT Hub を作成すると、その IoT Hub は IoT Hub の存続期間中同じ IP アドレスを保持します。Once you have created an IoT hub in an Azure region, the IoT hub keeps the same IP address for the lifetime of that IoT hub. ただし、サービス品質を維持するため、Microsoft によって IoT Hub が別のスケール ユニットに移動されると、新しい IP アドレスが割り当てられます。However, if Microsoft moves the IoT hub to a different scale unit to maintain quality of service, then it is assigned a new IP address.

次の手順Next steps

IoT Hub による MQTT プロトコルの実装方法の詳細については、「MQTT プロトコルを使用した IoT Hub との通信」をご覧くださいTo learn more about how IoT Hub implements the MQTT protocol, see Communicate with your IoT hub using the MQTT protocol.