Introduction MQTT 协议中文版 by mcxiaoke 最新版本 : v ( 修复多处表格错位问题 PRs) 文档地址 MQTT 协议中文版 PDF 和 epub 下载 中文翻译项目 概述 MQTT 是一个客户端服务端架

Size: px
Start display at page:

Download "Introduction MQTT 协议中文版 by mcxiaoke 最新版本 : v ( 修复多处表格错位问题 PRs) 文档地址 MQTT 协议中文版 PDF 和 epub 下载 中文翻译项目 概述 MQTT 是一个客户端服务端架"

Transcription

1 目錄 Introduction 第一章 - 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 - 强制性规范声明

2 Introduction MQTT 协议中文版 by mcxiaoke 最新版本 : v ( 修复多处表格错位问题 PRs) 文档地址 MQTT 协议中文版 PDF 和 epub 下载 中文翻译项目 概述 MQTT 是一个客户端服务端架构的发布 / 订阅模式的消息传输协议 它的设计思想是轻巧 开 放 简单 规范, 易于实现 这些特点使得它对很多场景来说都是很好的选择, 特别是对于 受限的环境如机器与机器的通信 (M2M) 以及物联网环境 (IoT) 说明 MQTT 英文原版协议提供了 Word 格式和 HTML 格式, 我翻译的时候用的 Word 文档, 之前一直提供的是 Word 文档转换的 HTML 和 PDF 供浏览和下载, 最近花时间整理了 Markdown 版本, 可以更方便的分章节在线浏览了, 转换为 Markdown 后部分表格的格式不太对, 会逐步用图片代替 目录 发现任何翻译问题或格式问题欢迎提 PR 帮忙完善 说明前言目录第一章 - MQTT 介绍第二章 MQTT 控制报文格式第三章 MQTT 控制报文 3.1 CONNECT 连接服务端 2

3 Introduction 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 - 强制性规范声明 旧版文档 已过期, 建议使用 GitBook 版本最新版本 : v 文档 连接 中文版 HTML 中文版 PDF MQTT 中文版 MQTT 中文版 英文版 HTML MQTT Version 英文版 PDF MQTT Version 许可协议 署名 - 非商业性使用 - 相同方式共享 4.0 国际 联系方式 3

4 Introduction Blog: Github: 开源项目 Rx 文档中文翻译 : MQTT 协议中文版 : Awesome-Kotlin: Kotlin-Koi: Next 公共组件库 : PackerNg 极速打包 : Gradle 渠道打包 : EventBus 实现 xbus: 蘑菇饭 App: 饭否客户端 : Volley 镜像 : 4

5 第一章 - MQTT 介绍 第一章概述 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 的程序或设备 客户端总是通过网络连接到服务端 它可以发布应用消息给其它相关的客户端 订阅以请求接受相关的应用消息 取消订阅以移除接受应用消息的请求 从服务端断开连接 5

6 第一章 - MQTT 介绍 服务端 Server 一个程序或设备, 作为发送消息的客户端和请求订阅的客户端之间的中介 服务端接受来自客户端的网络连接 接受客户端发布的应用消息 处理客户端的订阅和取消订阅请求 转发应用消息给符合条件的已订阅客户端 订阅 Subscription 订阅包含一个主题过滤器 (Topic Filter) 和一个最大的服务质量 (QoS) 等级 订阅与单个会话 (Session) 关联 会话可以包含多于一个的订阅 会话的每个订阅都有一个不同的主题过滤器 主题名 Topic Name 附加在应用消息上的一个标签, 服务端已知且与订阅匹配 服务端发送应用消息的一个副本给每一个匹配的客户端订阅 主题过滤器 Topic Filter 订阅中包含的一个表达式, 用于表示相关的一个或多个主题 主题过滤器可以使用通配符 会话 Session 客户端和服务端之间的状态交互 一些会话持续时长与网络连接一样, 另一些可以在客户端和服务端的多个连续网络连接间扩展 控制报文 MQTT Control Packet 通过网络连接发送的信息数据包 MQTT 规范定义了十四种不同类型的控制报文, 其中一个 (PUBLISH 报文 ) 用于传输应用消息 1.5 数据表示 Data representations 二进制位 Bits 字节中的位从 0 到 7 第 7 位是最高有效位, 第 0 位是最低有效位 整数数值 Integer data values 整数数值是 16 位, 使用大端序 (big-endian, 高位字节在低位字节前面 ) 这意味着一个 16 位 的字在网络上表示为最高有效字节 (MSB), 后面跟着最低有效字节 (LSB) UTF-8 编码字符串 UTF-8 encoded strings 后面会描述的控制报文中的文本字段编码为 UTF-8 格式的字符串 UTF-8 [RFC3629] 是一个 高效的 Unicode 字符编码格式, 为了支持基于文本的通信, 它对 ASCII 字符的编码做了优化 6

7 第一章 - MQTT 介绍 每一个字符串都有一个两字节的长度字段作为前缀, 它给出这个字符串 UTF-8 编码的字节数, 它们在图例 1.1 UTF-8 编码字符串的结构中描述 因此可以传送的 UTF-8 编码的字符串大小有一个限制, 不能超过 字节 除非另有说明, 所有的 UTF-8 编码字符串的长度都必须在 0 到 字节这个范围内 图例 1.1 UTF-8 编码字符串的结构 Structure of UTF-8 encoded strings 二进制位 7-0 byte 1 byte 2 byte 3. 字符串长度的最高有效字节 (MSB) 字符串长度的最低有效字节 (LSB) 如果长度大于 0, 这里是 UTF-8 编码的字符数据 UTF-8 编码字符串中的字符数据必须是按照 Unicode 规范 [Unicode] 定义的和在 RFC3629 [RFC3629] 中重申的有效的 UTF-8 格式 特别需要指出的是, 这些数据不能包含字符码在 U+D800 和 U+DFFF 之间的数据 如果服务端或客户端收到了一个包含无效 UTF-8 字符的控制报文, 它必须关闭网络连接 ] UTF-8 编码的字符串不能包含空字符 U+0000 如果客户端或服务端收到了一个包含 U+0000 的控制报文, 它必须关闭网络连接 ] 数据中不应该包含下面这些 Unicode 代码点的编码 如果一个接收者 ( 服务端或客户端 ) 收到了包含下列任意字符的控制报文, 它可以关闭网络连接 : U+0001 和 U+001F 之间的控制字符 U+007F 和 U+009F 之间的控制字符 Unicode 规范定义的非字符代码点 ( 例如 U+0FFFF) Unicode 规范定义的保留字符 ( 例如 U+0FFFF) UTF-8 编码序列 0XEF 0xBB 0xBF 总是被解释为 U+FEFF( 零宽度非换行空白字符 ), 无论它出现在字符串的什么位置, 报文接收者都不能跳过或者剥离它 ] 非规范示例 Non normative example 例如, 字符串 A 是一个拉丁字母 A 后面跟着一个代码点 U+2A6D4( 它表示一个中日韩统一表意文字扩展 B 中的字符 ), 这个字符串编码如下 : 图例 1.2 UTF-8 编码字符串非规范示例 UTF-8 encoded string non normative example 7

8 第一章 - MQTT 介绍 Bit byte 1 字符串长度 MSB (0x00) byte 2 字符串长度 LSB (0x05) byte 3 A (0x41) byte 4 (0xF0) byte 5 (0xAA) byte 6 (0x9B) byte 7 (0x94) 编辑约定 Editing conventions 本规范用黄色高亮的文本标识一致性声明, 每个一致性声明都分配了一个这种格式的引用 : x.x.x-y] 项目主页 MQTT 协议中文版 8

9 第二章 MQTT 控制报文格式 第二章 MQTT 控制报文格式 MQTT Control Packet format 目录 第一章 - 介绍第二章 MQTT 控制报文格式第三章 MQTT 控制报文第四章 操作行为第五章 安全第六章 使用 WebSocket 第七章 一致性目标附录 B - 强制性规范声明 2.1 MQTT 控制报文的结构 Structure of an MQTT Control Packet MQTT 协议通过交换预定义的 MQTT 控制报文来通信 这一节描述这些报文的格式 MQTT 控制报文由三部分组成, 按照图例 2.1 MQTT 控制报文的结构描述的顺序 : 图例 2.1 MQTT 控制报文的结构 Fixed header Variable header Payload 固定报头, 所有控制报文都包含 可变报头, 部分控制报文包含 有效载荷, 部分控制报文包含 2.2 固定报头 Fixed header 每个 MQTT 控制报文都包含一个固定报头 图例 固定报头的格式描述了固定报头的格 式 图例 固定报头的格式 9

10 第二章 MQTT 控制报文格式 Bit byte 1 MQTT 控制报文的类型用于指定控制报文类型的标志位 byte 2... 剩余长度 MQTT 控制报文的类型 MQTT Control Packet type 位置 : 第 1 个字节, 二进制位 7-4 表示为 4 位无符号值, 这些值的定义见表格 控制报文的类型 表格 控制报文的类型 名字 值 报文流动方向 描述 Reserved 0 禁止 保留 CONNECT 1 客户端到服务端 客户端请求连接服务端 CONNACK 2 服务端到客户端 连接报文确认 PUBLISH 3 两个方向都允许 发布消息 PUBACK 4 两个方向都允许 QoS 1 消息发布收到确认 PUBREC 5 两个方向都允许 发布收到 ( 保证交付第一步 ) PUBREL 6 两个方向都允许 发布释放 ( 保证交付第二步 ) PUBCOMP 7 两个方向都允许 QoS 2 消息发布完成 ( 保证交互第三步 ) SUBSCRIBE 8 客户端到服务端 客户端订阅请求 SUBACK 9 服务端到客户端 订阅请求报文确认 UNSUBSCRIBE 10 客户端到服务端 客户端取消订阅请求 UNSUBACK 11 服务端到客户端 取消订阅报文确认 PINGREQ 12 客户端到服务端 心跳请求 PINGRESP 13 服务端到客户端 心跳响应 DISCONNECT 14 客户端到服务端 客户端断开连接 Reserved 15 禁止 保留 标志 Flags 固定报头第 1 个字节的剩余的 4 位 [3-0] 包含每个 MQTT 控制报文类型特定的标志, 见表格 标志位 表格 2.2 中任何标记为 保留 的标志位, 都是保留给以后使用的, 必须设置为表格中列出的值 ] 如果收到非法的标志, 接收者必须关闭网络连接 有关错误处理的详细信息见 4.8 节 ] 10

11 第二章 MQTT 控制报文格式 表格 标志位 Flag Bits 控制报文 固定报头标志 Bit 3 Bit 2 Bit 1 Bit 0 CONNECT Reserved CONNACK Reserved PUBLISH Used in MQTT DUP 1 QoS 2 QoS 2 RETAIN 3 PUBACK Reserved PUBREC Reserved PUBREL Reserved PUBCOMP Reserved SUBSCRIBE Reserved SUBACK Reserved UNSUBSCRIBE Reserved UNSUBACK Reserved PINGREQ Reserved PINGRESP Reserved DISCONNECT Reserved DUP 1 = 控制报文的重复分发标志 QoS 2 = PUBLISH 报文的服务质量等级 RETAIN 3 = PUBLISH 报文的保留标志 PUBLISH 控制报文中的 DUP, QoS 和 RETAIN 标志的描述见 节 剩余长度 Remaining Length 位置 : 从第 2 个字节开始 剩余长度 (Remaining Length) 表示当前报文剩余部分的字节数, 包括可变报头和负载的数据 剩余长度不包括用于编码剩余长度字段本身的字节数 剩余长度字段使用一个变长度编码方案, 对小于 128 的值它使用单字节编码 更大的值按下面的方式处理 低 7 位有效位用于编码数据, 最高有效位用于指示是否有更多的字节 因此每个字节可以编码 128 个数值和一个延续位 (continuation bit) 剩余长度字段最大 4 个字节 11

12 第二章 MQTT 控制报文格式 非规范评注例如, 十进制数 64 会被编码为一个字节, 数值是 64, 十六进制表示为 0x40, 十进制数字 321(=65+2*128) 被编码为两个字节, 最低有效位在前 第一个字节是 =193 注意最高位为 1 表示后面至少还有一个字节 第二个字节是 2 非规范评注这允许应用发送最大 256MB(268,435,455) 大小的控制报文 这个数值在报文中的表示是 :0xFF,0xFF,0xFF,0x7F 表格 2.4 剩余长度字段的大小展示了剩余长度字段所表示的值随字节增长 表格 2.4 剩余长度字段的大小 Size of Remaining Length field 字节数 最小值 最大值 1 0 (0x00) 127 (0x7F) (0x80, 0x01) (0xFF, 0x7F) (0x80, 0x80, 0x01) (0xFF, 0xFF, 0x7F) (0x80, 0x80, 0x80, 0x01) (0xFF, 0xFF, 0xFF, 0x7F) 分别表示 ( 每个字节的低 7 位用于编码数据, 最高位是标志位 ): 1 个字节时, 从 0(0x00) 到 127(0x7f) 2 个字节时, 从 128(0x80,0x01) 到 16383(0Xff,0x7f) 3 个字节时, 从 16384(0x80,0x80,0x01) 到 (0xFF,0xFF,0x7F) 4 个字节时, 从 (0x80,0x80,0x80,0x01) 到 (0xFF,0xFF,0xFF,0x7F) 12

13 第二章 MQTT 控制报文格式 非规范评注 非负整数 X 使用变长编码方案的算法如下 : do encodedbyte = X MOD 128 X = X DIV 128 // if there are more data to encode, set the top bit of this byte if ( X > 0 ) encodedbyte = encodedbyte OR 128 endif 'output' encodedbyte while ( X > 0 ) MOD 是模运算,DIV 是整数除法,OR 是位操作或 (C 语言中分别是 %,/, ) 非规范评注 剩余长度字段的解码算法如下 : multiplier = 1 value = 0 do encodedbyte = 'next byte from stream' value += (encodedbyte AND 127) * multiplier multiplier *= 128 if (multiplier > 128*128*128) throw Error(Malformed Remaining Length) while ((encodedbyte AND 128)!= 0) AND 是位操作与 (C 语言中的 &) 这个算法终止时,value 包含的就是剩余长度的值 2.3 可变报头 Variable header 某些 MQTT 控制报文包含一个可变报头部分 它在固定报头和负载之间 可变报头的内容根据 报文类型的不同而不同 可变报头的报文标识符 (Packet Identifier) 字段存在于在多个类型 的报文里 报文标识符 Packet Identifier 图例 报文标识符字节 Packet Identifier bytes 13

14 第二章 MQTT 控制报文格式 Bit 7-0 byte 1 byte 2 报文标识符 MSB 报文标识符 LSB 很多控制报文的可变报头部分包含一个两字节的报文标识符字段 这些报文是 PUBLISH(QoS > 0 时 ), PUBACK,PUBREC,PUBREL,PUBCOMP,SUBSCRIBE, SUBACK,UNSUBSCIBE,UNSUBACK SUBSCRIBE,UNSUBSCRIBE 和 PUBLISH(QoS 大于 0) 控制报文必须包含一个非零的 16 位报文标识符 (Packet Identifier) ] 客户端每次发送一个新的这些类型的报文时都必须分配一个当前未使用的报文标识符 ] 如果一个客户端要重发这个特殊的控制报文, 在随后重发那个报文时, 它必须使用相同的标识符 当客户端处理完这个报文对应的确认后, 这个报文标识符就释放可重用 QoS 1 的 PUBLISH 对应的是 PUBACK, QoS 2 的 PUBLISH 对应的是 PUBCOMP, 与 SUBSCRIBE 或 UNSUBSCRIBE 对应的分别是 SUBACK 或 UNSUBACK ] 发送一个 QoS 0 的 PUBLISH 报文时, 相同的条件也适用于服务端 ] QoS 等于 0 的 PUBLISH 报文不能包含报文标识符 ] PUBACK, PUBREC, PUBREL 报文必须包含与最初发送的 PUBLISH 报文相同的报文标识符 ] 类似地,SUBACK 和 UNSUBACK 必须包含在对应的 SUBSCRIBE 和 UNSUBSCRIBE 报文中使用的报文标识符 ] 需要报文标识符的控制报文在表格 包含报文标识符的控制报文中列出 表格 包含报文标识符的控制报文 Control Packets that contain a Packet Identifier 14

15 第二章 MQTT 控制报文格式 控制报文 报文标识符字段 CONNECT CONNACK 不需要 不需要 PUBLISH 需要 ( 如果 QoS > 0) PUBACK PUBREC PUBREL PUBCOMP SUBSCRIBE SUBACK UNSUBSCRIBE UNSUBACK PINGREQ PINGRESP DISCONNECT 需要需要需要需要需要需要需要需要不需要不需要不需要 客户端和服务端彼此独立地分配报文标识符 因此, 客户端服务端组合使用相同的报文标识符可以实现并发的消息交换 非规范评注客户端发送标识符为 0x1234 的 PUBLISH 报文, 它有可能会在收到那个报文的 PUBACK 之前, 先收到服务端发送的另一个不同的但是报文标识符也为 0x1234 的 PUBLISH 报文 Client Server PUBLISH --PUBLISH PUBACK --PUBACK Packet Identifier=0x Packet Identifier=0x1234 Packet Identifier=0x Packet Identifier=0x 有效载荷 Payload 某些 MQTT 控制报文在报文的最后部分包含一个有效载荷, 这将在第三章论述 对于 PUBLISH 来说有效载荷就是应用消息 表格 2.6 包含有效载荷的控制报文列出了需要有效 载荷的控制报文 15

16 第二章 MQTT 控制报文格式 表格 2.6 包含有效载荷的控制报文 Control Packets that contain a Payload 控制报文 有效载荷 CONNECT CONNACK PUBLISH PUBACK PUBREC PUBREL PUBCOMP SUBSCRIBE SUBACK UNSUBSCRIBE UNSUBACK PINGREQ PINGRESP DISCONNECT 需要不需要可选不需要不需要不需要不需要需要需要需要不需要不需要不需要不需要 项目主页 MQTT 协议中文版 16

17 第三章 MQTT 控制报文 第三章 MQTT 控制报文 MQTT Control Packets 目录 第一章 - 介绍第二章 MQTT 控制报文格式第三章 MQTT 控制报文第四章 操作行为第五章 安全第六章 使用 WebSocket 第七章 一致性目标附录 B - 强制性规范声明 本章目录 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 断开连接 项目主页 MQTT 协议中文版 17

18 第三章 MQTT 控制报文 18

19 3.1 CONNECT 连接服务端 3.1 CONNECT 连接服务端 客户端到服务端的网络连接建立后, 客户端发送给服务端的第一个报文必须是 CONNECT 报文 ] 在一个网络连接上, 客户端只能发送一次 CONNECT 报文 服务端必须将客户端发送的第二个 CONNECT 报文当作协议违规处理并断开客户端的连接 ] 有关错误处理的信息请查看 4.8 节 有效载荷包含一个或多个编码的字段 包括客户端的唯一标识符,Will 主题,Will 消息, 用户名和密码 除了客户端标识之外, 其它的字段都是可选的, 基于标志位来决定可变报头中是否需要包含这些字段 固定报头 Fixed header 图例 3.1 CONNECT 报文的固定报头 Bit byte 1 MQTT 报文类型 (1) Reserved 保留位 byte 2... 剩余长度 剩余长度字段 剩余长度等于可变报头的长度 (10 字节 ) 加上有效载荷的长度 编码方式见 节的说明 可变报头 Variable header CONNECT 报文的可变报头按下列次序包含四个字段 : 协议名 (Protocol Name), 协议级别 (Protocol Level), 连接标志 (Connect Flags) 和保持连接 (Keep Alive) 协议名 Protocol Name 图例 协议名字节构成 19

20 3.1 CONNECT 连接服务端 说明 协议名 byte 1 长度 MSB (0) byte 2 长度 LSB (4) byte 3 M byte 4 Q byte 5 T byte 6 T 协议名是表示协议名 MQTT 的 UTF-8 编码的字符串 MQTT 规范的后续版本不会改变这个字 符串的偏移和长度 如果协议名不正确服务端可以断开客户端的连接, 也可以按照某些其它规范继续处理 CONNECT 报文 对于后一种情况, 按照本规范, 服务端不能继续处理 CONNECT 报文 ] 非规范评注 数据包检测工具, 例如防火墙, 可以使用协议名来识别 MQTT 流量 协议级别 Protocol Level 图例 Protocol Level byte 协议级别字节构成 说明 协议级别 byte 7 Level(4) 客户端用 8 位的无符号值表示协议的修订版本 对于 版协议, 协议级别字段的值是 4(0x04) 如果发现不支持的协议级别, 服务端必须给发送一个返回码为 0x01( 不支持的协议 级别 ) 的 CONNACK 报文响应 CONNECT 报文, 然后断开客户端的连接 ] 连接标志 Connect Flags 连接标志字节包含一些用于指定 MQTT 连接行为的参数 它还指出有效载荷中的字段是否存 在 图例 连接标志位 20

21 3.1 CONNECT 连接服务端 服务端必须验证 CONNECT 控制报文的保留标志位 ( 第 0 位 ) 是否为 0, 如果不为 0 必须断开客 户端连接 ] 清理会话 Clean Session 位置 : 连接标志字节的第 1 位这个二进制位指定了会话状态的处理方式 客户端和服务端可以保存会话状态, 以支持跨网络连接的可靠消息传输 这个标志位用于控制会话状态的生存时间 如果清理会话 (CleanSession) 标志被设置为 0, 服务端必须基于当前会话 ( 使用客户端标识符识别 ) 的状态恢复与客户端的通信 如果没有与这个客户端标识符关联的会话, 服务端必须创建一个新的会话 在连接断开之后, 当连接断开后, 客户端和服务端必须保存会话信息 ] 当清理会话标志为 0 的会话连接断开之后, 服务端必须将之后的 QoS 1 和 QoS 2 级别的消息保存为会话状态的一部分, 如果这些消息匹配断开连接时客户端的任何订阅 ] 服务端也可以保存满足相同条件的 QoS 0 级别的消息 如果清理会话 (CleanSession) 标志被设置为 1, 客户端和服务端必须丢弃之前的任何会话并开始一个新的会话 会话仅持续和网络连接同样长的时间 与这个会话关联的状态数据不能被任何之后的会话重用 ] 客户端的会话状态包括 : 已经发送给服务端, 但是还没有完成确认的 QoS 1 和 QoS 2 级别的消息已从服务端接收, 但是还没有完成确认的 QoS 2 级别的消息 服务端的会话状态包括 : 会话是否存在, 即使会话状态的其它部分都是空 客户端的订阅信息 已经发送给客户端, 但是还没有完成确认的 QoS 1 和 QoS 2 级别的消息 即将传输给客户端的 QoS 1 和 QoS 2 级别的消息 已从客户端接收, 但是还没有完成确认的 QoS 2 级别的消息 可选, 准备发送给客户端的 QoS 0 级别的消息 保留消息不是服务端会话状态的一部分, 会话终止时不能删除保留消息 ] 有关状态存储的限制和细节见第 4.1 节 21

22 3.1 CONNECT 连接服务端 当清理会话标志被设置为 1 时, 客户端和服务端的状态删除不需要是原子操作 非规范评注为了确保在发生故障时状态的一致性, 客户端应该使用会话状态标志 1 重复请求连接, 直到连接成功 非规范评注一般来说, 客户端连接时总是将清理会话标志设置为 0 或 1, 并且不交替使用两种值 这个选择取决于具体的应用 清理会话标志设置为 1 的客户端不会收到旧的应用消息, 而且在每次连接成功后都需要重新订阅任何相关的主题 清理会话标志设置为 0 的客户端会收到所有在它连接断开期间发布的 QoS 1 和 QoS 2 级别的消息 因此, 要确保不丢失连接断开期间的消息, 需要使用 QoS 1 或 QoS 2 级别, 同时将清理会话标志设置为 0 非规范评注清理会话标志 0 的客户端连接时, 它请求服务端在连接断开后保留它的 MQTT 会话状态 如果打算在之后的某个时间点重连到这个服务端, 客户端连接应该只使用清理会话标志 0 当客户端决定之后不再使用这个会话时, 应该将清理会话标志设置为 1 最后再连接一次, 然后断开连接 遗嘱标志 Will Flag 位置 : 连接标志的第 2 位 遗嘱标志 (Will Flag) 被设置为 1, 表示如果连接请求被接受了, 遗嘱 (Will Message) 消息必须被存储在服务端并且与这个网络连接关联 之后网络连接关闭时, 服务端必须发布这个遗嘱消息, 除非服务端收到 DISCONNECT 报文时删除了这个遗嘱消息 ] 遗嘱消息发布的条件, 包括但不限于 : 服务端检测到了一个 I/O 错误或者网络故障 客户端在保持连接 (Keep Alive) 的时间内未能通讯 客户端没有先发送 DISCONNECT 报文直接关闭了网络连接 由于协议错误服务端关闭了网络连接 如果遗嘱标志被设置为 1, 连接标志中的 Will QoS 和 Will Retain 字段会被服务端用到, 同时有效载荷中必须包含 Will Topic 和 Will Message 字段 ] 一旦被发布或者服务端收到了客户端发送的 DISCONNECT 报文, 遗嘱消息就必须从存储的会话状态中移除 ] 如果遗嘱标志被设置为 0, 连接标志中的 Will QoS 和 Will Retain 字段必须设置为 0, 并且有效载荷中不能包含 Will Topic 和 Will Message 字段 ] 如果遗嘱标志被设置为 0, 网络连接断开时, 不能发送遗嘱消息 ] 22

23 3.1 CONNECT 连接服务端 服务端应该迅速发布遗嘱消息 在关机或故障的情况下, 服务端可以推迟遗嘱消息的发布直 到之后的重启 如果发生了这种情况, 在服务器故障和遗嘱消息被发布之间可能会有一个延 迟 遗嘱 QoS Will QoS 位置 : 连接标志的第 4 和第 3 位 这两位用于指定发布遗嘱消息时使用的服务质量等级 如果遗嘱标志被设置为 0, 遗嘱 QoS 也必须设置为 0(0x00) ] 如果遗嘱标志被设置为 1, 遗嘱 QoS 的值可以等于 0(0x00),1(0x01),2(0x02) 它的值不能等于 ] 遗嘱保留 Will Retain 位置 : 连接标志的第 5 位 如果遗嘱消息被发布时需要保留, 需要指定这一位的值 如果遗嘱标志被设置为 0, 遗嘱保留 (Will Retain) 标志也必须设置为 ] 如果遗嘱标志被设置为 1: 如果遗嘱保留被设置为 0, 服务端必须将遗嘱消息当作非保留消息发布 ] 如果遗嘱保留被设置为 1, 服务端必须将遗嘱消息当作保留消息发布 ] 用户名标志 User Name Flag 位置 : 连接标志的第 7 位 如果用户名 (User Name) 标志被设置为 0, 有效载荷中不能包含用户名字段 ] 如果用户名 (User Name) 标志被设置为 1, 有效载荷中必须包含用户名字段 ] 密码标志 Password Flag 位置 : 连接标志的第 6 位 如果密码 (Password) 标志被设置为 0, 有效载荷中不能包含密码字段 ] 23

24 3.1 CONNECT 连接服务端 如果密码 (Password) 标志被设置为 1, 有效载荷中必须包含密码字段 ] 如果用户名标志被设置为 0, 密码标志也必须设置为 ] 保持连接 Keep Alive 图例 3.5 保持连接字节 Bit byte 9 byte 10 保持连接 Keep Alive MSB 保持连接 Keep Alive LSB 保持连接 (Keep Alive) 是一个以秒为单位的时间间隔, 表示为一个 16 位的字, 它是指在客户端传输完成一个控制报文的时刻到发送下一个报文的时刻, 两者之间允许空闲的最大时间间隔 客户端负责保证控制报文发送的时间间隔不超过保持连接的值 如果没有任何其它的控制报文可以发送, 客户端必须发送一个 PINGREQ 报文 ] 不管保持连接的值是多少, 客户端任何时候都可以发送 PINGREQ 报文, 并且使用 PINGRESP 报文判断网络和服务端的活动状态 如果保持连接的值非零, 并且服务端在一点五倍的保持连接时间内没有收到客户端的控制报文, 它必须断开客户端的网络连接, 认为网络连接已断开 ] 客户端发送了 PINGREQ 报文之后, 如果在合理的时间内仍没有收到 PINGRESP 报文, 它应该关闭到服务端的网络连接 保持连接的值为零表示关闭保持连接功能 这意味着, 服务端不需要因为客户端不活跃而断开连接 注意 : 不管保持连接的值是多少, 任何时候, 只要服务端认为客户端是不活跃或无响应的, 可以断开客户端的连接 非规范评注保持连接的实际值是由应用指定的, 一般是几分钟 允许的最大值是 18 小时 12 分 15 秒 可变报头非规范示例 图例 可变报头非规范示例 24

25 3.1 CONNECT 连接服务端 有效载荷 Payload CONNECT 报文的有效载荷 (payload) 包含一个或多个以长度为前缀的字段, 可变报头中的标志决定是否包含这些字段 如果包含的话, 必须按这个顺序出现 : 客户端标识符, 遗嘱主题, 遗嘱消息, 用户名, 密码 ] 客户端标识符 Client Identifier 服务端使用客户端标识符 (ClientId) 识别客户端 连接服务端的每个客户端都有唯一的客户端标识符 (ClientId) 客户端和服务端都必须使用 ClientId 识别两者之间的 MQTT 会话相关的状态 ] 客户端标识符 (ClientId) 必须存在而且必须是 CONNECT 报文有效载荷的第一个字段 ] 客户端标识符必须是 节定义的 UTF-8 编码字符串 ] 服务端必须允许 1 到 23 个字节长的 UTF-8 编码的客户端标识符, 客户端标识符只能包含这些字符 : abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ( 大写字母, 小写字母和数字 ) ] 25

26 3.1 CONNECT 连接服务端 服务端可以允许编码后超过 23 个字节的客户端标识符 (ClientId) 服务端可以允许包含不是上面列表字符的客户端标识符 (ClientId) 服务端可以允许客户端提供一个零字节的客户端标识符 (ClientId), 如果这样做了, 服务端必须将这看作特殊情况并分配唯一的客户端标识符给那个客户端 然后它必须假设客户端提供了那个唯一的客户端标识符, 正常处理这个 CONNECT 报文 ] 如果客户端提供了一个零字节的客户端标识符, 它必须同时将清理会话标志设置为 ] 如果客户端提供的 ClientId 为零字节且清理会话标志为 0, 服务端必须发送返回码为 0x02( 表示标识符不合格 ) 的 CONNACK 报文响应客户端的 CONNECT 报文, 然后关闭网络连接 ] 如果服务端拒绝了这个 ClientId, 它必须发送返回码为 0x02( 表示标识符不合格 ) 的 CONNACK 报文响应客户端的 CONNECT 报文, 然后关闭网络连接 ] 非规范评注客户端实现可以提供一个方便的方法用于生成随机的 ClientId 当清理会话标志被设置为 0 时应该主动放弃使用这种方法 遗嘱主题 Will Topic 如果遗嘱标志被设置为 1, 有效载荷的下一个字段是遗嘱主题 (Will Topic) 遗嘱主题必须是 节定义的 UTF-8 编码字符串 ] 遗嘱消息 Will Message 如果遗嘱标志被设置为 1, 有效载荷的下一个字段是遗嘱消息 遗嘱消息定义了将被发布到遗嘱主题的应用消息, 见 节的描述 这个字段由一个两字节的长度和遗嘱消息的有效载荷组成, 表示为零字节或多个字节序列 长度给出了跟在后面的数据的字节数, 不包含长度字段本身占用的两个字节 遗嘱消息被发布到遗嘱主题时, 它的有效载荷只包含这个字段的数据部分, 不包含开头的两个长度字节 用户名 User Name 如果用户名 (User Name) 标志被设置为 1, 有效载荷的下一个字段就是它 用户名必须是 节定义的 UTF-8 编码字符串 ] 服务端可以将它用于身份验证和授权 密码 Password 26

27 3.1 CONNECT 连接服务端 如果密码 (Password) 标志被设置为 1, 有效载荷的下一个字段就是它 密码字段包含一个两字节的长度字段, 长度表示二进制数据的字节数 ( 不包含长度字段本身占用的两个字节 ), 后面跟着 0 到 字节的二进制数据 图例 密码字节 Bit 7-0 byte 1 byte 2 byte 3. 数据长度 MSB 数据长度 LSB 如果长度大于 0, 这里就是数据部分 响应 Response 注意 : 服务器可以在同一个 TCP 端口或其他网络端点上支持多种协议 ( 包括本协议的早期版本 ) 如果服务器确定协议是 MQTT 3.1.1, 那么它按照下面的方法验证连接请求 1. 网络连接建立后, 如果服务端在合理的时间内没有收到 CONNECT 报文, 服务端应该关闭这个连接 2. 服务端必须按照 3.1 节的要求验证 CONNECT 报文, 如果报文不符合规范, 服务端不发送 CONNACK 报文直接关闭网络连接 ] 3. 服务端可以检查 CONNECT 报文的内容是不是满足任何进一步的限制, 可以执行身份验证和授权检查 如果任何一项检查没通过, 按照 3.2 节的描述, 它应该发送一个适当的 返回码非零的 CONNACK 响应, 并且必须关闭这个网络连接 如果验证成功, 服务端会执行下列步骤 1. 如果 ClientId 表明客户端已经连接到这个服务端, 那么服务端必须断开原有的客户端连接 ] 2. 服务端必须按照 节的描述执行清理会话的过程 ] 3. 服务端必须发送返回码为零的 CONNACK 报文作为 CONNECT 报文的确认响应 ] 4. 开始消息分发和保持连接状态监视 允许客户端在发送 CONNECT 报文之后立即发送其它的控制报文 ; 客户端不需要等待服务端的 CONNACK 报文 如果服务端拒绝了 CONNECT, 它不能处理客户端在 CONNECT 报文之后发送的任何数据 ] 非规范评注客户端通常会等待一个 CONNACK 报文 然而客户端有权在收到 CONNACK 之前发送控制报文, 由于不需要维持连接状态, 这可以简化客户端的实现 第三章目录 MQTT 控制报文 27

28 3.1 CONNECT 连接服务端 3.0 Contents 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 断开连接 项目主页 MQTT 协议中文版 28

29 3.2 CONNACK 确认连接请求 3.2 CONNACK 确认连接请求 服务端发送 CONNACK 报文响应从客户端收到的 CONNECT 报文 服务端发送给客户端的第一个报文必须是 CONNACK ] 如果客户端在合理的时间内没有收到服务端的 CONNACK 报文, 客户端应该关闭网络连接 合理的时间取决于应用的类型和通信基础设施 固定报头 固定报头的格式见图例 3.8 CONNACK 报文固定报头的描述 图例 3.8 CONNACK 报文固定报头 Bit byte 1 MQTT 报文类型 (2) Reserved 保留位 byte 2... 剩余长度 (2) 剩余长度字段表示可变报头的长度 对于 CONNACK 报文这个值等于 可变报头 可变报头的格式见图例 3.9 CONNACK 报文可变报头的描述 图例 3.9 CONNACK 报文可变报头描述 连接确认标志 Reserved 保留位 SP 1 byte X 连接返回码 byte 2 X X X X X X X X 29

30 3.2 CONNACK 确认连接请求 描述 连接确认标志 Reserved 保留位 1 SP byte X 连接返回码 byte 2 X X X X X X X X 连接确认标志 Connect Acknowledge Flags 第 1 个字节是连接确认标志, 位 7-1 是保留位且必须设置为 0 第 0 (SP) 位是当前会话 (Session Present) 标志 当前会话 Session Present 位置 : 连接确认标志的第 0 位 如果服务端收到清理会话 (CleanSession) 标志为 1 的连接, 除了将 CONNACK 报文中的返回码设置为 0 之外, 还必须将 CONNACK 报文中的当前会话设置 (Session Present) 标志为 ] 如果服务端收到一个 CleanSession 为 0 的连接, 当前会话标志的值取决于服务端是否已经保存了 ClientId 对应客户端的会话状态 如果服务端已经保存了会话状态, 它必须将 CONNACK 报文中的当前会话标志设置为 ] 如果服务端没有已保存的会话状态, 它必须将 CONNACK 报文中的当前会话设置为 0 还需要将 CONNACK 报文中的返回码设置为 ] 当前会话标志使服务端和客户端在是否有已存储的会话状态上保持一致 一旦完成了会话的初始化设置, 已经保存会话状态的客户端将期望服务端维持它存储的会话状态 如果客户端从服务端收到的当前的值与预期的不同, 客户端可以选择继续这个会话或者断开连接 客户端可以丢弃客户端和服务端之间的会话状态, 方法是, 断开连接, 将清理会话标志设置为 1, 再次连接, 然后再次断开连接 如果服务端发送了一个包含非零返回码的 CONNACK 报文, 它必须将当前会话标志设置为 ] 连接返回码 Connect Return code 位置 : 可变报头的第 2 个字节 连接返回码字段使用一个字节的无符号值, 在表格 3.1 连接返回码的值中列出 如果服务端收到一个合法的 CONNECT 报文, 但出于某些原因无法处理它, 服务端应该尝试发送一个包含非零返回码 ( 表格中的某一个 ) 的 CONNACK 报文 如果服务端发送了一个包含非零返 30

31 3.2 CONNACK 确认连接请求 回码的 CONNACK 报文, 那么它必须关闭网络连接 ]. 表格 3.1 连接返回码的值 值返回码响应描述 0 0x00 连接已接受连接已被服务端接受 1 2 0x01 连接已拒绝, 不支持的协议版本 0x02 连接已拒绝, 不合格的客户端标识符 服务端不支持客户端请求的 MQTT 协议级别 客户端标识符是正确的 UTF-8 编码, 但服务端不允许使用 3 0x03 连接已拒绝, 服务端不可用网络连接已建立, 但 MQTT 服务不可用 4 0x04 连接已拒绝, 无效的用户名或密码 用户名或密码的数据格式无效 5 0x05 连接已拒绝, 未授权客户端未被授权连接到此服务器 保留 如果认为上表中的所有连接返回码都不太合适, 那么服务端必须关闭网络连接, 不需要发送 CONNACK 报文 ] 有效载荷 CONNACK 报文没有有效载荷 第三章目录 MQTT 控制报文 3.0 Contents 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 心跳响应 31

32 3.2 CONNACK 确认连接请求 3.14 DISCONNECT 断开连接 项目主页 MQTT 协议中文版 32

33 3.3 PUBLISH 发布消息 3.3 PUBLISH 发布消息 PUBLISH 控制报文是指从客户端向服务端或者服务端向客户端传输一个应用消息 固定报头 图例 3.10 PUBLISH 报文固定报头描述了固定报头的格式 图例 3.10 PUBLISH 报文固定报头 Bit byte 1 MQTT 控制报文类型 (3) DUP QoS-H QoS- RETAIN X X X X byte 2... 剩余长度 重发标志 DUP 位置 : 第 1 个字节, 第 3 位如果 DUP 标志被设置为 0, 表示这是客户端或服务端第一次请求发送这个 PUBLISH 报文 如果 DUP 标志被设置为 1, 表示这可能是一个早前报文请求的重发 客户端或服务端请求重发一个 PUBLISH 报文时, 必须将 DUP 标志设置为 ]. 对于 QoS 0 的消息,DUP 标志必须设置为 ] 服务端发送 PUBLISH 报文给订阅者时, 收到 ( 入站 ) 的 PUBLISH 报文的 DUP 标志的值不会被传播 发送 ( 出站 ) 的 PUBLISH 报文与收到 ( 入站 ) 的 PUBLISH 报文中的 DUP 标志是独立设置的, 它的值必须单独的根据发送 ( 出站 ) 的 PUBLISH 报文是否是一个重发来确定 ] 非规范评注接收者收到一个 DUP 标志为 1 的控制报文时, 不能假设它看到了一个这个报文之前的一个副本 非规范评注需要特别指出的是,DUP 标志关注的是控制报文本身, 与它包含的应用消息无关 当使用 QoS 1 时, 客户端可能会收到一个 DUP 标志为 0 的 PUBLISH 报文, 这个报文包含一个它之前收到过的应用消息的副本, 但是用的是不同的报文标识符 节提供了有关报文标识符的更多信息 33

34 3.3 PUBLISH 发布消息 服务质量等级 QoS 位置 : 第 1 个字节, 第 2-1 位 这个字段表示应用消息分发的服务质量等级保证 服务质量等级在表格 服务质量定义中 列出 表格 服务质量定义 QoS 值 Bit 2 Bit 1 描述 最多分发一次 至少分发一次 只分发一次 保留位 PUBLISH 报文不能将 QoS 所有的位设置为 1 如果服务端或客户端收到 QoS 所有位都为 1 的 PUBLISH 报文, 它必须关闭网络连接 ] 保留标志 RETAIN 位置 : 第 1 个字节, 第 0 位 如果客户端发给服务端的 PUBLISH 报文的保留 (RETAIN) 标志被设置为 1, 服务端必须存储这个应用消息和它的服务质量等级 (QoS), 以便它可以被分发给未来的主题名匹配的订阅者 ] 一个新的订阅建立时, 对每个匹配的主题名, 如果存在最近保留的消息, 它必须被发送给这个订阅者 ] 如果服务端收到一条保留(RETAIN) 标志为 1 的 QoS 0 消息, 它必须丢弃之前为那个主题保留的任何消息 它应该将这个新的 QoS 0 消息当作那个主题的新保留消息, 但是任何时候都可以选择丢弃它 如果这种情况发生了, 那个主题将没有保留消息 ] 有关存储状态的更多信息见 4.1 节 服务端发送 PUBLISH 报文给客户端时, 如果消息是作为客户端一个新订阅的结果发送, 它必须将报文的保留标志设为 ] 当一个 PUBLISH 报文发送给客户端是因为匹配一个已建立的订阅时, 服务端必须将保留标志设为 0, 不管它收到的这个消息中保留标志的值是多少 ] 保留标志为 1 且有效载荷为零字节的 PUBLISH 报文会被服务端当作正常消息处理, 它会被发送给订阅主题匹配的客户端 此外, 同一个主题下任何现存的保留消息必须被移除, 因此这个主题之后的任何订阅者都不会收到一个保留消息 ] 当作正常意思是现存的客户端收到的消息中保留标志未被设置 服务端不能存储零字节的保留消息 ] 如果客户端发给服务端的 PUBLISH 报文的保留标志位 0, 服务端不能存储这个消息也不能移除或替换任何现存的保留消息 ] 34

35 3.3 PUBLISH 发布消息 非规范评注对于发布者不定期发送状态消息这个场景, 保留消息很有用 新的订阅者将会收到最近的状态 剩余长度字段等于可变报头的长度加上有效载荷的长度 可变报头 可变报头按顺序包含主题名和报文标识符 主题名 Topic Name 主题名 (Topic Name) 用于识别有效载荷数据应该被发布到哪一个信息通道 主题名必须是 PUBLISH 报文可变报头的第一个字段 它必须是 节定义的 UTF-8 编码的字符串 ] PUBLISH 报文中的主题名不能包含通配符 ] 服务端发送给订阅客户端的 PUBLISH 报文的主题名必须匹配该订阅的主题过滤器 ( 根据 4.7 节定义的匹配过程 ) ] 报文标识符 Packet Identifier 只有当 QoS 等级是 1 或 2 时, 报文标识符 (Packet Identifier) 字段才能出现在 PUBLISH 报文 中 节提供了有关报文标识符的更多信息 可变报头非规范示例 图例 3.11 PUBLISH 报文可变报头非规范示例举例说明了表格 PUBLISH 报文非规范示例中简要描述的 PUBLISH 报文的可变报头 </span></span> 表格 PUBLISH 报文非规范示例 Field Value 主题名 a/b 报文标识符 10 图例 3.11 PUBLISH 报文可变报头非规范示例 35

36 3.3 PUBLISH 发布消息 描述 Topic Name 主题名 byte 1 Length MSB (0) byte 2 Length LSB (3) byte 3 a (0x61) byte 4 / (0x2F) byte 5 b (0x62) 报文标识符 byte 6 报文标识符 MSB (0) byte 7 报文标识符 LSB (10) 示例中的主题名为 a/b, 长度等于 3, 报文标识符为 有效载荷 有效载荷包含将被发布的应用消息 数据的内容和格式是应用特定的 有效载荷的长度这样计算 : 用固定报头中的剩余长度字段的值减去可变报头的长度 包含零长度有效载荷的 PUBLISH 报文是合法的 响应 PUBLISH 报文的接收者必须按照根据 PUBLISH 报文中的 QoS 等级发送响应, 见下面表格的描 述 ] 表格 3.4 PUBLISH 报文的预期响应 服务质量等级 预期响应 QoS 0 QoS 1 QoS 2 无响应 PUBACK 报文 PUBREC 报文 动作 Actions 客户端使用 PUBLISH 报文发送应用消息给服务端, 目的是分发到其它订阅匹配的客户端 服务端使用 PUBLISH 报文发送应用消息给每一个订阅匹配的客户端 36

37 3.3 PUBLISH 发布消息 客户端使用带通配符的主题过滤器请求订阅时, 客户端的订阅可能会重复, 因此发布的消息可能会匹配多个过滤器 对于这种情况, 服务端必须将消息分发给所有订阅匹配的 QoS 等级最高的客户端 ] 服务端之后可以按照订阅的 QoS 等级, 分发消息的副本给每一个匹配的订阅者 收到一个 PUBLISH 报文时, 接收者的动作取决于 4.3 节描述的 QoS 等级 如果服务端实现不授权某个客户端发布 PUBLISH 报文, 它没有办法通知那个客户端 它必须按照正常的 QoS 规则发送一个正面的确认, 或者关闭网络连接 ] 第三章目录 MQTT 控制报文 3.0 Contents 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 断开连接 项目主页 MQTT 协议中文版 37

38 3.4 PUBACK 发布确认 3.4 PUBACK 发布确认 PUBACK 报文是对 QoS 1 等级的 PUBLISH 报文的响应 固定报头 图例 PUBACK 报文固定报头 Bit byte 1 MQTT 报文类型 (4) 保留位 byte 2... 剩余长度 剩余长度字段 表示可变报头的长度 对 PUBACK 报文这个值等于 可变报头 包含等待确认的 PUBLISH 报文的报文标识符 图例 3.13 PUBACK 报文可变报头 Bit byte 1 byte 2 报文标识符 MSB 报文标识符 LSB 有效载荷 PUBACK 报文没有有效载荷 动作 完整的描述见 节 第三章目录 MQTT 控制报文 3.0 Contents MQTT 控制报文 38

39 3.4 PUBACK 发布确认 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 断开连接 项目主页 MQTT 协议中文版 39

40 3.5 PUBREC 发布收到 (QoS 2, 第一步 ) 3.5 PUBREC 发布收到 (QoS 2, 第一步 ) PUBREC 报文是对 QoS 等级 2 的 PUBLISH 报文的响应 它是 QoS 2 等级协议交换的第二个报 文 固定报头 图例 3.14 PUBREC 报文固定报头 Bit byte 1 MQTT 控制报文类型 (5) 保留位 byte 2 剩余长度 (2) 剩余长度字段表示可变报头的长度 对 PUBREC 报文它的值等于 可变报头 可变报头包含等待确认的 PUBLISH 报文的报文标识符 图例 3.15 PUBREC 报文可变报头 Bit byte 1 byte 2 报文标识符 MSB 报文标识符 LSB 有效载荷 PUBREC 报文没有有效载荷 动作 完整的描述见 节 第三章目录 MQTT 控制报文 40

41 3.5 PUBREC 发布收到 (QoS 2, 第一步 ) 3.0 Contents 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 断开连接 项目主页 MQTT 协议中文版 41

42 3.6 PUBREL 发布释放 (QoS 2, 第二步 ) 3.6 PUBREL 发布释放 (QoS 2, 第二步 ) PUBREL 报文是对 PUBREC 报文的响应 它是 QoS 2 等级协议交换的第三个报文 固定报头 图例 3.16 PUBREL 报文固定报头 Bit byte 1 MQTT 控制报文类型 (6) 保留位 byte 2 剩余长度 (2) PUBREL 控制报文固定报头的第 3,2,1,0 位是保留位, 必须被设置为 0,0,1,0 服务端必须将其它的任何值都当做是不合法的并关闭网络连接 ] 剩余长度字段表示可变报头的长度 对 PUBREL 报文这个值等于 可变报头 可变报头包含与等待确认的 PUBREC 报文相同的报文标识符 图例 3.17 PUBREL 报文可变报头 Bit byte 1 byte 2 报文标识符 MSB 报文标识符 LSB 有效载荷 PUBREL 报文没有有效载荷 动作 完整的描述见 节 42

43 3.6 PUBREL 发布释放 (QoS 2, 第二步 ) 第三章目录 MQTT 控制报文 3.0 Contents 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 断开连接 项目主页 MQTT 协议中文版 43

44 3.7 PUBCOMP 发布完成 (QoS 2, 第三步 ) 3.7 PUBCOMP 发布完成 (QoS 2, 第三步 ) PUBCOMP 报文是对 PUBREL 报文的响应 它是 QoS 2 等级协议交换的第四个也是最后一个报 文 固定报头 图例 3.18 PUBCOMP 报文固定报头 Bit byte 1 MQTT 控制报文类型 (7) 保留位 byte 2 剩余长度 (2) 剩余长度字段表示可变报头的长度 对 PUBCOMP 报文这个值等于 可变报头 可变报头包含与等待确认的 PUBREL 报文相同的报文标识符 图例 3.19 PUBCOMP 报文可变报头 Bit byte 1 byte 2 报文标识符 MSB 报文标识符 LSB 有效载荷 PUBCOMP 报文没有有效载荷 动作 完整的描述见 节 第三章目录 MQTT 控制报文 44

45 3.7 PUBCOMP 发布完成 (QoS 2, 第三步 ) 3.0 Contents 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 断开连接 项目主页 MQTT 协议中文版 45

46 3.8 SUBSCRIBE - 订阅主题 3.8 SUBSCRIBE - 订阅主题 客户端向服务端发送 SUBSCRIBE 报文用于创建一个或多个订阅 每个订阅注册客户端关心的一个或多个主题 为了将应用消息转发给与那些订阅匹配的主题, 服务端发送 PUBLISH 报文给客户端 SUBSCRIBE 报文也 ( 为每个订阅 ) 指定了最大的 QoS 等级, 服务端根据这个发送应用消息给客户端 固定报头 图例 3.20 SUBSCRIBE 报文固定报头 Bit byte 1 MQTT 控制报文类型 (8) 保留位 byte 2 剩余长度 Bit byte 1 MQTT 控制报文类型 (8) 保留位 byte 2 剩余长度 SUBSCRIBE 控制报固定报头的第 3,2,1,0 位是保留位, 必须分别设置为 0,0,1,0 服务端必须将其它的任何值都当做是不合法的并关闭网络连接 ] 剩余长度字段等于可变报头的长度 (2 字节 ) 加上有效载荷的长度 可变报头 可变报头包含报文标识符 提供了有关报文标识符的更多信息 可变报头非规范示例 图例 3.21 报文标识符等于 10 的可变报头, 非规范示例展示了报文标识符设置为 10 时的可变报头 图例 3.21 报文标识符等于 10 的可变报头, 非规范示例 46

47 3.8 SUBSCRIBE - 订阅主题 描述 报文标识符 byte 1 报文标识符 MSB (0) byte 2 报文标识符 LSB (10) 有效载荷 SUBSCRIBE 报文的有效载荷包含了一个主题过滤器列表, 它们表示客户端想要订阅的主题 SUBSCRIBE 报文有效载荷中的主题过滤器列表必须是 节定义的 UTF-8 字符串 ] 服务端应该支持包含通配符(4.7.1 节定义的 ) 的主题过滤器 如果服务端选择不支持包含通配符的主题过滤器, 必须拒绝任何包含通配符过滤器的订阅请求 ] 每一个过滤器后面跟着一个字节, 这个字节被叫做服务质量要求 (Requested QoS) 它给出了服务端向客户端发送应用消息所允许的最大 QoS 等级 SUBSCRIBE 报文的有效载荷必须包含至少一对主题过滤器和 QoS 等级字段组合 没有有效载荷的 SUBSCRIBE 报文是违反协议的 ] 有关错误处理的信息请查看 4.8 节 请求的最大服务质量等级字段编码为一个字节, 它后面跟着 UTF-8 编码的主题名, 那些主题过滤器 / 和 QoS 等级组合是连续地打包 图例 3.22 SUBSCRIBE 报文有效载荷格式描述 主题过滤器 byte 1 byte 2 bytes 3..N 长度 MSB 长度 LSB 主题过滤器 (Topic Filter) 服务质量要求 (Requested QoS) 保留位 服务质量等级 byte N X X 47

48 3.8 SUBSCRIBE - 订阅主题 描述 主题过滤器 byte 1 byte 2 byte 3..N 长度 MSB 长度 LSB 主题过滤器 (Topic Filter) 服务质量要求 (Requested QoS) 保留位 服务质量等级 byte N X X 当前版本的协议没有用到服务质量要求 (Requested QoS) 字节的高六位 如果有效载荷中的任何位是非零值, 或者 QoS 不等于 0,1 或 2, 服务端必须认为 SUBSCRIBE 报文是不合法的并关闭网络连接 ] 有效载荷非规范示例 图例 3.23 有效载荷字节格式非规范示例展示了表格 3.5 有效载荷非规范示例中简略描述的 SUBSCRIBE 报文的有效载荷 表格 3.5 有效载荷非规范示例 主题名 a/b 服务质量要求 主题名 服务质量要求 0x01 c/d 0x02 图例 3.23 有效载荷字节格式非规范示例 48

49 3.8 SUBSCRIBE - 订阅主题 描述 主题过滤器 (Topic Filter) byte 1 Length MSB (0) byte 2 Length LSB (3) byte 3 a (0x61) byte 4 / (0x2F) byte 5 b (0x62) 服务质量要求 (Requested QoS) byte 6 主题过滤器 (Topic Filter) Requested QoS(1) byte 7 Length MSB (0) byte 8 Length LSB (3) byte 9 c (0x63) byte 10 / (0x2F) byte 11 d (0x64) 服务质量要求 (Requested QoS) byte 12 Requested QoS(2) 响应 服务端收到客户端发送的一个 SUBSCRIBE 报文时, 必须使用 SUBACK 报文响应 ] SUBACK 报文必须和等待确认的 SUBSCRIBE 报文有相同的报文标识符 ] 允许服务端在发送 SUBACK 报文之前就开始发送与订阅匹配的 PUBLISH 报文 如果服务端收到一个 SUBSCRIBE 报文, 报文的主题过滤器与一个现存订阅的主题过滤器相同, 那么必须使用新的订阅彻底替换现存的订阅 新订阅的主题过滤器和之前订阅的相同, 但是它的最大 QoS 值可以不同 与这个主题过滤器匹配的任何现存的保留消息必须被重发, 但是发布流程不能中断 ] 如果主题过滤器不同于任何现存订阅的过滤器, 服务端会创建一个新的订阅并发送所有匹配的保留消息 49

50 3.8 SUBSCRIBE - 订阅主题 如果服务端收到包含多个主题过滤器的 SUBSCRIBE 报文, 它必须如同收到了一系列的多个 SUBSCRIBE 报文一样处理那个, 除了需要将它们的响应合并到一个单独的 SUBACK 报文发送 ] 服务端发送给客户端的 SUBACK 报文对每一对主题过滤器和 QoS 等级都必须包含一个返回码 这个返回码必须表示那个订阅被授予的最大 QoS 等级, 或者表示这个订阅失败 ] 服务端可以授予比订阅者要求的低一些的 QoS 等级 为响应订阅而发出的消息的有效载荷的 QoS 必须是原始发布消息的 QoS 和服务端授予的 QoS 两者中的最小值 如果原始消息的 QoS 是 1 而被授予的最大 QoS 是 0, 允许服务端重复发送一个消息的副本给订阅者 ] 非规范示例对某个特定的主题过滤器, 如果正在订阅的客户端被授予的最大 QoS 等级是 1, 那么匹配这个过滤器的 QoS 等级 0 的应用消息会按 QoS 等级 0 分发给这个客户端 这意味着客户端最多收到这个消息的一个副本 从另一方面说, 发布给同一主题的 QoS 等级 2 的消息会被服务端降级到 QoS 等级 1 再分发给客户端, 因此客户端可能会收到重复的消息副本 如果正在订阅的客户端被授予的最大 QoS 等级是 0, 那么原来按 QoS 等级 2 发布给客户端的应用消息在繁忙时可能会丢失, 但是服务端不应该发送重复的消息副本 发布给同一主题的 QoS 等级 1 的消息在传输给客户端时可能会丢失或重复 非规范评注使用 QoS 等级 2 订阅一个主题过滤器等于是说 : 我想要按照它们发布时的 QoS 等级接受匹配这个过滤器的消息 这意味着, 确定消息分发时可能的最大 QoS 等级是发布者的责任, 而订阅者可以要求服务端降低 QoS 到更适合它的等级 第三章目录 MQTT 控制报文 3.0 Contents 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 心跳响应 50

51 3.8 SUBSCRIBE - 订阅主题 3.14 DISCONNECT 断开连接 项目主页 MQTT 协议中文版 51

52 3.9 SUBACK 订阅确认 3.9 SUBACK 订阅确认 服务端发送 SUBACK 报文给客户端, 用于确认它已收到并且正在处理 SUBSCRIBE 报文 SUBACK 报文包含一个返回码清单, 它们指定了 SUBSCRIBE 请求的每个订阅被授予的最大 QoS 等级 固定报头 图例 3.24 SUBACK 报文固定报头 Bit byte 1 MQTT 控制报文类型 (9) 保留位 byte 2 剩余长度 剩余长度字段 等于可变报头的长度加上有效载荷的长度 可变报头 可变报头包含等待确认的 SUBSCRIBE 报文的报文标识符 图例 3.25 SUBACK 报文可变报头描述了可变报头的格式 图例 3.25 SUBACK 报文可变报头 Bit byte 1 byte 2 报文标识符 MSB 报文标识符 LSB 有效载荷 有效载荷包含一个返回码清单 每个返回码对应等待确认的 SUBSCRIBE 报文中的一个主题过滤器 返回码的顺序必须和 SUBSCRIBE 报文中主题过滤器的顺序相同 ] 图例 3.26 SUBACK 报文有效载荷格式描述了有效载荷中单字节编码的返回码字段 图例 3.26 SUBACK 报文有效载荷格式 52

53 3.9 SUBACK 订阅确认 Bit 返回码 byte 1 X X X 允许的返回码值 : 0x00 - 最大 QoS 0 0x01 - 成功 最大 QoS 1 0x02 - 成功 最大 QoS 2 0x80 - Failure 失败 0x00, 0x01, 0x02, 0x80 之外的 SUBACK 返回码是保留的, 不能使用 ] 有效载荷非规范示例 图例 有效载荷字节格式非规范示例展示了在表格 有效载荷非规范示例简要描述的 SUBACK 报文的有效载荷 表格 有效载荷非规范示例 Success - Maximum QoS 0 0 Success - Maximum QoS 2 2 Failure 128 图例 有效载荷字节格式非规范示例描述 byte 1 Success - Maximum QoS byte 2 Success - Maximum QoS byte 3 Failure 第三章目录 MQTT 控制报文 3.0 Contents MQTT 控制报文 3.1 CONNECT 连接服务端 3.2 CONNACK 确认连接请求 3.3 PUBLISH 发布消息 3.4 PUBACK 发布确认 3.5 PUBREC 发布收到 (QoS 2, 第一步 ) 3.6 PUBREL 发布释放 (QoS 2, 第二步 ) 53

54 3.9 SUBACK 订阅确认 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 断开连接 项目主页 MQTT 协议中文版 54

55 3.10 UNSUBSCRIBE 取消订阅 3.10 UNSUBSCRIBE 取消订阅 客户端发送 UNSUBSCRIBE 报文给服务端, 用于取消订阅主题 固定报头 图例 3.28 UNSUBSCRIBE 报文固定报头 Bit byte 1 MQTT 控制报文类型 (10) 保留位 byte 2 剩余长度 UNSUBSCRIBE 报文固定报头的第 3,2,1,0 位是保留位且必须分别设置为 0,0,1,0 服务端必须认为任何其它的值都是不合法的并关闭网络连接 ] 剩余长度字段等于可变报头的长度加上有效载荷的长度 可变报头 可变报头包含一个报文标识符 节提供了有关报文标识符的更多信息 图例 3.29 UNSUBSCRIBE 报文可变报头 Bit byte 1 byte 2 报文标识符 MSB 报文标识符 LSB 有效载荷 UNSUBSCRIBE 报文的有效载荷包含客户端想要取消订阅的主题过滤器列表 UNSUBSCRIBE 报文中的主题过滤器必须是连续打包的 按照 节定义的 UTF-8 编码字符串 ] UNSUBSCRIBE 报文的有效载荷必须至少包含一个消息过滤器 没有有效载荷的 UNSUBSCRIBE 报文是违反协议的 ] 有关错误处理的更多信息请查看 4.8 节 55

56 3.10 UNSUBSCRIBE 取消订阅 有效载荷非规范示例 图例 有效载荷字节格式非规范示例展示了表格 有效载荷非规范示例简要描述的 UNSUBSCRIBE 报文的有效载荷 表格 有效载荷非规范示例 主题过滤器 a/b 主题过滤器 c/d 图例 有效载荷字节格式非规范示例描述 主题过滤器 byte 1 Length MSB (0) byte 2 Length LSB (3) byte 3 a (0x61) byte 4 / (0x2F) byte 5 b (0x62) 主题过滤器 byte 6 Length MSB (0) byte 7 Length LSB (3) byte 8 c (0x63) byte 9 / (0x2F) byte 10 d (0x64) 响应 UNSUBSCRIBE 报文提供的主题过滤器 ( 无论是否包含通配符 ) 必须与服务端持有的这个客户端的当前主题过滤器集合逐个字符比较 如果有任何过滤器完全匹配, 那么它 ( 服务端 ) 自己的订阅将被删除, 否则不会有进一步的处理 ] 如果服务端删除了一个订阅 : 它必须停止分发任何新消息给这个客户端 ] 它必须完成分发任何已经开始往客户端发送的 QoS 1 和 QoS 2 的消息 ] 它可以继续发送任何现存的准备分发给客户端的缓存消息 56

57 3.10 UNSUBSCRIBE 取消订阅 服务端必须发送 UNSUBACK 报文响应客户端的 UNSUBSCRIBE 请求 UNSUBACK 报文必须包含和 UNSUBSCRIBE 报文相同的报文标识符 ] 即使没有删除任何主题订阅, 服务端也必须发送一个 UNSUBACK 响应 ] 如果服务端收到包含多个主题过滤器的 UNSUBSCRIBE 报文, 它必须如同收到了一系列的多个 UNSUBSCRIBE 报文一样处理那个报文, 除了将它们的响应合并到一个单独的 UNSUBACK 报文外 ] 第三章目录 MQTT 控制报文 3.0 Contents 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 断开连接 项目主页 MQTT 协议中文版 57

58 3.11 UNSUBACK 取消订阅确认 3.11 UNSUBACK 取消订阅确认 服务端发送 UNSUBACK 报文给客户端用于确认收到 UNSUBSCRIBE 报文 固定报头 图例 3.31 UNSUBACK 报文固定报头 Bit byte 1 MQTT 控制报文类型 (11) 保留位 byte 2 剩余长度 (2) Bit byte 1 MQTT 控制报文类型 (11) 保留位 byte 2 剩余长度 (2) 剩余长度字段表示可变报头的长度, 对 UNSUBACK 报文这个值等于 可变报头 可变报头包含等待确认的 UNSUBSCRIBE 报文的报文标识符 图例 3.32 UNSUBACK 报文可变报头 Bit byte 1 byte 2 报文标识符 MSB 报文标识符 LSB Bit byte 1 byte 2 报文标识符 MSB 报文标识符 LSB 58

59 3.11 UNSUBACK 取消订阅确认 有效载荷 UNSUBACK 报文没有有效载荷 第三章目录 MQTT 控制报文 3.0 Contents 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 断开连接 项目主页 MQTT 协议中文版 59

60 3.12 PINGREQ 心跳请求 3.12 PINGREQ 心跳请求 客户端发送 PINGREQ 报文给服务端的 用于 : 1. 在没有任何其它控制报文从客户端发给服务的时, 告知服务端客户端还活着 2. 请求服务端发送响应确认它还活着 3. 使用网络以确认网络连接没有断开 保持连接 (Keep Alive) 处理中用到这个报文, 详细信息请查看 节 固定报头 图例 3.33 PINGREQ 报文固定报头 Bit byte 1 MQTT 控制报文类型 (12) 保留位 byte 2 剩余长度 (0) Bit byte 1 MQTT 控制报文类型 (12) 保留位 byte 2 剩余长度 (0) 可变报头 PINGREQ 报文没有可变报头 有效载荷 PINGREQ 报文没有有效载荷 响应 服务端必须发送 PINGRESP 报文响应客户端的 PINGREQ 报文 ] 60

61 3.12 PINGREQ 心跳请求 第三章目录 MQTT 控制报文 3.0 Contents 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 断开连接 项目主页 MQTT 协议中文版 61

62 3.13 PINGRESP 心跳响应 3.13 PINGRESP 心跳响应 服务端发送 PINGRESP 报文响应客户端的 PINGREQ 报文 表示服务端还活着 保持连接 (Keep Alive) 处理中用到这个报文, 详情请查看 节 固定报头 图例 3.34 PINGRESP 报文固定报头 Bit byte 1 MQTT 控制报文类型 (13) 保留位 byte 2 剩余长度 (0) 可变报头 PINGRESP 报文没有可变报头 有效载荷 PINGRESP 报文没有有效载荷 第三章目录 MQTT 控制报文 3.0 Contents 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 取消订阅确认 62

63 3.13 PINGRESP 心跳响应 3.12 PINGREQ 心跳请求 3.13 PINGRESP 心跳响应 3.14 DISCONNECT 断开连接 项目主页 MQTT 协议中文版 63

64 3.14 DISCONNECT 断开连接 3.14 DISCONNECT 断开连接 DISCONNECT 报文是客户端发给服务端的最后一个控制报文 表示客户端正常断开连接 固定报头 图例 3.35 DISCONNECT 报文固定报头 Bit byte 1 MQTT 控制报文类型 (14) 保留位 byte 2 剩余长度 (0) 服务端必须验证所有的保留位都被设置为 0, 如果它们不为 0 必须断开连接 ] 可变报头 DISCONNECT 报文没有可变报头 有效载荷 DISCONNECT 报文没有有效载荷 响应 客户端发送 DISCONNECT 报文之后 : 必须关闭网络连接 ] 不能通过那个网络连接再发送任何控制报文 ] 服务端在收到 DISCONNECT 报文时 : 必须丢弃任何与当前连接关联的未发布的遗嘱消息, 具体描述见 节 ] 应该关闭网络连接, 如果客户端还没有这么做 第三章目录 MQTT 控制报文 64

65 3.14 DISCONNECT 断开连接 3.0 Contents 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 断开连接 第三章目录 MQTT 控制报文 3.0 Contents 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 断开连接 项目主页 MQTT 协议中文版 65

66 第四章 操作行为 第四章操作行为 Operational behavior 目录 第一章 - 介绍第二章 MQTT 控制报文格式第三章 MQTT 控制报文第四章 操作行为第五章 安全第六章 使用 WebSocket 第七章 一致性目标附录 B - 强制性规范声明 4.1 状态存储 Storing state 为了提供服务质量保证, 客户端和服务端有必要存储会话状态 在整个会话期间, 客户端和服务端都必须存储会话状态 ] 会话必须至少持续和它的活跃网络连接同样长的时间 ] 服务端的保留消息不是会话状态的组成部分 服务端应该保留那种消息直到客户端删除它 66

67 第四章 操作行为 非规范评注客户端和服务端实现的存储容量必然是有限的, 还可能要受管理策略的限制, 比如跨网络连接的会话状态的最大存储时间 已保存的会话状态丢失可能是某个管理操作造成的, 例如对某个预定义条件的自动响应 它造成的后果就是会话终止 这些操作可能是资源限制或其他操作原因引发的 需要谨慎的评估客户端和服务端的存储容量, 以确保存储空间够用 非规范评注客户端或服务端的软硬件故障都可能导致会话状态的丢失或损坏 非规范评注服务器和客户端操作正常可能意味着, 已保存的状态丢失或损坏是管理操作或软硬件故障造成的 管理操作可能是对某个预定义条件的自动响应 这些操作可能是资源限制或其他操作原因引发的 例如, 服务端可能会基于外部条件, 决定不再将某个消息或某些消息分发给任何当前的或以后的客户端 非规范评注 MQTT 用户应该评估 MQTT 客户端和服务端实现的存储容量, 确保能满足需求 非规范示例 例如, 想要收集电表读数的用户可能会决定使用 QoS 1 等级的消息, 因为他们不能接受数据在网络传输途中丢失, 但是, 他们可能认为客户端和服务端的数据可以存储在内存 ( 易失性存储器 ) 中, 因为 ( 他们觉得 ) 电力供应是非常可靠的, 不会有太大的数据丢失风险 与之相反, 停车计费支付应用的提供商可能决定任何情况下都不能让数据支付消息丢失, 因此他们要求在通过网络传输之前, 所有的数据必须写入到非易失性存储器中 ( 如硬盘 ) 4.2 网络连接 Network Connections MQTT 协议要求基础传输层能够提供有序的 可靠的 双向传输 ( 从客户端到服务端和从服务端到客户端 ) 的字节流 非规范评注 MQTT 3.1 使用的传输层协议是 [RFC793] 定义的 TCP/IP 协议 下面的协议也支持 : TLS 协议 [RFC5246] WebSocket 协议 [RFC6455] 67

68 第四章 操作行为 非规范评注 TCP 端口 8883 和 1883 已在 IANA 注册, 分别用于 MQTT 的 TLS 和非 TLS 通信 无连接的网络传输协议如 UDP 是不支持的, 因为他们可能会丢失数据包或对数据包重排序 4.3 服务质量等级和协议流程 QoS MQTT 按照这里定义的服务质量 (QoS) 等级分发应用消息 分发协议是对称的, 在下面的描述中, 客户端和服务端既可以是发送者也可以是接收者 分发协议关注的是从单个发送者到单个接收者的应用消息 服务端分发应用消息给多个客户端时, 每个客户端独立处理 分发给客户端的出站应用消息和入站应用消息的 QoS 等级可能是不同的 下面的非规范流程图展示了可能的实现方法 QoS 0: 最多分发一次 消息的分发依赖于底层网络的能力 接收者不会发送响应, 发送者也不会重试 消息可能送达一次也可能根本没送达 对于 QoS 0 的分发协议, 发送者必须发送 QoS 等于 0,DUP 等于 0 的 PUBLISH 报文 ] 对于 QoS 0 的分发协议, 接收者接受 PUBLISH 报文时同时接受消息的所有权 图例 4.1 QoS 0 协议流程图, 非规范示例 发送者动作 控制报文 接收者动作 PUBLISH 报文 QoS 0, DUP= > 分发应用消息给适当的后续接收者 ( 们 ) QoS 1: 至少分发一次 服务质量确保消息至少送达一次 QoS 1 的 PUBLISH 报文的可变报头中包含一个报文标识符, 需要 PUBACK 报文确认 节提供了有关报文标识符的更多信息 对于 QoS 1 的分发协议, 发送者每次发送新的应用消息都必须分配一个未使用的报文标识符 发送的 PUBLISH 报文必须包含报文标识符且 QoS 等于 1,DUP 等于 0 68

69 第四章 操作行为 必须将这个 PUBLISH 报文看作是未确认的, 直到从接收者那收到对应的 PUBACK 报文 4.4 节有一个关于未确认消息的讨论 ]. 一旦发送者收到 PUBACK 报文, 这个报文标识符就可以重用 注意 : 允许发送者在等待确认时使用不同的报文标识符发送后续的 PUBLISH 报文 对于 QoS 1 的分发协议, 接收者响应的 PUBACK 报文必须包含一个报文标识符, 这个标识符来自接收到的 已经接受所有权的 PUBLISH 报文 发送了 PUBACK 报文之后, 接收者必须将任何包含相同报文标识符的入站 PUBLISH 报文当作一个新的消息, 并忽略它的 DUP 标志的值 ]. 图例 4.2 QoS 1 协议流程图, 非规范示例 发送者动作 控制报文 接收者动作 存储消息 发送 PUBLISH 报文 QoS=1, DUP=0, 带报文标识符 丢弃消息 > < 开始应用消息的后续分发 1 发送 PUBACK 报文, 带报文标识符 1 不要求接收者在发送 PUBACK 之前完整分发应用消息 原来的发送者收到 PUBACK 报文 之后, 应用消息的所有权就会转移给这个接收者 QoS 2: 仅分发一次 这是最高等级的服务质量, 消息丢失和重复都是不可接受的 使用这个服务质量等级会有额外的开销 QoS 2 的消息可变报头中有报文标识符 节提供了有关报文标识符的更多信息 QoS 2 的 PUBLISH 报文的接收者使用一个两步确认过程来确认收到 对于 QoS 2 的分发协议, 发送者必须给要发送的新应用消息分配一个未使用的报文标识符 发送的 PUBLISH 报文必须包含报文标识符且报文的 QoS 等于 2,,DUP 等于 0 69

70 第四章 操作行为 必须将这个 PUBLISH 报文看作是未确认的, 直到从接收者那收到对应的 PUBREC 报文 4.4 节有一个关于未确认消息的讨论 收到 PUBREC 报文后必须发送一个 PUBREL 报文 PUBREL 报文必须包含与原始 PUBLISH 报文相同的报文标识符 必须将这个 PUBREL 报文看作是未确认的, 直到从接收者那收到对应的 PUBCOMP 报文 一旦发送了对应的 PUBREL 报文就不能重发这个 PUBLISH 报文 ]. 一旦发送者收到 PUBCOMP 报文, 这个报文标识符就可以重用 注意 : 允许发送者在等待确认时使用不同的报文标识符发送后续的 PUBLISH 报文 对于 QoS 2 的分发协议, 接收者响应的 PUBREC 报文必须包含报文标识符, 这个标识符来自接收到的 已经接受所有权的 PUBLISH 报文 在收到对应的 PUBREL 报文之前, 接收者必须发送 PUBREC 报文确认任何后续的具有相同标识符的 PUBLISH 报文 在这种情况下, 它不能重复分发消息给任何后续的接收者 响应 PUBREL 报文的 PUBCOMP 报文必须包含与 PUBREL 报文相同的标识符 发送 PUBCOMP 报文之后, 接收者必须将包含相同报文标识符的任何后续 PUBLISH 报文当作一个新的发布 ]. 图例 4.3 QoS 2 协议流程图, 非规范示例 70

71 第四章 操作行为 存储消息 发送者动作 发送 PUBLISH 报文,QoS=2, DUP=0, 带报文标识符 丢弃消息, 存储 PUBREC 中的报文标识符 发送 PUBREL 报文, 带报文标识符 丢弃已保存的状态 控制报文 > < > < 接收者动作 方法 A: 存储消息, 或方法 B: 存储报文标识符, 然后开始向前分发这个应用消息 1 发送 PUBREC 报文, 带报文标识符 方法 A: 开始向前分发应用消息 1 然后丢弃消息或方法 B: 丢弃报文标识符 发送 PUBCOMP 报文, 带报文标识符 1 不要求接收者在发送 PUBREC 或 PUBCOMP 之前完整分发应用消息 原来的发送者收到 PUBREC 报文之后, 应用消息的所有权就会转移给这个接收者 图例 4.3 QoS 2 协议流程图, 非规范示例展示了接收者对 QoS 2 等级消息的两种处理方法 他们的区别是消息什么时候可以开始分发 实现者可以决定使用哪种方法 只要实现者只选择了一种方法, 就不会影响 QoS 流程的可靠性 4.4 消息分发重试 Message delivery retry 71

72 第四章 操作行为 客户端设置清理会话 (CleanSession) 标志为 0 重连时, 客户端和服务端必须使用原始的报文标识符重发任何未确认的 PUBLISH 报文 ( 如果 QoS>0) 和 PUBREL 报文 ] 这是唯一要求客户端或服务端重发消息的情况 非规范评注控制报文的重发曾经需要克服某些陈旧 TCP 网络上的数据丢失问题 部署在那些环境中的 MQTT 实现可能仍然需要关注这个问题 4.5 消息收到 Message receipt 服务端接管入站应用消息的所有权时, 它必须将消息添加到订阅匹配的客户端的会话状态中 匹配规则定义见 4.7 节 ] 正常情况下, 客户端收到发送给它的订阅的消息 客户端也可能收到不是与它的订阅精确匹配的消息 如果服务端自动给客户端分配了一个订阅, 可能发生这种情况 正在处理 UBSUBSCRIBE 请求时也可能收到消息 客户端必须按照可用的服务质量 (QoS) 规则确认它收到的任何 PUBLISH 报文, 不管它选择是否处理报文包含的应用消息 ] 4.6 消息排序 Message ordering 实现本章定义的协议流程时, 客户端必须遵循下列规则 : 重发任何之前的 PUBLISH 报文时, 必须按原始 PUBLISH 报文的发送顺序重发 ( 适用于 QoS 1 和 QoS 2 消息 ) ] 必须按照对应的 PUBLISH 报文的顺序发送 PUBACK 报文 (QoS 1 消息 ) ] 必须按照对应的 PUBLISH 报文的顺序发送 PUBREC 报文 (QoS 2 消息 ) ] 必须按照对应的 PUBREC 报文的顺序发送 PUBREL 报文 (QoS 2 消息 ) ] 服务端必须默认认为每个主题都是有序的 它可以提供一个管理功能或其它机制, 以允许将一个或多个主题当作是无序的 ] 服务端处理发送给有序主题的消息时, 必须按照上面的规则将消息分发给每个订阅者 此外, 它必须按照从客户端收到的顺序发送 PUBLISH 报文给消费者 ( 对相同的主题和 QoS) ] 72

73 第四章 操作行为 非规范评注上面列出的规则确保, 使用 QoS 1 发布和订阅的消息流, 订阅者按照消息发布时的顺序收到每条消息的最终副本, 但是消息可能会重复, 这可能导致在它的后继消息之后收到某个已经收到消息的重发版本 例如, 发布者按顺序 1,2,3,4 发送消息, 订阅者收到的顺序可能是 1,2,3,2,3,4 如果客户端和服务端能保证任何时刻最多有一条消息在传输中 (in-flight)( 在某条消息被确认前不发送后面的那条消息 ), 那么, 不会有 QoS 1 的消息会在它的任何后续消息之后收到 例如, 订阅者收到的顺序可能是 1,2,3,3,4, 而不是 1,2,3,2,3,4 将传输窗口 (in-flight window) 设为 1 意味着, 在同一个主题上, 即使发布者发送了一系列不同 QoS 等级的消息, 它们的顺序也被保留 4.7 主题名和主题过滤器 Topic Names and Topic Filters 主题通配符 Topic wildcards 主题层级 (topic level) 分隔符用于将结构化引入主题名 如果存在分隔符, 它将主题名分割 为多个主题层级 topic level 订阅的主题过滤器可以包含特殊的通配符, 允许你一次订阅多个主题 主题过滤器中可以使用通配符, 但是主题名不能使用通配符 ] 主题层级分隔符 Topic level separator 斜杠 ( / U+002F) 用于分割主题的每个层级, 为主题名提供一个分层结构 当客户端订阅指定的主题过滤器包含两种通配符时, 主题层级分隔符就很有用了 主题层级分隔符可以出现在主题过滤器或主题名字的任何位置 相邻的主题层次分隔符表示一个零长度的主题层级 多层通配符 Multi-level wildcard 数字标志 ( # U+0023) 是用于匹配主题中任意层级的通配符 多层通配符表示它的父级和任意数量的子层级 多层通配符必须位于它自己的层级或者跟在主题层级分隔符后面 不管哪种情况, 它都必须是主题过滤器的最后一个字符 ] 非规范评注例如, 如果客户端订阅主题 sport/tennis/player1/#, 它会收到使用下列主题名发布的消息 : sport/tennis/player1 73

74 第四章 操作行为 sport/tennis/player1/ranking sport/tennis/player1/score/wimbledon 非规范评注 sport/# 也匹配单独的 sport, 因为 # 包括它的父级 # 是有效的, 会收到所有的应用消息 sport/tennis/# 也是有效的 sport/tennis# 是无效的 sport/tennis/#/ranking 是无效的 单层通配符 加号 ( + U+002B) 是只能用于单个主题层级匹配的通配符 在主题过滤器的任意层级都可以使用单层通配符, 包括第一个和最后一个层级 然而它必须占据过滤器的整个层级 ] 可以在主题过滤器中的多个层级中使用它, 也可以和多层通配符一起使用 非规范评注例如, sport/tennis/+ 匹配 sport/tennis/player1 和 sport/tennis/player2, 但是不匹配 sport/tennis/player1/ranking 同时, 由于单层通配符只能匹配一个层级, sport/+ 不匹配 sport 但是却匹配 sport/ 非规范评注 + 是有效的 +/tennis/# 是有效的 sport+ 是无效的 sport/+/player1 也是有效的 /finance 匹配 +/+ 和 /+, 但是不匹配 以 $ 开头的主题 Topics beginning with $ 服务端不能将 $ 字符开头的主题名匹配通配符 (# 或 +) 开头的主题过滤器 ] 服务端应该阻止客户端使用这种主题名与其它客户端交换消息 服务端实现可以将 $ 开头的主题名用作其他目的 非规范评注 $SYS/ 被广泛用作包含服务器特定信息或控制接口的主题的前缀 应用不能使用 $ 字符开头的主题 非规范评注 74

75 第四章 操作行为 订阅 # 的客户端不会收到任何发布到以 $ 开头主题的消息 订阅 +/monitor/clients 的客户端不会收到任何发布到 $SYS/monitor/Clients 的消息 订阅 $SYS/# 的客户端会收到发布到以 $SYS/ 开头主题的消息 订阅 $SYS/monitor/+ 的客户端会收到发布到 $SYS/monitor/Clients 主题的消息 如果客户端想同时接受以 $SYS/ 开头主题的消息和不以 $ 开头主题的消息, 它需要同时订阅 # 和 $SYS/# 主题语义和用法 Topic semantic and usage 主题名和主题过滤器必须符合下列规则 : 所有的主题名和主题过滤器必须至少包含一个字符 ] 主题名和主题过滤器是区分大小写的 主题名和主题过滤器可以包含空格 主题名或主题过滤器以前置或后置斜杠 / 区分 只包含斜杠 / 的主题名或主题过滤器是合法的 主题名和主题过滤器不能包含空字符 (Unicode U+0000) [Unicode] ] 主题名和主题过滤器是 UTF-8 编码字符串, 它们不能超过 字节 ] 见 节 除了不能超过 UTF- 编码字符串的长度限制之外, 主题名或主题过滤器的层级数量没有其它限制 匹配订阅时, 服务端不能对主题名或主题过滤器执行任何规范化 (normalization) 处理, 不能修改或替换任何未识别的字符 ] 主题过滤器中的每个非通配符层级需要逐字符匹配主题名中对应的层级才算匹配成功 非规范评注使用 UTF-8 编码规则意味着, 主题过滤器和主题名的比较可以通过比较编码后的 UTF-8 字节或解码后的 Unicode 字符 非规范评注 ACCOUNTS 和 Accounts 是不同的主题名 Accounts payable 是合法的主题名 /finance 和 finance 是不同的 如果订阅的主题过滤器与消息的主题名匹配, 应用消息会被发送给每一个匹配的客户端订阅 主题可能是管理员在服务端预先定义好的, 也可能是服务端收到第一个订阅或使用那个主题名的应用消息时动态添加的 服务端也可以使用一个安全组件有选择地授权客户端使用某个主题资源 75

76 第四章 操作行为 4.8 错误处理 Handling errors 除非另有说明, 如果服务端或客户端遇到了协议违规的行为, 它必须关闭传输这个协议违规控制报文的网络连接 ] 客户端或服务端实现可能会遇到瞬时错误 (Transient Error)( 例如内部缓冲区满了的情况 ) 导致无法成功处理 MQTT 报文 如果客户端或服务端处理入站控制报文时遇到了瞬时错误, 它必须关闭传输那个控制报文的网络连接 ] 如果服务端发现了瞬时错误, 它不应该断开连接或者执行任何对其它客户端有影响的操作 项目主页 MQTT 协议中文版 76

77 第五章 安全 第五章安全 目录 第一章 - 介绍第二章 MQTT 控制报文格式第三章 MQTT 控制报文第四章 操作行为第五章 安全第六章 使用 WebSocket 第七章 一致性目标附录 B - 强制性规范声明 5.1 概述 本章的内容仅供参考, 是非规范化的 然而, 强烈推荐提供 TLS 的服务端实现应该使用 TCP 端口 8883(IANA 服务名 :secure-mqtt) 解决方案提供者需要考虑很多风险 例如 : 设备可能会被盗用客户端和服务端的静态数据可能是可访问的 ( 可能会被修改 ) 协议行为可能有副作用 ( 如计时器攻击 ) 拒绝服务攻击通信可能会被拦截 修改 重定向或者泄露虚假控制报文注入 MQTT 方案通常部署在不安全的通信环境中 在这种情况下, 协议实现通常需要提供这些机制 : 用户和设备身份认证服务端资源访问授权 MQTT 控制报文和内嵌应用数据的完整性校验 MQTT 控制报文和内嵌应用数据的隐私控制作为传输层协议,MQTT 仅关注消息传输, 提供合适的安全功能是实现者的责任 使用 TLS [RFC5246] 是比较普遍的选择 除了技术上的安全问题外, 还有地理因素 ( 例如美国欧盟安全港原则 [USEUSAFEHARB]), 行业标准 ( 例如第三方支付行业数据安全标准 [PCIDSS]), 监管方面的考虑 ( 例如萨班斯 - 奥克斯利法案 [SARBANES]) 等问题 77

78 第五章 安全 5.2 MQTT 解决方案 : 安全和认证 MQTT solutions: security and certification 协议实现可能想要符合特定的工业安全标准, 如 NIST 网络安全框架 [NISTCSF], 第三方支付行业数据安全标准 [PCIDSS], 美国联邦信息处理标准 [FIPS1402] 和 NSA 加密组合 B [NSAB] 在 MQTT 的补充出版物 (MQTT and the NIST Framework for Improving Critical Infrastructure Cybersecurity [MQTT NIST]) 中可以找到在 NIST 网络安全框架 [NISTCSF] 中使用 MQTT 的指导 使用行业证明 独立审计和认证技术有助于满足合规要求 5.3 轻量级的加密与受限设备 Lightweight cryptography and constrained devices 广泛采用高级加密标准 [AES] 数据加密标准 [DES] 推荐使用为受限的低端设备特别优化过的轻量级加密国际标准 ISO [ISO29192] 5.4 实现注意事项 Implementation notes 实现和使用 MQTT 时需要考虑许多安全问题 下面的部分不应该被当作是一个核对清单 协议实现可以实现下面的一部分或全部 : 客户端身份验证 Authentication of Clients by the Server CONNECT 报文包含用户名和密码字段 实现可以决定如何使用这些字段的内容 实现者可以提供自己的身份验证机制, 或者使用外部的认证系统如 LDAP [RFC4511] 或 OAuth [RFC6749], 还可以利用操作系统的认证机制 实现可以明文传递认证数据, 混淆那些数据, 或者不要求任何认证数据, 但应该意识到这会增加中间人攻击和重放攻击的风险 节介绍了确保数据私密的方法 在客户端和服务端之间使用虚拟专用网 (VPN) 可以确保数据只被授权的客户端收到 使用 TLS [RFC5246] 时, 服务端可以使用客户端发送的 SSL 证书验证客户端的身份 实现可以允许客户端通过应用消息给服务端发送凭证用于身份验证 客户端授权 Authorization of Clients by the Server 78

79 第五章 安全 基于客户端提供的信息如用户名 客户端标识符 (ClientId) 客户端的主机名或 IP 地址, 或 者身份认证的结果, 服务端可以限制对某些服务端资源的访问 服务端身份验证 Authentication of the Server by the Client MQTT 协议不是双向信任的, 它没有提供客户端验证服务端身份的机制 但是使用 TLS [RFC5246] 时, 客户端可以使用服务端发送的 SSL 证书验证服务端的身份 从 单 IP 多域名提供 MQTT 服务的实现应该考虑 RFC6066 [RFC6066] 第 3 节定义的 TLS 的 SNI 扩 展 SNI 允许客户端告诉服务端它要连接的服务端主机名 实现可以允许服务端通过应用消息给客户端发送凭证用于身份验证 在客户端和服务端之间使用虚拟专用网 (VPN) 可以确保客户端连接的是预期的服务器 控制报文和应用消息的完整性 Integrity of Application Messages and Control Packets 应用可以在应用消息中单独包含哈希值 这样做可以为 PUBLISH 控制报文的网络传输和静态 数据提供内容的完整性检查 TLS [RFC5246] 提供了对网络传输的数据做完整性校验的哈希算法 在客户端和服务端之间使用虚拟专用网 (VPN) 连接可以在 VPN 覆盖的网络段提供数据完整 性检查 控制报文和应用消息的保密性 Privacy of Application Messages and Control Packets TLS [RFC5246] 可以对网络传输的数据加密 如果有效的 TLS 密码组合包含的加密算法为 NULL, 那么它不会加密数据 要确保客户端和服务端的保密, 应避免使用这些密码组合 应用可以单独加密应用消息的内容 这可以提供应用消息传输途中和静态数据的私密性 但 不能给应用消息的其它属性如主题名加密 客户端和服务端实现可以加密存储静态数据, 例如可以将应用消息作为会话的一部分存储 在客户端和服务端之间使用虚拟专用网 (VPN) 连接可以在 VPN 覆盖的网络段保证数据的私 密性 消息传输的不可抵赖性 Non-repudiation of message transmission 79

Chapter #

Chapter # 第三章 TCP/IP 协议栈 本章目标 通过本章的学习, 您应该掌握以下内容 : 掌握 TCP/IP 分层模型 掌握 IP 协议原理 理解 OSI 和 TCP/IP 模型的区别和联系 TCP/IP 介绍 主机 主机 Internet TCP/IP 早期的协议族 全球范围 TCP/IP 协议栈 7 6 5 4 3 应用层表示层会话层传输层网络层 应用层 主机到主机层 Internet 层 2 1 数据链路层

More information

WH-GM35-MQTT版-AT配置命令手册V1.01

WH-GM35-MQTT版-AT配置命令手册V1.01 MQTT-AT 配置命令手册 上海稳恒电子科技有限公司 1 / 10 www.mokuai.cn 版权声明 本手册版权属于上海稳恒, 任何人未经我公司书面同意复制 引用或者修改本手册都将承担法律责任 目录 1.1 通用参数配置 AT 命令说明 :...3 1.2 AT+CLIENTID: 配置设备 ID...3 1.3 AT+IPPORT: 配置 MQTT 服务器...3 1.4 AT+USERPWD:

More information

目 录(目录名)

目  录(目录名) 目录 目录...1-1 1.1 域名解析配置命令... 1-1 1.1.1 display dns domain... 1-1 1.1.2 display dns dynamic-host... 1-1 1.1.3 display dns server... 1-2 1.1.4 display ip host... 1-3 1.1.5 dns domain... 1-4 1.1.6 dns resolve...

More information

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP #

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP # iptables 默认安全规则脚本 一 #nat 路由器 ( 一 ) 允许路由 # iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT ( 二 ) DNAT 与端口转发 1 启用 DNAT 转发 # iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 dprot 422 -j DNAT to-destination

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

ARP ICMP

ARP ICMP ARP ICMP 2 9-1 ARP 9-2 ARP 9-3 ARP 9-4 ICMP 9-5 ICMP 9-6 ICMP 9-7 ICMP 3 ARP ICMP TCP / IP, IP ARP ICMP 3 IP, ARP ICMP IP ARP ICMP 2, 4 9-1 ARP, MAC, IP IP, MAC ARP Address Resolution Protocol, OSI ARP,,

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

財金資訊-80期.indd

財金資訊-80期.indd IPv6 / LINE YouTube TCP/IP TCP (Transmission Control Protocol) IP (Internet Protocol) (node) (address) IPv4 168.95.1.1 IPv4 1981 RFC 791 --IP IPv4 32 2 32 42 IP (Internet Service Provider ISP) IP IP IPv4

More information

计算机网络实验说明

计算机网络实验说明 计算机网络实验说明 龚旭东 电三楼 420 lzgxd@mailustceducn 2011 年 11 月 1 日 龚旭东 (TA) 计算机网络实验说明 2011 年 11 月 1 日 1 / 20 Outline 1 实验系统介绍 实验环境实验流程 2 实验内容编程实验交互实验观察实验 3 一些控制台命令 4 实验报告说明 龚旭东 (TA) 计算机网络实验说明 2011 年 11 月 1 日 2

More information

Microsoft Word - YDB 064-2011 Vehicle Telematics Service Requirement and General Framework

Microsoft Word - YDB 064-2011 Vehicle Telematics Service Requirement and General Framework 通 信 标 准 类 技 术 报 告 YDB XXX 2010 泛 在 物 联 应 用 汽 车 信 息 服 务 业 务 需 求 和 总 体 框 架 Vehicle Telematic Service Requirement and General Framework 200X XX XX 印 发 中 国 通 信 标 准 化 协 会 目 次 前 言... 错 误! 未 定 义 书 签 1 范 围...

More information

Microsoft PowerPoint - 数据通信-ch1.ppt

Microsoft PowerPoint - 数据通信-ch1.ppt 主 要 内 容 与 基 本 要 求 主 要 内 容 数 据 通 信 与 计 算 机 网 络 计 算 机 网 络 的 发 展 过 程 分 类 以 及 主 要 性 能 指 标 ; 分 组 交 换 的 基 本 原 理 及 其 与 电 路 交 换 报 文 交 换 的 联 系 与 区 别 ; 计 算 机 网 络 的 协 议 与 体 系 结 构 第 1 章 概 述 基 本 要 求 掌 握 分 组 交 换 电 路

More information

/ / (FC 3)...

/ / (FC 3)... Modbus/TCP 1.0 1999 3 29 Andy Swales Schneider aswales@modicon.com ... 2 1.... 3 2.... 3 2.1.. 3 2.2..4 2.3..4 2.4... 5 3.... 5 3.1 0... 5 3.2 1... 5 3.3 2... 6 3.4 / /... 7 4.... 7 5.... 8 5.1 0... 9

More information

中国证券监督管理委员会公告

中国证券监督管理委员会公告 201523 : 1. 1 120 1 200 / 1 APP 2 / 2 8 4 30% 3 APP APP 80% 120 / 4 2 5 2. 2 5 1 1 APP 1.2 / 0.8 / IP 0.4 / 2 0.8G 1%/ 3 2017 3 1 2017 3 31 23 1. WORD, 2 2. PDF 3., WORD PDF 4. 2016 WORD PDF 5. 2016 1

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

...1 What?...2 Why?...3 How? ( ) IEEE / 23

...1 What?...2 Why?...3 How? ( ) IEEE / 23 .... IEEE 1588 2010 7 8 ( ) IEEE 1588 2010 7 8 1 / 23 ...1 What?...2 Why?...3 How? ( ) IEEE 1588 2010 7 8 2 / 23 ...1 What?...2 Why?...3 How? ( ) IEEE 1588 2010 7 8 3 / 23 IEEE 1588 ( ) IEEE 1588 2010

More information

目 录(目录名)

目  录(目录名) 目录 1 域名解析配置命令... 1-1 1.1 域名解析配置命令...1-1 1.1.1 display dns domain... 1-1 1.1.2 display dns dynamic-host... 1-2 1.1.3 display dns proxy table... 1-2 1.1.4 display dns server... 1-3 1.1.5 display ip host...

More information

Simulator By SunLingxi 2003

Simulator By SunLingxi 2003 Simulator By SunLingxi sunlingxi@sina.com 2003 windows 2000 Tornado ping ping 1. Tornado Full Simulator...3 2....3 3. ping...6 4. Tornado Simulator BSP...6 5. VxWorks simpc...7 6. simulator...7 7. simulator

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

Microsoft Word - PPP protocol

Microsoft Word - PPP protocol PIML900/1800 GPRS 使用说明 北京康泰新锐科技发展有限公司 技术支持 : 毕庆贞 2004.08.09 1 本文描述了用 PIML900/1800 模块实现数据传输的协议过程 当利用模块实现据传输时, 模块通过 PPP 协议与 CMNET 网关进行通信, 然后由 CMNET 网关连接到 Internet 一. 协议流程图 拨通 GPRS 后, 用 LCP IPCP 和 CMNET 握手,

More information

第 7 章 下 一 代 网 际 协 议 IPv6 141 足 的 措 施 只 能 是 权 宜 之 计 (3) 路 由 表 膨 胀 早 期 IPv4 的 地 址 结 构 也 造 成 了 路 由 表 的 容 量 过 大 IPv4 地 址 早 期 为 网 络 号 + 主 机 号 结 构, 后 来 引 入

第 7 章 下 一 代 网 际 协 议 IPv6 141 足 的 措 施 只 能 是 权 宜 之 计 (3) 路 由 表 膨 胀 早 期 IPv4 的 地 址 结 构 也 造 成 了 路 由 表 的 容 量 过 大 IPv4 地 址 早 期 为 网 络 号 + 主 机 号 结 构, 后 来 引 入 第 7 章 下 一 代 网 际 协 议 IPv6 本 章 是 有 关 下 一 代 网 际 协 议 IPv6 的 描 述, 重 点 介 绍 IPv6 的 产 生 原 因 IPv6 的 地 址 与 IPv6 首 部 格 式 等 通 过 本 章 的 学 习, 读 者 应 重 点 掌 握 和 理 解 以 下 内 容 : IPv4 向 IPv6 发 展 的 必 然 性 IPv6 的 新 特 性 IPv6 地

More information

IP505SM_manual_cn.doc

IP505SM_manual_cn.doc IP505SM 1 Introduction 1...4...4...4...5 LAN...5...5...6...6...7 LED...7...7 2...9...9...9 3...11...11...12...12...12...14...18 LAN...19 DHCP...20...21 4 PC...22...22 Windows...22 TCP/IP -...22 TCP/IP

More information

TCP/IP TCP/IP OSI IP TCP IP IP TCP/IP TCP/IP

TCP/IP TCP/IP OSI IP TCP IP IP TCP/IP TCP/IP TCP/IP : TCP/IP TCP/IP OSI IP TCP IP IP TCP/IP TCP/IP 1. ASCII EBCDIC Extended Binary-Coded Decimal Interchange Code 2. / (1) (2) Single System Image SSI) (3) I/O (4) 3.OSI OSI Open System Interconnection

More information

C3_ppt.PDF

C3_ppt.PDF C03-101 1 , 2 (Packet-filtering Firewall) (stateful Inspection Firewall) (Proxy) (Circuit Level gateway) (application-level gateway) (Hybrid Firewall) 2 IP TCP 10.0.0.x TCP Any High Any 80 80 10.0.0.x

More information

工程师培训

工程师培训 .1 TCP/IP TCP/IP 1 .2.2.1 Host 1960 S 1970 S Host Low Speed Lines 1970 S 1980 S pc Server Local Interneting 1980 S 1990 S Branch. pc Branch. WAN Branch. pc pc IBM SNA IBM X.25 2 .2.2 OSI OSI Application

More information

一.NETGEAR VPN防火墙产品介绍

一.NETGEAR VPN防火墙产品介绍 NETGEAR VPN NETGEAR 6 http://www.netgear.com.cn - 1 - NETGEAR VPN... 4 1.1 VPN...4 1.2 Dynamic Domain Name Service...4 1.3 Netgear VPN...4 Netgear VPN... 6 2.1 FVS318 to FVS318 IKE Main...7 2.1.1 A VPN

More information

ChinaBI企业会员服务- BI企业

ChinaBI企业会员服务- BI企业 商业智能 (BI) 开源工具 Pentaho BisDemo 介绍及操作说明 联系人 : 杜号权苏州百咨信息技术有限公司电话 : 0512-62861389 手机 :18616571230 QQ:37971343 E-mail:du.haoquan@bizintelsolutions.com 权限控制管理 : 权限控制管理包括 : 浏览权限和数据权限 ( 权限部分两个角色 :ceo,usa; 两个用户

More information

IEC 传输帧格式

IEC 传输帧格式 IEC 60870-5-1 GB GB/T XXXXX XXXX idt IEC 60870-5-1:1990 Telecontrol Equipment and Systems Part 5:Transmission Protocol Section 1: Transmission frame formats ( ) 1998.6.28 2000.2.10 2000.5.7 200x-xx-xx

More information

穨control.PDF

穨control.PDF TCP congestion control yhmiu Outline Congestion control algorithms Purpose of RFC2581 Purpose of RFC2582 TCP SS-DR 1998 TCP Extensions RFC1072 1988 SACK RFC2018 1996 FACK 1996 Rate-Halving 1997 OldTahoe

More information

基于泛在网的智能交通应用系统总体框架

基于泛在网的智能交通应用系统总体框架 ICS 01.040.33 M04 YDB 2010-2623T-YD 中 国 通 信 标 准 化 协 会 标 准 YDB 2010-2623T-YD 通 信 网 支 持 智 能 交 通 系 统 总 体 框 架 General architecture of intelligent transportation system based on telecommunication networks 201X

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

VIDEOJET connect 7000 VJC-7000-90 zh- CHS Operation Manual VIDEOJET connect 7000 zh-chs 3 目 录 1 浏 览 器 连 接 7 1.1 系 统 要 求 7 1.2 建 立 连 接 7 1.2.1 摄 像 机 中 的 密 码 保 护 7 1.3 受 保 护 的 网 络 7 2 系 统 概 述 8 2.1 实 况

More information

1

1 DOCUMENTATION FOR FAW-VW Auto Co., Ltd. Sales & Service Architecture Concept () () Version 1.0.0.1 Documentation FAW-VW 1 61 1...4 1.1...4 2...4 3...4 3.1...4 3.2...5 3.3...5 4...5 4.1 IP...5 4.2 DNSDNS...6

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

11N 无线宽带路由器

11N 无线宽带路由器 http://www.tenda.com.cn 1... 1 1.1... 1 1.2... 1 2... 3 2.1... 3 2.2... 3 2.3... 5 2.4... 6 2.5... 7 2.6... 9 2.6.1 无线基本设置... 9 2.6.2 无线加密设置... 9 2.7... 10 3... 18 3.1... 18 3.2... 19 3.2.1 ADSL 拨号上网设置...

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

百度大数据产品评审

百度大数据产品评审 物联网分布式接入服务百度开放云 ---- 胡云 提纲 物联网背景以及挑战 接入协议比较简介 分布式 MQTT 架构 Router 介绍 分布式 Session 服务高可用性以及数据高可靠性 数据一致性模型 开发过程中遇到问题 IoT 背景 很早就有 IoT 了 40 多年了很多公司已经在这个领域耕耘 一个新型领域 IoT 挑战 规模 未来连接物联网的设备将要达到数 100 亿级别 比如可穿戴式设备,

More information

<B1B1BEA9B9E2BBB7D0C2CDF8BFC6BCBCB9C9B7DDD3D0CFDEB9ABCBBEB4B43F3F12FB6CB293>

<B1B1BEA9B9E2BBB7D0C2CDF8BFC6BCBCB9C9B7DDD3D0CFDEB9ABCBBEB4B43F3F12FB6CB293> 本 次 股 票 发 行 后 拟 在 创 业 板 市 场 上 市, 该 市 场 具 有 较 高 的 投 资 风 险 创 业 板 公 司 具 有 业 绩 不 稳 定 经 营 风 险 高 退 市 风 险 大 等 特 点, 投 资 者 面 临 较 大 的 市 场 风 险 投 资 者 应 充 分 了 解 创 业 板 市 场 的 投 资 风 险 及 本 公 司 所 披 露 的 风 险 因 素, 审 慎 作 出

More information

加密 校验 (Checksum) 新设备设置 络发现.....

加密 校验 (Checksum) 新设备设置 络发现..... 天猫精灵 模拟 模拟尝试 : 协议篇 天猫精灵开发 September 8, 2017 1 加密.......................................... 3 校验 (Checksum)................................. 3 新设备设置...................................... 4 络发现.......................................

More information

1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005

1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005 1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005 1 1...3 2...20 3...28 4...41 5 Windows SQL Server...47 Microsoft SQL Server 2005 DBSRV1 Microsoft SQL Server

More information

EPSON

EPSON NPD 4956-00 TC .... 5....5....5....6 SSL/TLS....7 IP....8....8....9 Web Config...10 Web Config...11 EpsonNet Config...12 EpsonNet Config Windows...13 EpsonNet Config Windows...13 EpsonNet Config - Windows...

More information

9 Internet 10 Internet

9 Internet 10 Internet 1 2 3 4 5 6 Internet 7 8 9 Internet 10 Internet 11 12 1 1.1 1.2 1.3 1.4 1.5 1.6 1.1 1.1.1 20 50 20 60 ARPANET ARPANET Internet 20 70 ISO International Organization for Standardization TCP/IP 20 90 Internet

More information

EC51/52 GSM /GPRS MODEN

EC51/52 GSM /GPRS MODEN EC51/52 GSM /GPRS MODEN AT SMS aoe EC66.com 2004.11 ... 2 1 GSM AT... 3 2 EC51... 4 3 PDU... 4 4 PDU... 5 5... 7 6 TEXT... 8 7... 9 8.... 9 9.... 9 http://www.ec66.com/ 1 AT GPRS Modem SMS AT EC51 EC52

More information

Chap6.ppt

Chap6.ppt Computer Networks v4 cs.sjtu 12/21/12 6 Internet ftp://ftp.cs.sjtu.edu.cn/ybzhang 61 / 110 Computer Networks v4 cs.sjtu 12/21/12 ftp://ftp.cs.sjtu.edu.cn/ybzhang 62 / 110 Computer Networks v4 cs.sjtu 12/21/12

More information

������������������������

������������������������ 怪诞大学入学指南 作者 berlinix 怪诞大学入学指南 是一本小书 大概有10万字左右的篇幅 如果你读过 哈利波特 那我向你保证 比起霍格沃茨魔 法学校学校来 怪诞大学可是毫不逊色 甚至还略胜一筹 因为怪诞大学不仅培养魔法师 而且还培养热心欢快的匠人 热 爱乡村生活的园丁 知识渊博的学者 以及各种职业的各种人才 怪诞大学把知识包裹为漂亮的礼物赠与学生 在学生心里

More information

http://www.tenda.com.cn Tenda 无线网卡说明书 第一章产品简介...1 1.1...1 1.2...1 1.3...1 1.4...2 1.5...2 1.6...2 1.7...4 第二章安装指南...5 第三章使用系统自带的无线配置程序...10 3.1...10 第四章客户端应用程序使用...18 4.1...19 4.1.1...20 4.1.2...21 4.1.3...23

More information

R3105+ ADSL

R3105+ ADSL ... 1 1 1... 1 1 2... 1... 3 2 1... 3 2 2... 3 2 3... 5 2 4... 5 2 4 1... 5... 7 3 1... 7 3 2... 8 3 2 1... 8 3 2 2... 9 3 3... 12 3 3 1... 13 3 3 2 WAN... 16 3 3 3 LAN... 21 3 3 4 NAT... 22 3 3 5... 24

More information

KL DSC DEMO 使用说明

KL DSC DEMO 使用说明 :0755-82556825 83239613 : (0755)83239613 : http://www.kingbirdnet.com EMAIL Good989@163.com 1 1 KB3000 DTU... 3 1.1... 3 1.2... 3 1.3... 3 1.4... 3 2... 4 2.1 GSM/GPRS... 4 2.2... 4 2.3... 5 2.4... 6 2.5...

More information

RxJava

RxJava RxJava By 侦跃 & @hi 头 hi RxJava 扩展的观察者模式 处 观察者模式 Observable 发出事件 Subscriber 订阅事件 bus.post(new AnswerEvent(42)); @Subscribe public void onanswer(answerevent event) {! }! Observable observable = Observable.create(new

More information

第 1 章 概 述 1.1 计 算 机 网 络 在 信 息 时 代 中 的 作 用 1.2 计 算 机 网 络 的 发 展 过 程 *1.2.1 分 组 交 换 的 产 生 *1.2.2 因 特 网 时 代 *1.2.3 关 于 因 特 网 的 标 准 化 工 作 1.2.4 计 算 机 网 络 在

第 1 章 概 述 1.1 计 算 机 网 络 在 信 息 时 代 中 的 作 用 1.2 计 算 机 网 络 的 发 展 过 程 *1.2.1 分 组 交 换 的 产 生 *1.2.2 因 特 网 时 代 *1.2.3 关 于 因 特 网 的 标 准 化 工 作 1.2.4 计 算 机 网 络 在 计 算 机 网 络 ( 第 4 版 ) 课 件 第 1 章 计 算 机 网 络 概 述 郭 庆 北 Ise_guoqb@ujn.edu.cn 2009-02-25 第 1 章 概 述 1.1 计 算 机 网 络 在 信 息 时 代 中 的 作 用 1.2 计 算 机 网 络 的 发 展 过 程 *1.2.1 分 组 交 换 的 产 生 *1.2.2 因 特 网 时 代 *1.2.3 关 于 因 特

More information

<453A5CCEC4B5B55C C41CBAAB2F5D4C6BDD3BFDACAB9D3C3CBB5C3F756312E305F E646F63>

<453A5CCEC4B5B55C C41CBAAB2F5D4C6BDD3BFDACAB9D3C3CBB5C3F756312E305F E646F63> 霜蝉云 接口使用说明 版本 :V1.00 上海霜蝉信息科技有限公司 Shanghai Scicala Information Technology Co.,Ltd http:www.scicala.com E-mail:support@scicala.com 1 目录目录... 2 一 产品概述...3 二 接口功能...3 三 调用规范...3 四 接口方法...4 1. 用户订阅 Subscribe

More information

<4D F736F F D D0ADD2E9B7D6CEF6CBB5C3F7BCB0B2BFB7D6CAB5CFD6D4B4B4FAC2EB2E646F63>

<4D F736F F D D0ADD2E9B7D6CEF6CBB5C3F7BCB0B2BFB7D6CAB5CFD6D4B4B4FAC2EB2E646F63> GT02 协议分析说明及部分实现源代码 (java 版 ) 版本 :1.0 2010.06.21 一收数据部分 服务端收到的都是字节流 ( 字节数组 ), 处理过程中都是 16 进制处理比较方便, 所以要把字节数组转换成 16 进制字符串 使用 Byte2Hex.Bytes2HexString(byte[] readbytes) 将字节数组转换成 16 进制字符串供以后业务流程使用 二收到数据后的解析

More information

Autodesk Product Design Suite Standard 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品

Autodesk Product Design Suite Standard 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品 Autodesk Product Design Suite Standard 20122 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品设计 Autodesk Product Design Suite Standard 版本包包括以下软件产产品

More information

FortiADC SLB Virtual Server L7 方式部署介绍 版本 1.0 时间支持的版本作者状态反馈 2015 年 10 月 FortiADC v4.3.x 刘康明已审核

FortiADC SLB Virtual Server L7 方式部署介绍 版本 1.0 时间支持的版本作者状态反馈 2015 年 10 月 FortiADC v4.3.x 刘康明已审核 FortiADC SLB Virtual Server L7 方式部署介绍 版本 1.0 时间支持的版本作者状态反馈 2015 年 10 月 FortiADC v4.3.x 刘康明已审核 support_cn@fortinet.com 目录 简介... 3 Virtual Server L7 代理部署方式介绍... 3 Virtual Server L7 携带源地址代理部署方式介绍... 5 Fortinet

More information

Converting image (bmp/jpg) file into binary format

Converting image (bmp/jpg) file into binary format RAiO Image Tool 操作说明 Version 1.0 July 26, 2016 RAiO Technology Inc. Copyright RAiO Technology Inc. 2013 RAiO TECHNOLOGY INC. www.raio.com.tw Revise History Version Date Description 0.1 September 01, 2014

More information

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内 A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内 容 分 发 网 络 Alibaba Cloud Content Delivery Network 一

More information

Microsoft Word - 選擇_無解答2_.doc

Microsoft Word - 選擇_無解答2_.doc 選 擇 題 : 1 ( ) 下 列 何 者 為 W W W 的 通 訊 協 定? (A)H T T P ( H y p e r T e x t T r a n s f e r P r o t o c o l ) (B)S M T P ( S i m p l e M a i l T r a n s f e r P r o t o c o l ) (C) F T P ( F i l e T r a n

More information

2 SGML, XML Document Traditional WYSIWYG Document Content Presentation Content Presentation Structure Structure? XML/SGML 3 2 SGML SGML Standard Gener

2 SGML, XML Document Traditional WYSIWYG Document Content Presentation Content Presentation Structure Structure? XML/SGML 3 2 SGML SGML Standard Gener SGML HTML XML 1 SGML XML Extensible Markup Language XML SGML Standard Generalized Markup Language, ISO 8879, SGML HTML ( Hypertext Markup Language HTML) (Markup Language) (Tag) < > Markup (ISO) 1986 SGML

More information

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南 Symantec Sygate Enterprise Protection 防 护 代 理 安 装 使 用 指 南 5.1 版 版 权 信 息 Copyright 2005 Symantec Corporation. 2005 年 Symantec Corporation 版 权 所 有 All rights reserved. 保 留 所 有 权 利 Symantec Symantec 徽 标 Sygate

More information

中文朗科AirTrackTM T600 迷你无线路由器用户手册.doc

中文朗科AirTrackTM T600 迷你无线路由器用户手册.doc AirTrack T600 http://www.netac.com.cn Netac Netac AirTrack OnlyDisk Netac Netac Netac http://www.netac.com.cn Netac 800-830-3662 FCC 15 B 1 2 3 4 / FCC 20cm 1 2 3 / / ...1 1.1...1 1.2...1 1.3...1 1.4...3...4

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

ebook140-9

ebook140-9 9 VPN VPN Novell BorderManager Windows NT PPTP V P N L A V P N V N P I n t e r n e t V P N 9.1 V P N Windows 98 Windows PPTP VPN Novell BorderManager T M I P s e c Wi n d o w s I n t e r n e t I S P I

More information

产品年白皮书

产品年白皮书 浪 潮 BA- 风 险 内 控 V6.0.8 行 政 事 业 版 产 品 白 皮 书 浪 潮 BA- 风 险 内 控 V6.0.8 行 政 事 业 版 产 品 白 皮 书 浪 潮 通 用 软 件 有 限 公 司 www.inspur.com 浪 潮 BA- 风 险 内 控 V6.0.8 行 政 事 业 版 产 品 白 皮 书 目 录 1 产 品 概 述... 2 1.1 总 体 介 绍... 2 1.2

More information

ICS 13.310 A 91 SZDB/Z 深 圳 市 标 准 化 指 导 性 技 术 文 件 SZDB/Z 158 2015 交 通 运 输 行 业 视 频 监 控 联 网 系 统 通 用 技 术 要 求 General technical specification for video monitoring network system of transportation industry in

More information

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0 SDChain-Matrix 节点搭建指南 目录 1 环境要求... 3 2 软件下载... 4 3 安装部署... 4 3.1 部署可执行程序目录... 4 3.2 部署配置文件目录... 4 3.3 部署数据库文件目录... 4 3.4 部署日志文件目录... 4 3.5 部署依赖库文件目录... 4 4 配置参数... 5 5 启动运行... 7 5.1 普通模式启动... 7 5.2 加载启动模式...

More information

網路安全:理論與實務 第二版

網路安全:理論與實務 第二版 第 10 章 :Wireshark 封 包 分 析 軟 體 10-1 Wireshark 簡 介 10-2 Wireshark 的 安 裝 方 法 10-3 Wireshark 的 使 用 Wireshark 簡 介 - 發 展 歷 史 Wireshark (http://www.wireshark.org/) 是 一 個 開 放 原 始 碼 (open source software) 軟 體,

More information

MUGI Ver Copyright c 2001, 2002 Hitachi, Ltd. All rights reserved. 1

MUGI Ver Copyright c 2001, 2002 Hitachi, Ltd. All rights reserved. 1 MUGI Ver. 1.3 2002 5 8 1 1 3 2 3 2.1 Panama... 4 2.2... 5 3 5 3.1... 5 3.2... 5 3.3... 6 3.3.1... 6 3.3.2... 6 3.3.3... 7 3.3.4... 7 4 8 4.1... 8 4.2... 8 4.3... 9 4.3.1... 9 4.3.2... 9 4.4... 9 4.4.1

More information

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt 2004 Marty Hall 服务器响应的生成 : HTTP 状态代码 JSP, Servlet, & Struts Training Courses: http://courses.coreservlets.com Available in US, China, Taiwan, HK, and Worldwide 2 JSP and Servlet Books from Sun Press: http://www.coreservlets.com

More information

目 录(目录名)

目  录(目录名) 1 SIP... 1 1.1 SIP... 1 1.2 SIP... 1 1.3 SIP... 2 2 SIP... 3 2.1... 3 2.2... 4 3 SIP... 6 3.1 SIP... 6 3.2 SIP... 6 3.3... 6 3.3.1... 6 3.3.2... 8 4 SIP... 11 4.1... 11 4.2 1xx... 11 4.3 2xx... 12 4.4

More information

RAQMON Context Setting MG PDA Applications RTP / FTP/ HTTP TCP/UDP S ignaling control plane (e.g. RS VP, NS IS) Streaming Media, Transaction, Bulk dat

RAQMON Context Setting MG PDA Applications RTP / FTP/ HTTP TCP/UDP S ignaling control plane (e.g. RS VP, NS IS) Streaming Media, Transaction, Bulk dat Realtime Application QOS Monitoring (RAQMON) Dan Romascanu dromasca@avaya.com 1 RAQMON Context Setting MG PDA Applications RTP / FTP/ HTTP TCP/UDP S ignaling control plane (e.g. RS VP, NS IS) Streaming

More information

FPGAs in Next Generation Wireless Networks WPChinese

FPGAs in Next Generation Wireless Networks WPChinese FPGA 2010 3 Lattice Semiconductor 5555 Northeast Moore Ct. Hillsboro, Oregon 97124 USA Telephone: (503) 268-8000 www.latticesemi.com 1 FPGAs in Next Generation Wireless Networks GSM GSM-EDGE 384kbps CDMA2000

More information

目 彔 1. 准 备 工 作... 1 2. 登 彔 设 置... 2 3. 功 能 说 明... 4 3.1 实 时 监 控... 4 3.1.1 基 本 控 制... 4 4.1.2 功 能 设 置... 4 3.1.3 画 质 调 节... 6 3.1.4 彔 像 与 抓 拍... 6 3.1

目 彔 1. 准 备 工 作... 1 2. 登 彔 设 置... 2 3. 功 能 说 明... 4 3.1 实 时 监 控... 4 3.1.1 基 本 控 制... 4 4.1.2 功 能 设 置... 4 3.1.3 画 质 调 节... 6 3.1.4 彔 像 与 抓 拍... 6 3.1 嵌 入 式 Web Server 用 户 手 册 V2.0 感 谢 您 选 用 本 公 司 的 产 品, 请 您 在 使 用 本 产 品 前 仔 细 阅 读 用 户 手 册, 本 用 户 手 册 将 为 您 提 供 正 确 的 使 用 说 明 版 权 声 明 : 本 用 户 手 册 版 权 归 天 津 市 亚 安 科 技 股 仹 有 限 公 司 所 有, 未 经 本 公 司 许 可, 仸 何 机 构

More information

FortiGate-v5.2-PPPOE 拨号协商时的 AC-name 和 Service-name 版本 1.0 时间 2015 年 3 月 支持的版本 FortiOS v5.2.x 作者 黄豪赫 状态 已审核 反馈

FortiGate-v5.2-PPPOE 拨号协商时的 AC-name 和 Service-name 版本 1.0 时间 2015 年 3 月 支持的版本 FortiOS v5.2.x 作者 黄豪赫 状态 已审核 反馈 FortiGate-v5.2-PPPOE 拨号协商时的 AC-name 和 Service-name 版本 1.0 时间 2015 年 3 月 支持的版本 FortiOS v5.2.x 作者 黄豪赫 状态 已审核 反馈 support_cn@fortinet.com 1 目 录 简介...3 PPPoE 发现阶段简介...3 相关组件...4 参考文档...4 FortiGate 相关命令介绍...

More information

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO Car DVD New GUI IR Flow User Manual V0.1 Jan 25, 2008 19, Innovation First Road Science Park Hsin-Chu Taiwan 300 R.O.C. Tel: 886-3-578-6005 Fax: 886-3-578-4418 Web: www.sunplus.com Important Notice SUNPLUS

More information

iGENUS爱琴思邮件系统技术白皮书

iGENUS爱琴思邮件系统技术白皮书 igenus 爱 琴 思 邮 件 系 统 技 术 白 皮 书 Http://www.iGENUS.cn 版 权 信 息 igenus 爱 琴 思 邮 件 系 统 版 权 所 有 2009 爱 琴 思 科 技 ( 成 都 ) 有 限 公 司 igenus information technologies Inc.,Chengdu 文 档 保 证 声 明 本 文 档 以 提 供 信 息 为 目 的, 所

More information

ebook 145-6

ebook 145-6 6 6.1 Jim Lockhart Windows 2000 0 C S D Wo r m. E x p l o r e Z i p z i p p e d _ f i l e s. e x e Wo r m. E x p l o r e Z i p H i Recipient Name! I received your email and I shall send you a reply ASAP.

More information

要 及 时 为 入 党 积 极 分 子 确 定 两 名 培 养 联 系 人, 进 行 联 络 帮 助 要 定 期 ( 每 季 度 至 少 一 次 ) 听 取 培 养 联 系 人 的 思 想 和 工 作 情 况 汇 报, 及 时 完 成 入 党 积 极 分 子 登 记 表 ( 见 附 件 2) 的 填

要 及 时 为 入 党 积 极 分 子 确 定 两 名 培 养 联 系 人, 进 行 联 络 帮 助 要 定 期 ( 每 季 度 至 少 一 次 ) 听 取 培 养 联 系 人 的 思 想 和 工 作 情 况 汇 报, 及 时 完 成 入 党 积 极 分 子 登 记 表 ( 见 附 件 2) 的 填 中 共 兰 州 资 源 环 境 职 业 技 术 学 院 委 员 会 文 件 兰 资 环 院 党 发 2016 40 号 关 于 进 一 步 规 范 党 员 发 展 工 作 和 从 严 管 理 党 员 的 通 知 各 系 党 总 支 支 部 : 为 进 一 步 规 范 和 加 强 发 展 党 员 工 作, 从 严 管 理 党 员, 确 保 发 展 党 员 质 量, 提 高 各 基 层 党 组 织 的

More information

<4D F736F F D20B1D0A87CB3A1C5E9A87CB870B8C9A755B1C0B0CABEC7AED5C5E9A87CB942B0CAB56FAE69B867B64FADECAB682E646F6378>

<4D F736F F D20B1D0A87CB3A1C5E9A87CB870B8C9A755B1C0B0CABEC7AED5C5E9A87CB942B0CAB56FAE69B867B64FADECAB682E646F6378> 教 育 部 體 育 署 補 助 推 動 學 校 體 育 運 動 發 展 經 費 原 則 中 華 民 國 98 年 1 月 6 日 教 育 部 臺 體 ( 一 ) 字 第 0970252252C 號 令 發 布 中 華 民 國 100 年 1 月 26 日 教 育 部 臺 體 ( 三 ) 字 第 1000001924C 號 令 發 布 中 華 民 國 101 年 4 月 5 日 教 育 部 臺 體 (

More information

水晶分析师

水晶分析师 大数据时代的挑战 产品定位 体系架构 功能特点 大数据处理平台 行业大数据应用 IT 基础设施 数据源 Hadoop Yarn 终端 统一管理和监控中心(Deploy,Configure,monitor,Manage) Master Servers TRS CRYSTAL MPP Flat Files Applications&DBs ETL&DI Products 技术指标 1 TRS

More information

劳动保护与医疗保健 第 二 章 止标志共 23 个 劳 动 安 全 技 术 22 2 警告标志 由于三角形引人注目 故用作 警告 标志 警告人们注意可能发生的多种危险 三角的背景使用黄色 三角图形和三角内的图像均用黑色描 绘 黄色是有警告含义的颜色 在对比色黑色的衬托下 绘成的 警告标志 就更引人注目 3 指令标志 在圆形内配上指令含义的颜色 蓝 色 并用白色绘制必须执行的图形符号 构成 指令标志

More information

untitled

untitled 18 2006 J 1982 N CD-ROM "fl N J "fl J [ ])( N "fl N N ( ) - 5 - J *1 N [ ] http://www.sinica.edu.tw/ftms-bin/ftmsw3 http://www.sinica.edu.tw/ftms-bin/kiwi1/pkiwi.sh UTF-8 3.0 Big5+ [ ] http://www.lingshidao.com/gushi/index.htm

More information

安徽电子工程学校

安徽电子工程学校 学 校 德 育 全 程 路 线 图 重 点 项 目 实 施 细 则 执 行 文 件 安 徽 电 子 工 程 学 校 第 一 部 分 学 校 德 育 教 育 全 程 路 线 图 重 点 项 目 实 施 进 度 表 一 年 级 德 育 课 项 目 名 入 学 -- 期 中 -- 寒 假 -- 期 中 -- 选 修 课 备 注 称 期 中 期 末 期 中 期 末 新 生 档 案 管 理 首 次 见 面 会

More information

目 录 专 稿 季 烨 文 革 之 初 北 京 师 大 二 附 中 的 红 色 暴 力 姜 培 良 之 死 与 仇 恨 教 育 评 论 唐 燕 关 于 北 京 女 十 中 教 师 孙 迪 之 死 给 王 友 琴 纠 错 校 史 王 逸 伦 编 辑 合 肥 市 第 六 中 学 校 史 关 于 文 革

目 录 专 稿 季 烨 文 革 之 初 北 京 师 大 二 附 中 的 红 色 暴 力 姜 培 良 之 死 与 仇 恨 教 育 评 论 唐 燕 关 于 北 京 女 十 中 教 师 孙 迪 之 死 给 王 友 琴 纠 错 校 史 王 逸 伦 编 辑 合 肥 市 第 六 中 学 校 史 关 于 文 革 记 忆 121 期 教 育 专 辑 ( 二 ) 1 目 录 专 稿 季 烨 文 革 之 初 北 京 师 大 二 附 中 的 红 色 暴 力 姜 培 良 之 死 与 仇 恨 教 育 评 论 唐 燕 关 于 北 京 女 十 中 教 师 孙 迪 之 死 给 王 友 琴 纠 错 校 史 王 逸 伦 编 辑 合 肥 市 第 六 中 学 校 史 关 于 文 革 中 的 记 忆 述 往 刘 海 鸥 书 声 朗 朗

More information

bingdian001.com

bingdian001.com 1... 1 1.1... 1 1.2... 1 1.3... 1 1.4... 1 1.5... 1 1.6... 1 2... 1 2.1... 1 2.2... 2 2.3... 2 3... 2 4... 3 4.1... 3 4.1.1... 3 1.... 3 2.... 3 3.... 3 4.... 3 5.... 3 6.... 3 7.... 3 8.... 4 9.... 4

More information

C6_ppt.PDF

C6_ppt.PDF C01-202 1 2 - (Masquerade) (Replay) (Message Modification) (Denial of Service) - ( ) (Eavesdropping) (Traffic Analysis) 8 1 2 7 3 6 5 4 3 - TCP SYN (SYN flood) Smurf Ping of Death LAND Attack Teardrop

More information

ebook71-13

ebook71-13 13 I S P Internet 13. 2. 1 k p p p P P P 13. 2. 2 1 3. 2. 3 k p p p 1 3. 2. 4 l i n u x c o n f P P P 13. 2. 5 p p p s e t u p 13. 2. 6 p p p s e t u p P P P 13. 2. 7 1 3. 2. 8 C a l d e r a G U I 13.

More information

Slide 1

Slide 1 网络编程提升篇 MQTT : 物联网领域的即时通讯 目录 基础知识 具体示例 示例代码讲解 注意事项 基础知识 基础知识 MQTT(Message Queuing Telemetry Transport, 消息队列遥测传输协议 ), 是一种基于发布 / 订阅 (publish/subscribe) 模式的 轻量级 通讯协议, 该协议构建于 TCP/IP 协议上, 由 IBM 在 1999 年发布 MQTT

More information

Olav Lundström MicroSCADA Pro Marketing & Sales 2005 ABB - 1-1MRS755673

Olav Lundström MicroSCADA Pro Marketing & Sales 2005 ABB - 1-1MRS755673 Olav Lundström MicroSCADA Pro Marketing & Sales 2005 ABB - 1 - Contents MicroSCADA Pro Portal Marketing and sales Ordering MicroSCADA Pro Partners Club 2005 ABB - 2 - MicroSCADA Pro - Portal Imagine that

More information

目 录 1 正 文 乊 前... 5 1.1 目 癿... 5 1.2 本 文 内 容... 5 1.3 声 明... 5 2 字 符 编 码 相 兰 癿 背 景 知 识... 6 2.1 拉 丁 字 母... 6 2.2 什 么 是 字 符 编 码... 6 3 字 符 编 码 标 准... 8

目 录 1 正 文 乊 前... 5 1.1 目 癿... 5 1.2 本 文 内 容... 5 1.3 声 明... 5 2 字 符 编 码 相 兰 癿 背 景 知 识... 6 2.1 拉 丁 字 母... 6 2.2 什 么 是 字 符 编 码... 6 3 字 符 编 码 标 准... 8 关 键 字 字 符 编 码 详 解 版 本 : 1.0 作 者 : crifan 邮 箱 : green-waste (at)163.com 字 符 编 码,ASCII,ISO 8859,ISO 10646,UCS,Unicode,UTF-8 版 本 版 本 日 期 内 容 更 新 1.0 2011-11-02 添 加 了 编 码 相 兰 背 景 知 识 仃 绉 添 加 了 ASCII 和 EASCII

More information

untitled

untitled Lwip Swedish Institute of Computer Science February 20, 2001 Adam Dunkels adam@sics.se (QQ: 10205001) (QQ: 329147) (QQ:3232253) (QQ:3232253) QQ ARM TCPIP LCD10988210 LWIP TCP/IP LWIP LWIP lwip API lwip

More information

編 輯 室 手 札 Editor Navigation 刑 事 資 訊 科 技 再 造 整 合 分 析 犯 罪 情 資 文 / 編 輯 室 刑 事 資 訊 科 技 的 發 展, 從 最 初 定 位 於 犯 罪 資 料 電 子 數 位 化, 再 隨 著 犯 罪 手 法 科 技 化 的 趨 勢, 刑 事 資 訊 科 技 在 犯 罪 偵 查 工 作 上 的 角 色 也 愈 顯 重 要, 刑 事 資 訊 業

More information

weblogic

weblogic Weblogic Allen Long allen@huihoo.com http://www.huihoo.com 2004-04 1 WebLogic, WLS WLS Domain 2 Weblogic6.1 Weblogic6.1 J2EE1.2,J2EE1.3 HTTP 1.1 J2EE Connector Architecture 1.0 J2EE EJB 2.0 J2EE JDBC 2.0

More information

EPSON

EPSON NPD5265-00 TC .... 5....5....5....6 SSL/TLS....7....7 IP....8....8....8.... 9 Web Config...10 Web Config....11 EpsonNet Config...12 EpsonNet Config Windows...13 EpsonNet Config Windows...13 EpsonNet Config

More information

发展党员材料填写参考(上网).doc

发展党员材料填写参考(上网).doc 华 中 科 技 大 学 党 员 发 展 材 料 填 写 参 考 中 共 华 中 科 技 大 学 委 员 会 组 织 部 2010 年 3 月 31 日 目 录 1 党 员 发 展 材 料 一 览 表... 1 2 入 党 志 愿 书 填 写 参 考... 2 3 申 请 入 党 积 极 分 子 培 养 考 察 登 记 表 填 写 参 考... 13 4 华 中 科 技 大 学 发 展 党 员 综 合

More information

Microsoft Word - A200811-1988.doc

Microsoft Word - A200811-1988.doc RTS 游 戏 的 流 量 特 性 分 析 李 程 北 京 邮 电 大 学 宽 带 网 络 监 控 教 研 中 心, 北 京 (8) E-mail:quickiecheng@gmail.com 摘 要 : 随 着 网 络 游 戏 日 益 流 行, 网 络 游 戏 的 流 量 在 网 络 中 的 分 量 越 来 越 多, 所 以 对 网 络 游 戏 的 流 量 特 性 分 析 就 很 有 意 义 本

More information

ebook140-11

ebook140-11 11 VPN Windows NT4 B o r d e r M a n a g e r VPN VPN V P N V P N V P V P N V P N TCP/IP 11.1 V P N V P N / ( ) 11.1.1 11 V P N 285 2 3 1. L A N LAN V P N 10MB 100MB L A N VPN V P N V P N Microsoft PPTP

More information

生命科学学院2015-2016学年度学风建设实施方案

生命科学学院2015-2016学年度学风建设实施方案 生 命 科 学 学 院 2016-2017 学 年 度 学 风 建 设 实 施 方 案 学 风 是 学 校 治 学 精 神 治 学 态 度 和 治 学 原 则 的 综 合 体 现, 是 形 成 良 好 院 风 校 风 的 基 础 和 前 提, 是 培 养 高 素 质 人 才 的 关 键 学 风 的 好 坏 直 接 影 响 到 教 学 改 革 的 步 伐 和 教 学 质 量 的 提 高, 影 响 到

More information

AL-M200 Series

AL-M200 Series NPD4754-00 TC ( ) Windows 7 1. [Start ( )] [Control Panel ()] [Network and Internet ( )] 2. [Network and Sharing Center ( )] 3. [Change adapter settings ( )] 4. 3 Windows XP 1. [Start ( )] [Control Panel

More information

NeoGate_TG_Series_UserManual_en

NeoGate_TG_Series_UserManual_en 版本 V1.0 日期 :2015-03-12 厦门朗视信息科技有限公司 1. 概述 该协议允许外部程序控制 TG 网关发送 / 接收短信及发送 USSD 2. TG 配置 在使用 NeoGate TG API 之前, 您需要先登陆 NeoGate TG 网页启用 API 并设置 API 的用户名密码和允许通过 API 端口访问 TG 设备的 IP 地址 启用 SMS API: 勾选用户名 : 自定义,

More information