MQTT-SN协议乱翻之简要介绍】的更多相关文章

前言 这一段时间在翻看MQTT-SN的协议,对针对不依赖于TCP传输的MQTT协议十分感兴趣,总是再想着这货到底是怎么定义的.一系列文章皆有MQTT-SN 1.2协议所拼装组成,原文档地址: MQTT-SN_spec_v1.2.pdf MQTT-SN文档分为7个部分,我直接按照从前到后的顺序,直接组装成四个小篇.嗯,若放在一篇文章中,文字太长,造成排版难度. 非直译,完全按照自己理解整理而成,请知晓. 版本变迁历史 2007-11-29 1.0版本 2008-6-5 1.1版本,增加休眠设备支持…
前言 这里简单做一些小结和对比,针对前面的协议翻译部分,一阶段的学习完结. MQTT-SN VS MQTT MQTT-SN基于MQTT原有语义,但做了很多的调整.比如: 一个CONNECT消息被拆分为3个消息 主题名称需要使用主题标识符替代 * 网关地址可以广播.查询得知 MQTT-SN 与 MQTT对比,使用一张图介绍 比较类型 MQTT MQTT-SN 传输类型 可靠点对点流模式 不可靠的数据报 通信方式 TCP/IP Non-IP 或 UDP 网络传输 Ethernet, WiFi, 3G…
前言 紧接上文,这是第三篇,主要是对MQTT-SN 1.2协议进行总体性功能描述. 嗯,这一部分可以结合着MQTT协议对比着来看. 网关的广播和发现 网关只能在成功连接到MQTT Server之后,才能够周期性的在无线个人区域网WPNs内对所有客户端广播ADVERTISE消息,便于客户端被动知道网关的存在. 在同一网络下,多个拥有不同Id的网关可有同时运行中,但会由客户端根据信号强弱决定连接具体网关,无论何时只能连接一个网关. 客户端可维护一份可用网关列表(包含网关地址),在接收到包含有新的网关…
前言 紧接着上篇初步介绍,本文为第二篇,主要梳理MQTT-SN 1.2协议中定义的消息格式. 通用消息格式 消息头 其它可变部分 2/4字节表示 N字节组成 消息头部 长度 消息类型 1或3个字节 1个字节 长度要么是1个字节,要么3个字节表示,并且自身也会包含在其内.一个字节可表示256长度,一般情况下,完全够用了. 只需要判断第一个字节是否为 0x01,若是那么长度为3个字节表示,剩下的两个字节会表示真正的消息长度,最大长度为65535 否则长度就是一个字节表示,256个长度,大部分消息长度…
前言 本篇是MQTT-SN 1.2协议最后一篇翻译了,主要涉及实现要点,很简短. 需要支持QoS 值为 -1 QoS虽默认设置有0,1,2三个值,但还有一种情况其值为-1.来自客户端的PUBLISH消息中若QoS为-1的情况下,此刻客户端不会关心和网关有没有建立连接,也不在乎时间点,有消息就需要发出去.透明的网关需要维护此类消息并与远程的MQTT Server建立一个专用TCP连接.聚合网关或hybird混杂网关可使用已有的MQTT Server连接转发此类消息. 定时器和计时器实践建议 定时器…
1. 网络基础 TCP/IP 通常使用的网络是在TCP/IP协议簇基础上运作的. HTTP属于它内部的一个子集. TCP/IP分为4个层次, 应用层, 传输层, 网络层, 链路层. (Application layer, Transport layer, Internet layer, Link layer) 按层次分, IP位于网络层. IP协议的作用是包各种数据包传送给对方, 要正确传送数据包, 需要满足 2个重要的条件: IP地址和MAC地址. ARP协议可以把IP地址解析成MAC地址.…
在互联网时代HTTP协议的重要性无需多言,对于技术岗位的同学们来说理解掌握HTTP协议是必须的.本篇博客就从HTTP协议的演进.特性.重要知识点和工作中常见问题的总结等方面进行简单的介绍.理解掌握了这些点工作中就OK了,当然在面试中也是少不了的,如果能结合实践掌握这篇博客的80%应对一般的面试应该是够了.如果要深入学习HTTP协议的细节请看那本经典的<HTTP权威指南>. 一.HTTP协议的演进 HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它…
加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了.     言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书.     如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorithm,安全散列算法) HMAC(Hash Message Authentication Code,…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8852432 我们知道,Android应用程序是运行在Dalvik虚拟机里面的,并且每一个应用程序对应有一个单独的Dalvik虚拟机实例.除了指令集和类文件格 式不同,Dalvik虚拟机与Java虚拟机共享有差不多的特性,例如,它们都是解释执行,并且支持即时编译(JIT).垃圾收集(GC).Java本地 方法调用(JNI)和Java远程调试协议(…
本篇内容简要介绍BASE64.MD5.SHA.HMAC几种加密算法.     BASE64编码算法不算是真正的加密算法.     MD5.SHA.HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法,我们称之为单向加密算法.我们通常只把他们作为加密的基础.单纯的以上三种的加密并不可靠. BASE64 按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式.(The Base64 Content-Trans…