-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
convert mqtt-cn docx to markdown, fix bad format
- Loading branch information
mcxiaoke
committed
Feb 3, 2016
1 parent
7668681
commit cb54a61
Showing
24 changed files
with
2,602 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# 目录 | ||
|
||
- [前言](00-Preface.md) | ||
- [目录](00-Contents.md) | ||
- [第一章 - 介绍](01-Introcution.md) | ||
- [第二章 – MQTT控制报文格式](02-ControlPacketFormat.md) | ||
- [第三章 – MQTT控制报文](03-ControlPackets.md) | ||
- [第四章 – 操作行为](04-OperationalBehavior.md) | ||
- [第五章 – 安全](05-Security.md) | ||
- [第六章 – 使用WebSocket](06-WebSocket.md) | ||
- [第七章 – 一致性目标](07-Conformance.md) | ||
- [附录B - 强制性规范声明](08-AppendixB.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
# MQTT协议3.1.1中文版 | ||
|
||
* [OASIS标准](https://www.oasis-open.org/committees/mqtt/) 2014年10月29日 | ||
|
||
## 规范链接 | ||
|
||
### 当前版本: | ||
|
||
<http:https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.doc> (Authoritative) | ||
|
||
<http:https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html> | ||
|
||
<http:https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.pdf> | ||
|
||
### 以前的版本: | ||
|
||
<http:https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/cos01/mqtt-v3.1.1-cos01.doc> (Authoritative) | ||
|
||
<http:https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/cos01/mqtt-v3.1.1-cos01.html> | ||
|
||
<http:https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/cos01/mqtt-v3.1.1-cos01.pdf> | ||
|
||
### 最新版本: | ||
|
||
<http:https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.doc> (Authoritative) | ||
|
||
<http:https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html> | ||
|
||
<http:https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.pdf> | ||
|
||
### 技术委员会: | ||
|
||
[结构化信息标准促进组织MQTT技术委员会](https://www.oasis-open.org/committees/mqtt/) | ||
|
||
#### 主席: | ||
|
||
拉斐尔·J·科恩 (<[email protected]>), 个人 | ||
|
||
理查德·J·科彭 (<[email protected]>), [IBM](http:https://www.ibm.com/) | ||
|
||
#### 编辑: | ||
|
||
安德鲁·班克斯 (<[email protected]>), [IBM](http:https://www.ibm.com/) | ||
|
||
拉胡尔·吉普塔 (<[email protected]>), [IBM](http:https://www.ibm.com/) | ||
|
||
### 相关文档: | ||
|
||
#### 本规范与此有关: | ||
|
||
- MQTT和NIST网络安全框架1.0版。 编辑是杰夫·布朗和路易·菲利普·拉穆勒。最新版本: <http:https://docs.oasis-open.org/mqtt/mqtt-nist-cybersecurity/v1.0/mqtt-nist-cybersecurity-v1.0.html>. | ||
|
||
#### 摘要 | ||
|
||
MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,因此易于实现。这些特点使得它对很多场景来说都是很好的选择,包括受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT),这些场景要求很小的代码封装或者网络带宽非常昂贵。 | ||
|
||
本协议运行在TCP/IP,或其它提供了有序、可靠、双向连接的网络连接上。它有以下特点: | ||
|
||
- 使用发布/订阅消息模式,提供了一对多的消息分发和应用之间的解耦。 | ||
- 消息传输不需要知道负载内容。 | ||
- 提供三种等级的服务质量:. | ||
|
||
- “最多一次”,尽操作环境所能提供的最大努力分发消息。消息可能会丢失。例如,这个等级可用于环境传感器数据,单次的数据丢失没关系,因为不久之后会再次发送。 | ||
- “至少一次”,保证消息可以到达,但是可能会重复。 | ||
- “仅一次”,保证消息只到达一次。例如,这个等级可用在一个计费系统中,这里如果消息重复或丢失会导致不正确的收费。 | ||
- 很小的传输消耗和协议数据交换,最大限度减少网络流量 | ||
- 异常连接断开发生时,能通知到相关各方。 | ||
|
||
### 状态 | ||
|
||
本文档最后由OASIS成员在上面标示的日期最终修订或批准。批准的级别也在上面列出了。如果要查看本文档最新的修订版请检查上面的 *最新版本* 位置。技术委员会产生的其它修订版和其它技术文档都列在这里:<https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=mqtt#technical> 。 | ||
|
||
技术委员会成员对本规范的评论应该发送到技术委员会的邮件列表。其他人应该发送评论到技术委员会的公共评论列表,方法是点击技术委员会网站的 [发送评论](https://www.oasis-open.org/committees/comments/index.php?wg_abbrev=mqtt) 按钮,网页地址是 <https://www.oasis-open.org/committees/mqtt/> 。 | ||
|
||
关于实现本规范必不可少的任何专利是否已公开,以及其它的专利许可条款相关的信息,请参考技术委员会网站的知识产权部分((<https://www.oasis-open.org/committees/mqtt/ipr.php>)。 | ||
|
||
### 引用格式: | ||
|
||
引用此规范时应该使用下面的引文格式: | ||
|
||
**\[mqtt-v3.1.1\]** | ||
|
||
*MQTT Version 3.1.1*. Edited by Andrew Banks and Rahul Gupta*.* 29 October 2014. OASIS Standard. <http:https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html>. Latest version: <http:https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html>. | ||
|
||
### 文档链接 | ||
|
||
- [MQTT协议3.1.1中文翻译项目](https://github.com/mcxiaoke/mqtt) | ||
|
||
- [MQTT协议3.1.1中文版PDF](https://github.com/mcxiaoke/mqtt/blob/master/protocol/MQTT-3.1.1-CN.pdf) | ||
|
||
### 修订记录 | ||
|
||
| **版 本** | **日 期** | **发布说明** | | ||
|-----------|------------|------------------------------------------| | ||
| 1.0.0 | 2015-07-30 | 翻译全部文本,完成初步审校,公开发布第一版 | | ||
| 1.0.1 | 2015-10-22 | 修订几处笔误,增补几处未翻译的文本 | | ||
|
||
### 关于译者 | ||
|
||
- [GitHub](https://github.com/mcxiaoke) | ||
- [Blog](http:https://blog.mcxiaoke.com/) | ||
- [Email](mailto:[email protected]) | ||
|
||
## 目录 | ||
|
||
- [第一章 - 介绍](01-Introcution.md) | ||
- [第二章 – MQTT控制报文格式](02-ControlPacketFormat.md) | ||
- [第三章 – MQTT控制报文](03-ControlPackets.md) | ||
- [第四章 – 操作行为](04-OperationalBehavior.md) | ||
- [第五章 – 安全](05-Security.md) | ||
- [第六章 – 使用WebSocket](06-WebSocket.md) | ||
- [第七章 – 一致性目标](07-Conformance.md) | ||
- [附录B - 强制性规范声明](08-AppendixB.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
# 第一章 概述 | ||
|
||
## 1.1 MQTT协议的组织结构 | ||
|
||
本规范分为七个章节: | ||
|
||
- [第一章 - 介绍](01-Introcution.md) | ||
- [第二章 – MQTT控制报文格式](02-ControlPacketFormat.md) | ||
- [第三章 – MQTT控制报文](03-ControlPackets.md) | ||
- [第四章 – 操作行为](04-OperationalBehavior.md) | ||
- [第五章 – 安全](05-Security.md) | ||
- [第六章 – 使用WebSocket](06-WebSocket.md) | ||
- [第七章 – 一致性目标](07-Conformance.md) | ||
- [附录B - 强制性规范声明](08-AppendixB.md) | ||
|
||
## 1.2 术语 | ||
本规范中用到的关键字 **必须** MUST,**不能** MUST NOT,**要求** REQUIRED,**将会** SHALL,**不会** SHALL NOT,**应该** SHOULD,**不应该** SHOULD NOT,**推荐** RECOMMENDED,**可以** MAY,**可选** OPTIONAL 都是按照 IETF RFC 2119 [\[RFC2119\]](#anchor-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 数据表示 | ||
|
||
### 1.5.1 二进制位 | ||
|
||
字节中的位从0到7。第7位是最高有效位,第0位是最低有效位。 | ||
|
||
### 1.5.2 整数数值 | ||
|
||
整数数值是16位,使用大端序(big-endian,高位字节在低位字节前面)。这意味着一个16位的字在网络上表示为最高有效字节(MSB),后面跟着最低有效字节(LSB)。 | ||
|
||
### 1.5.3 UTF-8编码字符串 | ||
|
||
后面会描述的控制报文中的文本字段编码为UTF-8格式的字符串。UTF-8 \[[RFC3629](#RFC3629)\] 是一个高效的Unicode字符编码格式,为了支持基于文本的通信,它对ASCII字符的编码做了优化。 | ||
|
||
每一个字符串都有一个两字节的长度字段作为前缀,它给出这个字符串UTF-8编码的字节数,它们在[图例 1.1 UTF-8编码字符串的结构](#_Figure_1.1_Structure) 中描述。因此可以传送的UTF-8编码的字符串大小有一个限制,不能超过 65535字节。 | ||
|
||
除非另有说明,所有的UTF-8编码字符串的长度都必须在0到65535字节这个范围内。 | ||
|
||
##### 图例 1.1 UTF-8编码字符串的结构 | ||
|
||
| **二进制位** | 7-0 | | ||
|--------------|----------------------------| | ||
| byte 1 | 字符串长度的最高有效字节(MSB) | | ||
| byte 2 | 字符串长度的最低有效字节(LSB) | | ||
| byte 3 …. | 如果长度大于0,这里是UTF-8编码的字符数据。 | | ||
|
||
UTF-8编码字符串中的字符数据**必须**是按照Unicode规范 \[[Unicode](#Unicode)\] 定义的和在RFC3629 \[[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\]。 | ||
|
||
#### 非规范示例 | ||
|
||
> 例如,字符串 A𪛔 是一个拉丁字母A后面跟着一个代码点U+2A6D4(它表示一个中日韩统一表意文字扩展B中的字符),这个字符串编码如下: | ||
##### 图例 1.2 UTF-8编码字符串非规范示例 | ||
|
||
| **Bit** | **7** | **6** | **5** | **4** | **3** | **2** | **1** | **0** | | ||
|---------|-----------------------|-------|-------|-------|-------|-------|-------|-------| | ||
| byte 1 | 字符串长度 MSB (0x00) | | ||
| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | ||
| byte 2 | 字符串长度 LSB (0x05) | | ||
| | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | | ||
| byte 3 | ‘A’ (0x41) | | ||
| | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | | ||
| byte 4 | (0xF0) | | ||
| | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | | ||
| byte 5 | (0xAA) | | ||
| | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | | ||
| byte 6 | (0x9B) | | ||
| | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | | ||
| byte 7 | (0x94) | | ||
| | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | | ||
|
||
### 1.6 编辑约定 | ||
|
||
本规范用黄色高亮的文本标识一致性声明,每个一致性声明都分配了一个这种格式的引用:\[MQTT-x.x.x-y\]。 |
Oops, something went wrong.