MQTT协议
清尘TG
形而上者谓之道,形而下者谓之器!
展开
-
MQTT协议笔记之连接和心跳
前言本篇会把连接(CONNECT)、心跳(PINGREQ/PINGRESP)、确认(CONNACK)、断开连接(DISCONNECT)和在一起。CONNECT像前面所说,MQTT有关字符串部分采用的修改版的UTF-8编码,CONNECT可变头部中协议名称、消息体都是采用修改版的UTF-8编码。前面基本上可变头部内容不多,下面是一个较为完整的CONNECT消息结构:转载 2016-11-28 09:36:40 · 1206 阅读 · 0 评论 -
MQTT协议笔记之头部信息
前言MQTT(Message Queue Telemetry Transport),遥测传输协议,提供订阅/发布模式,更为简约、轻量,易于使用,针对受限环境(带宽低、网络延迟高、网络通信不稳定),可以简单概括为物联网打造,官方总结特点如下:1.使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。2. 对负载内容屏蔽的消息传输。3. 使用 TCP/IP 提供网络连接。4转载 2016-11-28 09:32:10 · 490 阅读 · 0 评论 -
MQTT-SN协议乱翻之小结篇
前言这里简单做一些小结和对比,针对前面的协议翻译部分,一阶段的学习完结。MQTT-SN VS MQTTMQTT-SN基于MQTT原有语义,但做了很多的调整。比如: 一个CONNECT消息被拆分为3个消息 主题名称需要使用主题标识符替代 * 网关地址可以广播、查询得知MQTT-SN 与 MQTT对比,使用一张图介绍比较类型MQTTMQTT-SN转载 2016-11-28 09:52:58 · 552 阅读 · 0 评论 -
MQTT-SN协议乱翻之实现要点
前言本篇是MQTT-SN 1.2协议最后一篇翻译了,主要涉及实现要点,很简短。需要支持QoS 值为 -1QoS虽默认设置有0,1,2三个值,但还有一种情况其值为-1。来自客户端的PUBLISH消息中若QoS为-1的情况下,此刻客户端不会关心和网关有没有建立连接,也不在乎时间点,有消息就需要发出去。透明的网关需要维护此类消息并与远程的MQTT Server建立一个专用TCP连转载 2016-11-28 09:51:54 · 452 阅读 · 0 评论 -
MQTT-SN协议乱翻之功能描述
前言紧接上文,这是第三篇,主要是对MQTT-SN 1.2协议进行总体性功能描述。嗯,这一部分可以结合着MQTT协议对比着来看。网关的广播和发现网关只能在成功连接到MQTT Server之后,才能够周期性的在无线个人区域网WPNs内对所有客户端广播ADVERTISE消息,便于客户端被动知道网关的存在。在同一网络下,多个拥有不同Id的网关可有同时运行中,但会由客户端根据信号强弱转载 2016-11-28 09:50:11 · 514 阅读 · 0 评论 -
MQTT-SN协议乱翻之消息格式
前言紧接着上篇初步介绍,本文为第二篇,主要梳理MQTT-SN 1.2协议中定义的消息格式。通用消息格式消息头其它可变部分2/4字节表示N字节组成消息头部长度消息类型1或3个字节1个字节长度要么是1个字节,要么3个字节表示,并且自身也会包含在其内。一个字节可转载 2016-11-28 09:49:25 · 745 阅读 · 0 评论 -
MQTT-SN协议乱翻之简要介绍
前言这一段时间在翻看MQTT-SN的协议,对针对不依赖于TCP传输的MQTT协议十分感兴趣,总是再想着这货到底是怎么定义的。一系列文章皆有MQTT-SN 1.2协议所拼装组成,原文档地址: MQTT-SN_spec_v1.2.pdfMQTT-SN文档分为7个部分,我直接按照从前到后的顺序,直接组装成四个小篇。嗯,若放在一篇文章中,文字太长,造成排版难度。非直译,完全按照自己理解整理而成转载 2016-11-28 09:48:14 · 705 阅读 · 0 评论 -
MQTT 3.1.1,值得升级的6个新特性
前言以前看英文文章或资料,看完之后,摘要或者忘记。这一次选择感兴趣的MQTT 3.1.1介绍文章资料,引文见文末,作为练手;非完全翻译,去除掉一些广告性描述,若侵权,请告知。在沉寂了四年之后,QTT 3.1.1规范于2014年10月30号正式发布,与此同时MQTT 3.1.1已成为OASIS(结构化信息标准促进组织)开放物联网消息传递协议标准(连接1 连接2),换种说法就是MQTT转载 2016-11-28 09:46:03 · 344 阅读 · 0 评论 -
MQTT 3.1协议非严肃反思录
前言MQTT 3.1协议在弱网络环境下(比如2G/3G等)表现不够好,因此才有了反思。弱网环境下表现手机等终端在弱网络环境下丢包情况会非常明显,连接MQTT Server成功率很低。相比单纯的请求-相应模型的HTTP,其成功率会比MQTT订阅成功高很多。手机终端在每次TCP断开或断网后,会即刻发起TCP重连,连接成功,会重复以前步骤依次发送连接命令(CONNECT)转载 2016-11-28 09:45:05 · 655 阅读 · 0 评论 -
MQTT协议笔记之mqtt.io项目HTTP协议支持
前言MQTT协议诞生之初,就未曾考虑通过HTTP传输。这也正常,网络受限、不稳定网络不太适合HTTP(2G/3G网络大家使用WAP不也OK嘛)。在网络较为充裕的桌面端而言,虽纯文本对比二进制而言没多大优势,受制于历史遗留和使用习惯,以及一大票传统基础设施方便控制事宜,传统互联网/企业型应用,HTTP协议都是默认最佳选择,安全可控,人机友好。选择HTTP也在情理之中。虽桌面端日渐式微转载 2016-11-28 09:43:52 · 677 阅读 · 0 评论 -
MQTT协议笔记之mqtt.io项目Websocket协议支持
前言MQTT协议专注于网络、资源受限环境,建立之初不曾考虑WEB环境,倒也正常。虽然如此,但不代表它不适合HTML5环境。HTML5 Websocket是建立在TCP基础上的双通道通信,和TCP通信方式很类似,适用于WEB浏览器环境。虽然MQTT基因层面选择了TCP作为通信通道,但我们添加个编解码方式,MQTT Over Websocket也可以的。这样做的好处,MQTT的转载 2016-11-28 09:43:00 · 503 阅读 · 0 评论 -
MQTT协议笔记之mqtt.io项目TCP协议支持
前言MQTT定义了物联网传输协议,其标准倾向于原始TCP实现。构建于TCP的上层协议堆栈,诸如HTTP等,在空间上多了一些处理路径,稍微耗费了CPU和内存,虽看似微乎其微,但对很多处理能力不足的嵌入式设备而言,选择原始的TCP却是最好的选择。但单纯TCP不是所有物件联网的最佳选择,提供构建与TCP基础之上的传统的HTTP通信支持,尤其是浏览器、性能富裕的桌面涉及领域,还是企业最 可转载 2016-11-28 09:41:39 · 1112 阅读 · 0 评论 -
MQTT协议笔记之订阅
前言记忆不太好的时候,只能翻看以前的文章/笔记重新温习一遍,但找不到MQTT协议有关订阅部分的描述,好不容易从Evernote中找到贴出来,这样整个MQTT协议笔记,就比较齐全了。SUBSCRIBE一般来讲,客户端在成功建立TCP连接之后,发送CONNECT消息,在得到服务器端授权允许建立彼此连接的CONNACK消息之后,客户端会发送SUBSCRIBE消息,订阅感兴趣的To转载 2016-11-28 09:40:51 · 266 阅读 · 0 评论 -
MQTT协议笔记之消息流
前言前面的笔记已把所有消息类型都过了一遍,这里从消息流的角度尝试解读一下。网络故障在任何网络环境下,都会出现一方连接失败,比如离开公司大门那一刻没有了WIFI信号。但持续连接的另一端-服务器可能不能立即知道对方已断开。类似网络异常情况,都有可能在消息发送的过程中出现,消息发送出去,就丢失了。MQTT协议假定客户端和服务器端稳定情况一般,彼此之通信管道不可靠,一旦客户转载 2016-11-28 09:39:15 · 303 阅读 · 0 评论 -
MQTT协议笔记之发布流程
前言这次要讲到客户端/服务器的发布消息行为,与PUBLISH相关的消息类型,会在这里看到。PUBLISH客户端发布消息经由服务器分发到所有对应的订阅者那里。一个订阅者可以订阅若干个主题(Topic name),但一个PUBLISH消息只能拥有一个主题。消息架构一览: Description76543转载 2016-11-28 09:37:56 · 347 阅读 · 0 评论 -
[经验] 物联网项目开发必读 深度分析MQTT协议优缺点
物联网并不仅仅是一种网络,而是一个新的生态环境,它描述的本质是越来越多的使用物品通过网络连接在一起并可使用单个或者多个的终端设备对它们进行各种控制和使用—当然,工业上的物联网通常连接到的石鼓传感器或者其他数据采集仪器以及行为单位。思科曾经预测过,物联网市场的规模可能在14万亿美金左右,前景极为光明。众所周知,物联网是在传统互联网基础上延伸和扩展而出的概念,用户端从传统的计算机延伸和扩展到了转载 2017-01-22 17:15:07 · 40656 阅读 · 0 评论