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 生存時間 ...