MQTT通信知識

MQTT

MQTT是一個客戶端服務端架構的輕量級發佈/訂閱模式的消息傳輸協議。提供有序,可靠的,雙向字節流傳輸。

IBM開發的即時通訊協議;

客戶端

發佈應用消息給其它相關的客戶端

訂閱以請求接受相關的應用消息

取消訂閱以移除接受應用消息的請求。

從服務端斷開連接

服務端(服務端不是數據的終點,它只是數據的中轉站

接受來自客戶端的網絡連接。

接受客戶端發佈的應用消息。

處理客戶端的訂閱和取消訂閱請求。

轉發應用消息給符合條件的已訂閱客戶端。

MQTT的協議角色

發佈者(客戶端)   //消息發佈者可以同時是訂閱者

代理器(服務器)

訂閱者(客戶端)

MQTT的協議消息(負載payload)

MQTT中的消息可理解爲發佈者和訂閱者交換的內容(負載),這些消息包含具體的內容,可以被訂閱者使用

MQTT協議主題

MQTT中的主題可理解爲相同類型或相似類型的消息集合

MQTT構建底層網絡傳輸

它將建立客戶端到服務器的連接,提供兩者之間的一個有序的、無損的、基於字節流的雙向傳輸。

當應用數據通過MQTT網絡發送時,MQTT會把與之相關的服務質量(QoS)和主題名(Topic)相關連。

MQTT協議中的訂閱,主題,會話

一、訂閱(Subscription)

訂閱包含主題篩選器(Topic Filter)和最大服務質量(QoS)。訂閱會與一個會話(Session)關聯。一個會話可以包含多個訂閱。每一個會話中的每個訂閱都有一個不同的主題篩選器。

二、會話(Session)

每個客戶端與服務器建立連接後就是一個會話,客戶端和服務器之間有狀態交互。會話存在於一個網絡之間,也可能在客戶端和服務器之間跨越多個連續的網絡連接。

三、主題名(Topic Name)

連接到一個應用程序消息的標籤,該標籤與服務器的訂閱相匹配。服務器會將消息發送給訂閱所匹配標籤的每個客戶端。

四、主題篩選器(Topic Filter)

一個對主題名通配符篩選器,在訂閱表達式中使用,表示訂閱所匹配到的多個主題。

五、負載(Payload)

消息訂閱者所具體接收的內容

MQTT協議數據包結構

在MQTT協議中,一個MQTT數據包由:固定頭(Fixed header)、可變頭(Variable header)、消息體(payload)三部分構成。MQTT數據包結構如下:

  • (1)固定頭(Fixed header)。存在於所有MQTT數據包中,表示數據包類型及數據包的分組類標識。
  • (2)可變頭(Variable header)。存在於部分MQTT數據包中,數據包類型決定了可變頭是否存在及其具體內容。
  • (3)消息體(Payload)。存在於部分MQTT數據包中,表示客戶端收到的具體內容。

    MQTT協議中的方法

  • MQTT協議中定義了一些方法(也被稱爲動作),來於表示對確定資源所進行操作。這個資源可以代表預先存在的數據或動態生成數據,這取決於服務器的實現。通常來說,資源指服務器上的文件或輸出。主要方法有:

  • (1)Connect。等待與服務器建立連接。
  • (2)Disconnect。等待MQTT客戶端完成所做的工作,並與服務器斷開TCP/IP會話。
  • (3)Subscribe。等待完成訂閱。
  • (4)UnSubscribe。等待服務器取消客戶端的一個或多個topics訂閱。
  • (5)Publish。MQTT客戶端發送消息請求,發送完成後返回應用程序線程。
  • QoS:發佈消息的服務質量,即:保證消息傳遞的次數

  • Ø00:最多一次,即:<=1
    
    Ø01:至少一次,即:>=1
    
    Ø10:一次,即:=1
    
    Ø11:預留

    MQTT中控制報文中的文本字段編碼爲UTF-8格式字符串

    所有的UTF-8編碼字符串的長度都必須在0到65535字節這個範圍內

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章