MQTT 協議 部分細節

2022-07-15 01:48:10 字數 1181 閱讀 2454

這裡不紀錄協議文件中大部分通用內容主要記錄一下自己比較困惑的細節處理機制。主要有如下幾個點:

連線時的具體細節行為?

client 在連線到broker時同時指定自己的keepalivetime和 will主題(可選)和對應的具體的msg。之後broker會啟動乙個定時器,client會按keepalivetime 的時間間隔給broker傳送pingreq訊息從而告訴broker自己是ok的,然後broker就會回應客戶端並復位定時器。如果client超過1.5個keepalivetime 時間未向broker傳送pingreg,則broker就認為client出問題了就會替client發布連線時預設的will主題訊息(如果連線時設定了)以通知感興趣這個資訊的client,所以will主題也叫「遺囑主題」。

client連線到broker的時候可以指定是否清除會話 標誌,如果未設定clean session 則broker需要恢復上一次記錄的會話包括訂閱的主題和will資訊。

訊息發布過程的retain標誌的作用?

告訴伺服器是否儲存我的這次發布的topic msg 。等再有新的訂閱時就直接通知新訂閱的client這個topic msg的最近一次msg。

發布和訂閱都可以指定qos等級,那麼broker應該如何處理這個問題呢?

以最初主題發布者的qos等級為基準,比如最初發布者為0則其他訂閱者的qos等級會被降級,也就是說訂閱者

的qos等級是在說訂閱者接受的最高qos。所以最後就是如下的組合:

行為發布者,列為訂閱者,組合後的結果為訂閱者最終的qos。

qos012

00

0

0

1011

2012

所以最後的組合其實就是只有如下幾種情況,至少mosquitto是這樣實現的。

pub   pub(0)   pub(1)   pub(1)   pub(2)   pub(2)   pub(2)

sub   sub(0)   sub(0)   sub(1)   sub(0)   sub(1)   sub(2)

=    0     0    1     0     1      2

MQTT協議 MQTT協議簡介

mqtt messagequeuing telemetry transport,訊息佇列遙測傳輸 是ibm開發的乙個即時通訊協議。mqtt是面向m2m和物聯網的連線協議,採用輕量級發布和訂閱訊息傳輸機制。它的設計思想是輕巧 開放 簡單 規範,因此易於實現。這些特點使得它對很多場景來說都是很好的選擇,...

MQTT協議 MQTT協議解析

協議就是通訊雙方的乙個約定,即,表示第1位傳輸的什麼 第2位傳輸的什麼 在mqtt協議中,乙個mqtt資料報由 固定頭 fixed header 可變頭 variable header 訊息體 payload 三部分構成。mqtt 資料報結構 固定頭存在於所有mqtt資料報中,其結構如下 bit76...

MQTT協議 MQTT協議簡介及協議原理

mqtt message queuing telemetry transport,訊息佇列遙測傳輸協議 是一種基於發布 訂閱 publish subscribe 模式的 輕量級 通訊協議,該協議構建於tcp ip協議上,由ibm在1999年發布。mqtt最大優點在於,可以以極少的 和有限的頻寬,為連...