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