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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Bernie
September 27, 2012
Technology
5.2k
1
Share
MQTT 通訊協定
Lightweight Communication Protocol Based on Application Layer of OSI Model
Bernie
September 27, 2012
Other Decks in Technology
See All in Technology
Databricks Academic Series 〜 大規模言語モデル / エージェント編 〜 / academic-series-llm
databricksjapan
0
110
AI時代に、 データアナリストがデータエンジニアに異動して
jackojacko_
0
170
Oracle Cloud Infrastructure:2026年4月度サービス・アップデート
oracle4engineer
PRO
0
360
GitHub Copilot CLI と VS Code Agent Mode の使い分け
tomokusaba
0
140
試作とデモンストレーション / Prototyping and Demonstrations
ks91
PRO
0
190
アクセシビリティはすべての人のもの
tomokusaba
0
280
20260513_生成AIを専属DSに_AI分析結果の検品テクニック_ハンズオン_交通事故データ
doradora09
PRO
0
210
コミュニティ・勉強会を作るのは目的じゃない
ohmori_yusuke
0
290
会社説明資料|株式会社ギークプラス ソフトウェア事業部
geekplus_tech
0
190
毎日の作業を Claude Code 経由にしたら、 ノウハウがコードになった
kossykinto
1
1k
AIエージェントの支払い基盤 AgentCore Payments概要
kmiya84377
1
130
[Oracle TechNight#99] 生成AI時代のAI/ML入門 ~ AIとオラクルデータベースの関係 (後半)
oracle4engineer
PRO
3
240
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
820
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
270
Git: the NoSQL Database
bkeepers
PRO
432
67k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Claude Code のすすめ
schroneko
67
220k
Designing for Performance
lara
611
70k
Mobile First: as difficult as doing things right
swwweet
225
10k
The Language of Interfaces
destraynor
162
26k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
190
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
200
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
380
The browser strikes back
jonoalderson
0
1k
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)