Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MQTT 通訊協定
Search
Bernie
September 27, 2012
Technology
1
5.2k
MQTT 通訊協定
Lightweight Communication Protocol Based on Application Layer of OSI Model
Bernie
September 27, 2012
Tweet
Share
Other Decks in Technology
See All in Technology
形式手法特論:SMT ソルバで解く認可ポリシの静的解析 #kernelvm / Kernel VM Study Tsukuba No3
ytaka23
1
650
猫でもわかるKiro CLI(AI 駆動開発への道編)
kentapapa
0
270
TypeScript 7.0の現在地と備え方
uhyo
7
1.9k
システム標準化PMOから ガバメントクラウドCoEへ
techniczna
1
150
Laravelで学ぶOAuthとOpenID Connectの基礎と実装
kyoshidaxx
1
310
進化するBits AI SREと私と組織
nulabinc
PRO
1
260
アーキテクチャモダナイゼーションを実現する組織
satohjohn
1
1.1k
中央集権型を脱却した話 分散型をやめて、連邦型にたどり着くまで
sansantech
PRO
1
110
生成AI活用でQAエンジニアにどのような仕事が生まれるか/Support Required of QA Engineers for Generative AI
goyoki
1
310
SRE NEXT 2026 CfP レビュアーが語る聞きたくなるプロポーザルとは?
yutakawasaki0911
1
470
AlloyDB 奮闘記
hatappi
0
170
Microsoft “Adaptive Cloud” Update 2026年3月版
sdosamut
0
100
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
80
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
490
Designing for Performance
lara
611
70k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
560
Optimizing for Happiness
mojombo
378
71k
Six Lessons from altMBA
skipperchong
29
4.2k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
140
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.5k
Designing for Timeless Needs
cassininazir
0
170
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
270
Transcript
MQTT通訊協定 Lightweight Communication Protocol Based on Application Layer of OSI
Model @Bernie
二、通訊協定/基本概論 MQTT, Message Queue Telemetry Transport ◦ 中文翻譯: 訊息序列遙測傳輸技術
◦ 起源於: 西元1999年 IBM 建立 ◦ 創始人: Andy Stanford-Clark and Arlen Nipper ◦ 版權: 開放協定,免授權金 ◦ 特色: 即時傳遞的輕量協定專用於低頻寬或昂 貴連線的小裝置之間將換訊息,且具備三個服 務品質層級 ◦ 傳輸: 使用 TCP 層 ◦ 版本: 目前規格為 v3.1
二、通訊協定/協定格式 Fixed Header Variable Header Message Payload
Fixed Varable Payload 2 bytes 2~12 bytes 127 bytes
二、通訊協定/協定格式(續) Fixed Header ◦ 第一個 Byte 內容說明 Message
Type (4~7 bites) DUP: 重新發送 PUBLISH, PUBREL, SUBSCRIBE, UN SUBSCRIBE時,且QoS數值大於0,並於可變標頭部 分置入Message ID QoS: 發送PUBLISH時採用 RETAIN:發送PUBLISH時採用,在訊息尚未發送到訂 閱者之前Server會保留訊息,直到訂閱者收到後刪除 ◦ 第二個 Byte 為剩餘內容之長度
二、通訊協定/協定格式(續) Message Type
二、通訊協定/協定格式(續) Variable Header ◦ 1. Protocol name (CONNECT) ◦
2. Protocol version (CONNECT)
二、通訊協定/協定格式(續) 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是否會收到過去時間的發佈訊 息
二、通訊協定/協定格式(續) Variable Header ◦ 4. Keep Alive timer (CONNECT)
Keep Alive: 將時間區段之數值填入,使得 Server 能夠偵測 Client 的網路連線
二、通訊協定/協定格式(續) 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: 保留
二、通訊協定/協定格式(續) Variable Header ◦ 6. Topic name (PUBLISH)
最多支援到 32767 Characters ◦ 7. Message Identifiers
二、通訊協定/協定格式(續) Message Payload (CONNECT,SUBSRIBE,SUBACK) ◦ Client Identifier ◦ Will
Topic ◦ Will Message ◦ User Name ◦ Password ◦ Others (放置額外的資料數值)
二、通訊協定/協定格式(續) 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 確保傳輸過程
二、通訊協定/封包種類 建立/取消連線 ◦ CONNECT ◦ CONNACK ◦ DISCONNECT ◦
PINGREQ ◦ PINGRESP 發佈訊息 PUBLISH PUBACK PUBREC PUBREL PUBCOMP (取消)訂閱訊息 SUBSCRIBE SUBACK UNSUBSCRIBE UNSUBACK
二、通訊協定/通訊流程範例 建立連線 ◦ Client 主動連線,Server 接受連線 發佈訊息 ◦
Client (Publisher)發佈 QoS=0 之訊息到 Server 主動訂閱 ◦ Client (Subscriber) 訂閱 Server 所提供的主 題
二、通訊協定/通訊流程範例(續) 建立連線: 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
二、通訊協定/通訊流程範例(續) 建立連線: Client 主動連線,Server 接受 連線 Client Server Seq=1,
Ack=1 CONNECT CONNACK Seq=1, Ack=26 Seq=26, Ack=5
二、通訊協定/通訊流程範例(續) 發佈訊息: Client (Publisher)發佈 QoS=0 之訊息到 Server Client Server
Seq=1, Ack=1 PUBLISH Seq=29, Ack=1 Client PUBLISH PUBLISH Seq=1, Ack=32
二、通訊協定/通訊流程範例(續) 主動訂閱 ◦ Client (Subscriber) 訂閱 Server 所提供的主 題
Client Server SUBSCRIBE Seq=1, Ack=18 SUBACK Seq=1, Ack=1 82 > 1010(Message Type: SUBSCRIBE) 0010(QoS Level: 1)
補充說明
封包資料格式-剩餘長度 Fixed Header ◦ 第二個 Bytes (以上) 內容說明
至少 1 Bytes 存放 Variable Header 以及 Payload 長度 Fixed Varable Payload 5 bytes 2~12 bytes 256 MB
封包資料格式-剩餘長度(續) Remaining Length ◦ 每一組 Byte 中的排列方式 0~7
bits 為保存壓縮內容 8 bit 為 continuation bit ◦ 增加的 Byte 算在 Fixed Header 中,不影響 Variable Header 之長度 ◦ Payload 最大可到 256 MB (268435455 Bytes)