來自Xiaoke的翻譯的非常好的作品,共享給大家學習,他的Github還有更多項目
MQTT是一個客戶端服務端架構的發布/訂閱模式的消息傳輸協議。它的設計思想是輕巧、開放、簡單、規范,易于實現。這些特點使得它對很多場景來說都是很好的選擇,特別是對于受限的環境如機器與機器的通信(M2M)以及物聯網環境(IoT)。
說明
MQTT英文原版協議提供了Word格式和HTML格式,我翻譯的時候用的Word文檔,之前一直提供的是Word文檔轉換的HTML和PDF供瀏覽和下載,最近花時間整理了Markdown版本,可以更方便的分章節在線瀏覽了,轉換為Markdown后部分表格的格式不太對,會逐步用圖片代替。
目錄
發現任何翻譯問題或格式問題歡迎提PR幫忙完善。
51hei.png (84.87 KB, 下載次數: 62)
下載附件
2021-3-19 16:13 上傳
說明
前言
目錄
第一章 - MQTT介紹
第二章 – MQTT控制報文格式
第三章 – MQTT控制報文
3.1 CONNECT – 連接服務端
3.2 CONNACK – 確認連接請求
3.3 PUBLISH – 發布消息
3.4 PUBACK –發布確認
3.5 PUBREC – 發布收到(QoS 2,第一步)
3.6 PUBREL – 發布釋放(QoS 2,第二步)
3.7 PUBCOMP – 發布完成(QoS 2,第三步)
3.8 SUBSCRIBE - 訂閱主題
3.9 SUBACK – 訂閱確認
3.10 UNSUBSCRIBE –取消訂閱
3.11 UNSUBACK – 取消訂閱確認
3.12 PINGREQ – 心跳請求
3.13 PINGRESP – 心跳響應
3.14 DISCONNECT –斷開連接
第四章 – 操作行為
第五章 – 安全
第六章 – 使用WebSocket
第七章 – 一致性目標
附錄B - 強制性規范聲明
Github: https://github.com/mcxiaoke
第一章 概述 Introduction
1.1 MQTT協議的組織結構 Organization of MQTT
本規范分為七個章節:
第一章 – 介紹
第二章 – MQTT控制報文格式
第三章 – MQTT控制報文
第四章 – 操作行為
第五章 – 安全
第六章 – 使用WebSocket
第七章 – 一致性目標
附錄B – 強制性規范聲明
1.2 術語 Terminology
本規范中用到的關鍵字 必須 MUST,不能 MUST NOT,要求 REQUIRED,將會 SHALL,不會 SHALL NOT,應該 SHOULD,不應該 SHOULD NOT,推薦 RECOMMENDED,可以MAY,可選 OPTIONAL 都是按照 IETF RFC 2119 [RFC2119] 中的描述解釋。
網絡連接 Network Connection
MQTT使用的底層傳輸協議基礎設施。
客戶端使用它連接服務端。
它提供有序的、可靠的、雙向字節流傳輸。
例子見4.2節。
應用消息 Application Message MQTT協議通過網絡傳輸應用數據。應用消息通過MQTT傳
輸時,它們有關聯的服務質量(QoS)和主題(Topic)。
客戶端 Client
使用MQTT的程序或設備。客戶端總是通過網絡連接到服務端。它可以
發布應用消息給其它相關的客戶端。
訂閱以請求接受相關的應用消息。
取消訂閱以移除接受應用消息的請求。
從服務端斷開連接。
服務端 Server
一個程序或設備,作為發送消息的客戶端和請求訂閱的客戶端之間的中介。服務端接受來自客戶端的網絡連接。
接受客戶端發布的應用消息。
處理客戶端的訂閱和取消訂閱請求。
轉發應用消息給符合條件的已訂閱客戶端。
訂閱 Subscription
訂閱包含一個主題過濾器(Topic Filter)和一個最大的服務質量(QoS)等級。訂閱與單個會話(Session)關聯。會話可以包含多于一個的訂閱。會話的每個訂閱都有一個不同的主題過濾器。
主題名 Topic Name
附加在應用消息上的一個標簽,服務端已知且與訂閱匹配。服務端發送應用消息的一個副本給每一個匹配的客戶端訂閱。
主題過濾器 Topic Filter
訂閱中包含的一個表達式,用于表示相關的一個或多個主題。主題過濾器可以使用通配符。
會話 Session
客戶端和服務端之間的狀態交互。一些會話持續時長與網絡連接一樣,另一些可以在客戶端和服務端的多個連續網絡連接間擴展。
控制報文 MQTT Control Packet
通過網絡連接發送的信息數據包。MQTT規范定義了十四種不同類型的控制報文,其中一個(PUBLISH報文)用于傳輸應用消息。
1.5 數據表示 Data representations
1.5.1 二進制位 Bits
字節中的位從0到7。第7位是最高有效位,第0位是最低有效位。
1.5.2 整數數值 Integer data values
整數數值是16位,使用大端序(big-endian,高位字節在低位字節前面)。這意味著一個16位
的字在網絡上表示為最高有效字節(MSB),后面跟著最低有效字節(LSB)。
1.5.3 UTF-8編碼字符串 UTF-8 encoded strings
后面會描述的控制報文中的文本字段編碼為UTF-8格式的字符串。UTF-8 [RFC3629] 是一個
高效的Unicode字符編碼格式,為了支持基于文本的通信,它對ASCII字符的編碼做了優化。
51hei.png (85.38 KB, 下載次數: 69)
下載附件
2021-3-19 16:19 上傳
UTF-8編碼字符串中的字符數據必須是按照Unicode規范 [Unicode] 定義的和在RFC3629
[RFC3629] 中重申的有效的UTF-8格式。特別需要指出的是,這些數據不能包含字符碼在U+D800和U+DFFF之間的數據。如果服務端或客戶端收到了一個包含無效UTF-8字符的控制報文,它必須關閉網絡連接 [MQTT-1.5.3-1]。
UTF-8編碼的字符串不能包含空字符U+0000。如果客戶端或服務端收到了一個包含U+0000的控制報文,它必須關閉網絡連接 [MQTT-1.5.3-2]。
數據中不應該包含下面這些Unicode代碼點的編碼。如果一個接收者(服務端或客戶端)收到了包含下列任意字符的控制報文,它可以關閉網絡連接:
U+0001和U+001F之間的控制字符
U+007F和U+009F之間的控制字符
Unicode規范定義的非字符代碼點(例如U+0FFFF)
Unicode規范定義的保留字符(例如U+0FFFF)
UTF-8編碼序列0XEF 0xBB 0xBF總是被解釋為U+FEFF(零寬度非換行空白字符),無論它出現在字符串的什么位置,報文接收者都不能跳過或者剝離它 [MQTT-1.5.3-3]。
完整的pdf格式文檔51黑下載地址:
Xiaoke作品:
MQTT協議_CN_注釋.pdf
(3.87 MB, 下載次數: 44)
2021-3-19 14:08 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|