MQTT入門チュートリアル()

MQTTを紹介しましょう

ブリーフ

MQTT(メッセージキューテレメトリ交通、メッセージキューテレメトリー転送プロトコル)は、ベースに1999年にIBMによる「軽量」通信プロトコル(パブリッシュ/サブスクライブ)モードでは、TCP / IPプロトコル上に構築された契約を、パブリッシュ/サブスクライブリリースに。MQTT最大の利点は、リアルタイムのリモートデバイスは、信頼性の高いメッセージングサービスを提供するためのコードが最小と限られた帯域幅であってもよいことです。これより広くものであり使用されているインスタントメッセージングプロトコル、小型機器、モバイルアプリケーションの低コスト、低帯域幅の使用など。

サーバーメッセージパブリッシュ/サブスクライブトランスポートプロトコル - MQTTは、クライアントに基づいています。MQTT契約は、軽量でシンプル、オープンかつ容易に実装でき、これらの機能は、非常に広い範囲に適するよう。マシン(M2M)通信及び観光情報(IOT)のインターネットへの機械:のような制約のある環境を含む多くの場合、です。衛星リンクセンサ、時折ダイヤルアップ医療機器、情報家電、および小型のデバイスのいくつかによって通信が広く用いられています。

 

 

第二に、設計仕様

そのため、物事の非常に特殊な環境なので、MQTTは、設計原理を以下:

  • (1)非必須機能の追加なしに、合理。
  • (2)センサ間のメッセージング容易にするために、(パブ/サブ)モードをパブリッシュ/サブスクライブ。
  • (3)ユーザーが動的テーマ、ゼロ運用および保守のコストを作成することを可能にします。
  • (4)伝送効率を向上させるために最小限の量を転送します。
  • (5)アカウントに低帯域幅、高遅延、不安定なネットワークおよびその他の要因。
  • (6)は、連続セッション制御をサポートします。
  • クライアント・コンピューティングを理解する(7)能力が低くてもよいです。
  • (8)は、サービス管理の質を提供します。
  • (9)の柔軟性を維持し、データ転送のタイプおよびフォーマットを強制する、依存しないデータではないと仮定。

第三に、主な特徴

リモートセンサと制御装置の低帯域幅で動作MQTT通信プロトコルは、次のいくつかの主要な特性を有する信頼性の低いネットワークプロトコル設計、:

  • (1)多くのメッセージ配信を提供し、パブリッシュ/サブスクライブ・メッセージングモデルを使用して、アプリケーションを切り離します。

    XMPPは、転送テキストデータにXML形式を使用していますので、これは,, XMPPよりもはるかに小さいXMPPに似ていますが、情報の冗長性MQTT。

  • (2)メッセージ送信マスクの内容をロードします。

  • (3)TCP / IPを使用してネットワーク接続を提供します。

    主流のMQTTは、データプッシュのためのTCPコネクションに基づいて、だけでなく、MQTT-SNと呼ばれるUDPベースのバージョンを持っています。異なる接続、当然異なる長所と短所がそれぞれに基づいて2つのバージョンがあるため。

  • (4)は、3つのサービス品質のニュースリリースであります。

    基礎となるTCP / IPネットワークに完全に依存し、ニュースリリース「せいぜい一度」。欠落や重複メッセージを発生します。すぐ後の第二の時間が送信されますので、このレベルは、以下の場合に使用することができ、環境センサデータ、読み出したレコードの損失は、問題ではありません。メッセージのプッシュ、プッシュ過去には、受信しませんでしたもう一度ネットワークを受けないとき、あなたのスマートデバイスがオフラインになっている場合、これは、APPの主要な一般的にプッシュする方法です。

    発生する可能性があり、メッセージが到達することを保証するが、メッセージが繰り返される「少なくとも一度」。

    「一度だけ」というメッセージに達するとを確保します。課金システムのより厳格な要件のいくつかでは、このレベルを使用することができます。課金システムでは、メッセージが繰り返されているか、欠落していることは、誤った結果につながります。このニュースリリースに最高品質のサービスは、ユーザーが受信し、一度だけ受信することを保証し、APPのインスタント通信をプッシュするために使用することができます。

  • (5)小さな送信オーバーヘッドは、(固定長ヘッダは2バイトである)は、ネットワークトラフィックを低減するために最小化プロトコル交換小さいです。

    それはプレゼンテーションのために非常に適している理由は、組み込み機器の消費電力と帯域幅を計算すると、このプロトコルの使用は、再度メッセージを配信するために、比較的弱いことを知っている「通信の分野では、物事のインターネット、サーバと情報収集センサー」であります十分。

  • クライアントが中止利害関係者のメカニズムを知らせるために遺言特性を利用した(6)。

    続く:通知デバイスの下で同じ被写体の最後の言葉を送信するために、他のデバイスのための遺言メカニズムである切断されています。

    新約聖書:メカニズムは続くと同様に機能します。

四、MQTT原則合意

4.1 MQTTプロトコルの実装

MQTTは、合意を達成するため、クライアントとサーバーの通信が完了する必要があり、通信プロセスでは、3つのプロトコルMQTTのアイデンティティがあります。パブリッシャー(パブリッシュ)、エージェント(ブローカー)(サーバー)、加入者(購読)。その中でも、ニュースのパブリッシャとサブスクライバは、クライアントは、メッセージプロキシサーバは、ニュースリリースを同時に加入することがあります。

二つの部分のトピック(トピック)と負荷(ペイロード):MQTTメッセージに送信しました:

  • (1)トピックは、加入者のサブスクリプション(購読)した後、あなたがそのトピック(ペイロード)メッセージコンテンツを受信し、メッセージの種類として理解することができます。
  • (2)ペイロードは、メッセージの内容として理解することができ、コンテンツは、加入者が使用したい特定のことをいいます。

4.2アプリケーション・メッセージのネットワーク送信及び

MQTTは、基盤となるネットワークトランスポートを構築します。それは、クライアントからサーバーへの接続、整然としたその間を提供し、ロスレス、双方向の伝送ベースのバイトストリームを確立します。

アプリケーションデータがネットワークMQTTを介して送信される場合は、MQTTは、サービス品質(QoS)とトピック名(トピック)にも関連すると関連付けられます。

4.3 MQTTクライアント

使用用途やデバイスMQTT契約、それはサーバーへのネットワーク接続を確立することは常にあります。クライアントは、次のことができます。

  • (1)が加入することができる他のクライアントに関する情報を公開します。
  • (2)他のクライアントのニュースリリースを購読。
  • 解除または削除アプリケーションへのメッセージ(3)。
  • (4)サーバから切断されています。

4.4 MQTTサーバー

「メッセージ剤」(ブローカー)と呼ばれるMQTTサーバーは、アプリケーションまたはデバイスであってもよいです。これは、ニュースリリースと、それができるの間で加入者にあります。

  • (1)クライアントからのネットワーク接続を受信するステップと
  • 放出された情報の適用(2)顧客の検収。
  • (3)処理は、サブスクライブし、クライアントからの配信停止要求。
  • (4)加入し、顧客にアプリケーションメッセージを転送します。

、件名、会話を購読する4.5 MQTT契約

まず、サブスクリプション(購読)

フィルター(トピックフィルタ)とサービスの最大の品質(QoS)を含むトピックを購読します。サブスクリプションは、セッション(セッション)に関連付けられます。セッションでは、複数のサブスクリプションを含めることができます。各セッションは、各サブスクリプションには、別のテーマフィルタを持っています。

第二に、セッション(セッション)

接続を確立するために、各クライアントとサーバは、クライアントとサーバ間のセッション、ステートフルな相互作用です。セッションは、ネットワーク間、またはクライアントとサーバーの間に複数の連続のネットワーク接続を介して存在しています。

第三に、サブジェクト名(トピック名)

ラベル・アプリケーション・メッセージ、加入者タグマッチに結合されました。各クライアント・サーバーは、試合のタグ末尾に加入するメッセージを送信します。

第四に、対象フィルタ(トピックフィルタ)

サブジェクト名フィルタのワイルドカード、サブスクリプション式を使用するには、試合に複数のトピックを表します。

第五に、負荷(ペイロード)

特定のメッセージの加入者は、コンテンツを受信しました。

4.6 MQTTプロトコル方法

(また、アクションと呼ばれる)MQTTプロトコルの定義方法は、動作中のリソースの表現によって決定されます。このリソースデータは、サーバの実装に応じて、既存のまたは動的に生成されたデータを表すことができます。一般的に言えば、それは、サーバー上のファイルまたは出力をリソースを参照します。主な方法は以下のとおりです。

  • (1)接続。サーバーへの接続を確立するために待機しています。
  • (2)切断。MQTT作業を完了するために、クライアントのための待ち時間、およびサーバのTCP / IPセッションから切断。
  • (3)購読します。サブスクリプションを完了するために待機しています。
  • (4)登録解除。サーバーは、キャンセルするのを待っている1つまたは複数のクライアントは、トピックにサブスクライブします。
  • (5)公開します。MQTTクライアントは、要求メッセージ、送信のアプリケーションプログラムの完了までスレッド戻りを送ります。

五、MQTTプロトコルのパケット構造

固定ヘッダ(固定ヘッダ)、最初の変数(変数ヘッダ)、メッセージボディ(ペイロード)3つの部分:MQTTプロトコルでは、パケットは、MQTTからなります。次のようにMQTTパケットの構造は次のようになります。

  • (1)の固定ヘッド(固定ヘッダー)。すべてのパケットにMQTT存在は、パケットのクラス識別子は、パケットタイプ及びパケットを表します。
  • (2)可変ヘッド(可変ヘッダ)。パケットの部分でMQTT存在、パケットタイプは可変ヘッダと特定のコンテンツがあるか否かを判定する。
  • (3)メッセージ本体(ペイロード)。パケットの部分でMQTT存在は、特定のコンテンツがクライアントによって受信されました。

5.1 MQTT腺

MQTT腺は、次のような構造のすべてのパケットに存在しています:

5.1.1 MQTTパケットタイプ

位置:ビット7-4のバイト1。

次のように4ビットの符号なしの値、タイプ、および値の位相を説明しました:

5.1.2フラグ

位置:ビット3-0におけるバイト1。

メッセージタイプフラグを使用せず、フラグは予約ビットとして使用されます。無効フラグが受信された場合、ネットワーク接続オフ受信する必要があります。

(1)DUP:メッセージのコピーを配布します。メッセージの信頼性のある伝送を保証するために使用され、1に設定した場合、より長い以下のMessageIdに増加し、転送が繰り返し送信されるメッセージの検出のために完全ではなくなることを保証するために、メッセージの受信確認応答を必要とします。

(2)のQoS:すなわち、サービスのニュースリリースの品質、:というメッセージ配信の数を確保するために

O00:最も一度、すなわち<= 1。

O01:少なくとも一度、つまり: > = 1 

Ø10:一度、すなわち: = 1。

O11:予約

(3)RETAIN:アイデンティティを保つ公開、新規加入者が現れ存在する場合、それは、現在の加入者の解放を押し戻さしている場合、それにプッシュニュースを取った、サーバーが情報のプッシュを維持したいことを示しています。5.1.3残りの長さ(残りの長さ)

住所:バイト2。

第二のバイトの固定ヘッダ長メッセージヘッダとボディの合計サイズを格納する変数ではなく、直接保存します。このバイトは、最初の7ビットの長さを格納するため、一方が識別子として使用され、機構保存、延長されます。最後のビットが1である場合、それは不十分な長さを示し、2つのバイトが保存を継続使用する必要があります。たとえば、次のサイズを計算する0

5.2 MQTT変数ヘッド

MQTT可変パケットは、固定ヘッドと負荷との間に位置するヘッダを含んでいます。より頻繁にアプリケーションパケット識別子であるとして、パケットタイプによって概要可変ヘッダは、異なっています。

データパケットの多くの種類が2バイトのパケット識別フィールドを含み、パッケージのこれらのタイプがいる:PUBLISH(QoSの> 0)、PUBACK、PUBREC、PUBREL、PUBCOMP、SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK。

5.3ペイロードメッセージ本文

一部MQTT CONNECTは、SUBSCRIBE含む位置ペイロードメッセージパケット、SUBACK、UNSUBSCRIBEメッセージ4種類:

  • (1)CONNECT、メッセージ本体の主な内容:クライアントのClientIDは、トピック、メッセージ、およびユーザ名とパスワードを購読してください。
  • (2)SUBSCRIBE、メッセージ本文の内容をテーマとQoSの一連を購読することです。
  • テーマおよびQoS〜(3)SUBACK、メッセージボディコンテンツ識別するためのサーバと応答はに適用SUBSCRIBE。
  • 加入スレッド〜(4)UNSUBSCRIBE、メッセージ本文の内容。

 

おすすめ

転載: www.cnblogs.com/qingmuchuanqi48/p/12446680.html