MQTT控制報文(連線)

2021-08-24 20:26:04 字數 1998 閱讀 7320

1.connect – 連線服務端

1.1 可變報文 (協議名 + 協議級別 + 連線標誌 + 保持連線)

1.1.1 協議名(內容固定,標識是mqtt協議 。 前2個位元組表示長度,後4個位元組ascii碼的mqtt)

1.1.2 協議級別(8位的無符號值表示協議的修訂版本,對於3.1.1版協議,協議級別欄位的值是4(0x04))

1.1.3連線標誌

注:第0位一定是0

clean session:客戶端和服務端可以儲存會話狀態,以支援跨網路連線的可靠訊息傳輸

0:(false)快取住連線斷開時的所有qos 1 和qos 2級別的訊息

1:(true) 重連時不會收到舊訊息

will flag:遺囑標誌

1:遺囑訊息會儲存在伺服器,網路連線關閉時伺服器發布這個遺囑訊息,除非收到主動傳送的disconnect報文,會刪除這個遺囑。主要目的 就是非主動斷開連線(網路斷開等)時的處理

will qos:遺囑訊息 服務質量等級(0  1  2  )

will retain:遺囑標誌是1時才有效,將遺囑訊息當作 非保留訊息/保留訊息 發布

password flag:使用者名稱標誌是0,則密碼也必須是0;1 有密碼

user name flag:1 有使用者名稱

1.1.4 保持連線 keep alive(心跳包)

在keepalive時間內(單位秒)傳送pingreq報文,使用返回的pingresp報文判斷網路和服務端的活動狀態

1.2 有效載荷 payload

組成:客戶端識別符號,遺囑主題,遺囑訊息,使用者名稱,密碼 

1.2.1 客戶端識別符號clientid(utf-8編碼字串)

只能是數字和字母

1.2.2 will topic

1.2.3 will message  2個位元組的遺囑長度+遺囑訊息

1.2.4 user name 服務端可以將它用於身份驗證和授權

1.2.5 password  2個位元組的資料長度+資料

2.connack – 確認連線請求

2.1 固定報頭

2.2 可變報頭(2個位元組)

第乙個位元組:連線確認標誌

第1-7位:保留,都設定位0 

第0位:(session present)connect的cleansession是1就設定成0;cleansession是0,如果服務端已經儲存了會話狀態則是1,否則是0

服務端的連線返回碼不是0,session present必須是0;

第二個位元組:連線返回碼

ICMP控制報文協議

icmp經常被認為是ip層的乙個組成部分。它傳遞差錯以及其他需要注意的資訊。icmp報文通常被ip層或更高層 協議 tcp或udp 使用。一些icmp報文把差錯報文返回給 使用者程序。icmp報文是在ip資料報內部被傳輸的,它封 裝在ip資料報內。icmp報文的格式如圖所示。所有報文的前4個位元組都...

MQTT協議(一) 協議介紹與控制報文格式

mqtt協議可以理解為乙個類似於kakfa或者rocketmq這種中介軟體的形式。它主要功能就是可以實現發布和訂閱。不同的客戶端去跟客戶端連線,然後就可以訂閱一些主題 topic 有些客戶端如果發布了這些主題,這些訂閱的都能收到。實用場景舉例 比如乙個樓中的人都想在手機上每天收到自己樓內的溫度,樓內...

網路控制報文協議(ICMP)

ping也屬於乙個通訊協議,是tcp ip協議的一部分。利用 ping 命令可以檢查網路是否連通,可以很好地幫助我們分析和判定網路故障。應用格式 ping空格ip位址。tracert 跟蹤路由 是路由跟蹤實用程式,用於確定 ip資料報訪問目標所採取的路徑。tracert 命令使用用 ip 生存時間 ...