Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MQTT 通訊協定

Avatar for Bernie Bernie
September 27, 2012

MQTT 通訊協定

Lightweight Communication Protocol Based on Application Layer of OSI Model

Avatar for Bernie

Bernie

September 27, 2012
Tweet

Other Decks in Technology

Transcript

  1. 二、通訊協定/基本概論  MQTT, Message Queue Telemetry Transport ◦ 中文翻譯: 訊息序列遙測傳輸技術

    ◦ 起源於: 西元1999年 IBM 建立 ◦ 創始人: Andy Stanford-Clark and Arlen Nipper ◦ 版權: 開放協定,免授權金 ◦ 特色: 即時傳遞的輕量協定專用於低頻寬或昂 貴連線的小裝置之間將換訊息,且具備三個服 務品質層級 ◦ 傳輸: 使用 TCP 層 ◦ 版本: 目前規格為 v3.1
  2. 二、通訊協定/協定格式(續)  Fixed Header ◦ 第一個 Byte 內容說明  Message

    Type (4~7 bites)  DUP: 重新發送 PUBLISH, PUBREL, SUBSCRIBE, UN SUBSCRIBE時,且QoS數值大於0,並於可變標頭部 分置入Message ID  QoS: 發送PUBLISH時採用  RETAIN:發送PUBLISH時採用,在訊息尚未發送到訂 閱者之前Server會保留訊息,直到訂閱者收到後刪除 ◦ 第二個 Byte 為剩餘內容之長度
  3. 二、通訊協定/協定格式(續)  Variable Header ◦ 3. Connect flags (CONNECT) 

    User Name Flag/Password Flag: 發送CONNECT訊息時, 是否需要附帶欄位資訊  Will Retain: Client意外斷開連線時,Server是否保留發佈 的Will Message  Will QoS: Client意外斷開連線時,Server將依照QoS層級 發送訊息  Will Flag: Client意外斷開連線時,Server是否發佈訊息  Clean Session: 設定Client是否會收到過去時間的發佈訊 息
  4. 二、通訊協定/協定格式(續)  Variable Header ◦ 4. Keep Alive timer (CONNECT)

     Keep Alive: 將時間區段之數值填入,使得 Server 能夠偵測 Client 的網路連線
  5. 二、通訊協定/協定格式(續)  Variable Header ◦ 5. Connect return code (CONNACK)

     Connection Accepted: 0x00  Connection Refused: unacceptable protocol version: 0x01  Connection Refused: identifier rejected: 0x02  Connection Refused: server unavailable: 0x03  Connection Refused: bad user name or password: 0x04  Connection Refused: not authorized: 0x05  Reserved for future use: 保留
  6. 二、通訊協定/協定格式(續)  Variable Header ◦ 6. Topic name (PUBLISH) 

    最多支援到 32767 Characters ◦ 7. Message Identifiers
  7. 二、通訊協定/協定格式(續)  Message Payload (CONNECT,SUBSRIBE,SUBACK) ◦ Client Identifier ◦ Will

    Topic ◦ Will Message ◦ User Name ◦ Password ◦ Others (放置額外的資料數值)
  8. 二、通訊協定/協定格式(續)  QoS, Qualities of Service ◦ QoS Lv. 0:

    至多一次傳送 (non-persistent)  沒有重複發送機制 ◦ QoS Lv. 1: 至少一次 (persistent)  Client Variable Header 帶有 Message ID  Server 利用 PUBACK 控制流程  訊息重複發送採用 DUP bit 控制 ◦ QoS Lv. 2: 剛好一次 (persistent)  Client/Server 利用 PUBREC/PUBREL 控制流程  Server 利用 PUBCOMP 確保傳輸過程
  9. 二、通訊協定/封包種類  建立/取消連線 ◦ CONNECT ◦ CONNACK ◦ DISCONNECT ◦

    PINGREQ ◦ PINGRESP  發佈訊息  PUBLISH  PUBACK  PUBREC  PUBREL  PUBCOMP  (取消)訂閱訊息  SUBSCRIBE  SUBACK  UNSUBSCRIBE  UNSUBACK
  10. 二、通訊協定/通訊流程範例  建立連線 ◦ Client 主動連線,Server 接受連線  發佈訊息 ◦

    Client (Publisher)發佈 QoS=0 之訊息到 Server  主動訂閱 ◦ Client (Subscriber) 訂閱 Server 所提供的主 題
  11. 二、通訊協定/通訊流程範例(續)  建立連線: Client 主動連線,Server 接受 連線 Client Server SYN

    Seq=0 Seq=0, Ack=1 SYN, ACK ACK Seq=1, Ack=1 Seq=1, Ack=1 PSH, ACK Seq=1, Ack=26 ACK PSH, ACK ACK Seq=1, Ack=26 Seq=26, Ack=5
  12. 二、通訊協定/通訊流程範例(續)  主動訂閱 ◦ Client (Subscriber) 訂閱 Server 所提供的主 題

    Client Server SUBSCRIBE Seq=1, Ack=18 SUBACK Seq=1, Ack=1 82 > 1010(Message Type: SUBSCRIBE) 0010(QoS Level: 1)
  13. 封包資料格式-剩餘長度  Fixed Header ◦ 第二個 Bytes (以上) 內容說明 

    至少 1 Bytes  存放 Variable Header 以及 Payload 長度 Fixed Varable Payload 5 bytes 2~12 bytes 256 MB
  14. 封包資料格式-剩餘長度(續)  Remaining Length ◦ 每一組 Byte 中的排列方式  0~7

    bits 為保存壓縮內容  8 bit 為 continuation bit ◦ 增加的 Byte 算在 Fixed Header 中,不影響 Variable Header 之長度 ◦ Payload 最大可到 256 MB (268435455 Bytes)