Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
MQTT 通訊協定
Search
Bernie
September 27, 2012
Technology
5.3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
MQTT 通訊協定
Lightweight Communication Protocol Based on Application Layer of OSI Model
Bernie
September 27, 2012
Other Decks in Technology
See All in Technology
「守り」で活用するオンデバイスLLM 〜写ってはいけないを総力戦で防ぐ〜 / iOSDC Japan 2026
nakamuuu
0
160
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
23
16k
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
730
LLMに渡さなかった仕事
nanaism
0
230
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
180
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
130
空間オーディオで過去の 自分(ゴースト)と競うランニング 〜HealthKitのルートを足音に変える実装〜
nao_randd
0
220
range over func 2年間の軌跡 Issue #56413 はGoのエコシステムをどう変えたか
ryujicre8ive
0
190
[2026-09-11]SREは誰のもの?運用エンジニアが始める 「SRE領域への越境」とチームの進化の軌跡 〜Road to NEXT CRE
tosite
0
270
30座EKS, 180次升級淬煉的EKS Upgrade Skill 的歷程
eric8230
0
170
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.2k
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
150
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
304
22k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
30 Presentation Tips
portentint
PRO
1
400
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Designing for Performance
lara
611
70k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
480
The agentic SEO stack - context over prompts
schlessera
0
940
Fireside Chat
paigeccino
43
4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
800
Visualization
eitanlees
152
17k
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)