您好,欢迎访问三七文档
MQTT协议说明eric.xiaoericssonxiao@gmail.com谁创造了MQTT协议?在1999年,来自IBM公司的AndyStanford-Clark和来自Arcom(现在改名为Eurotech)公司的ArlenNipper创造了MQTT协议。DrAndyStanford-ClarkArlenNipperMQTT协议的发展历程标准化组织•2013年3月,MQTT协议提交到OASIS组织并不断演进过程中。•MQTT协议规格书被公开发布,它使用免版税的许可证,Eurotech公司(之前的名字是Arcom)在他们的产品中实现了这个协议。•在2011年11月IBM和Eurotech公司对外宣布加入EclipseM2MIndustry工作组并捐赠MQTT代码给EclipsePaho项目组。MQTT协议在物联网中的位置什么是MQTT协议?MQTT是消息队列遥感传输协议的缩写(MessageQueueingTelemetryTransportProtocol).•基于轻量级代理的发布/订阅协议•开放•简单•容易实现所以它能够应用在资源受限的环境中.例如:•传感器•手机移动设备及平板电脑•物联网(IoT)发布/订阅协议发布/订阅协议(简单的场景)发布/订阅消息模式支持广播MQTT协议规格书MQTT协议规格书•MQTTv3.1--MQTTV3.1协议规格书它是一个基于TCP/IP协议的,可提供发布/订阅消息模式的,十分轻量级的通信协议•MQTTv3.0--MQTTV3.0协议规格书它是一个基于TCP/IP协议的,可提供发布/订阅消息模式的,十分轻量级的通信协议•MQTT-SNv1.2--MQTTforSensorNetworksV1.2协议规格书它是一个基于非TCP/IP协议的(例如:ZigBee协议),专门为嵌入式设备提供消息通信模式的协议设计原理和假设条件•简单,简单,简单!•发布/订阅消息传递•零管理,零配置•低带宽占用•预料并且满足网络的频繁中断带来的问题。(低带宽,高等待时间,不可靠,高成本的网络)•可提供持续的会话•客户端仅需做有限的处理工作,即可使用•在环境许可的情况下,可提供传统的QoS服务•无严格的数据内容的规定MQTT协议的特性是什么?•使用发布/订阅消息通信模式来提供一对多的分布式消息和解耦合的应用•在消息传输过程中提供与消息内容无关的有效载荷•基于TCP/IP协议的基础网络连接•提供三种QoS的消息传递质量:a.最多一次(Atmostonce)b.最少一次(Atleastonce)c.仅仅一次(Exactlyonce)•很小的传输费用开销(固定头部的消息仅仅2个字节),和很少的协议交换来减少网络传输通信量•使用约定的机制来提醒相关各方,客户端产生了一个异常的连接断开三种消息传递的QoS质量QualitiesofService在什么场景下使用MQTT协议?•间歇性的连接•昂贵的带宽•需要与一个或多个手机终端进行通信的企业级应用•在不使用代码处理逻辑的情况下,使手机和平板电脑有可靠的数据传输•确保消息的有效分发•很低的等待响应时间谁正在使用MQTT协议?企业级应用:1.WebSphereMQByIBM特性:它能使用消息的形式传输任何数据,使SOA商业系统架构更加灵活可靠2.GaianDB特性:分布式联邦数据库使用生物启发自组织原理来减少管理3.LAMAByIBMExtremeBlueProject全名:LocationAwareMessagingforAccessibility特性:在2006年作为IBM’sExtremeBlue项目的一部分,LAMA是一个可提供给人们感兴趣的东西和位置点的系统4.SiSiByIBMExtremeBlueProject全名:SayIt,SignIt特性:在2007年作为IBM’sExtremeBlue项目的一部分,SiSi帮助聋哑人将语音转换为英国手语(BSL),通过MQTT和Java来实现谁正在使用MQTT协议?智慧家居:1.AndySC'sTwittering/AutomatedHouse2.PowerMonitoring3.LightingControl4.Gardening5.Energymonitoringwithanold-styleanalogammeter6.Android/TV/Burglardetectionsystem7.CisecoOpenKontrolGateway8.WarmDirt9.homA10.StJudeMedicalCisecoOpenKontrolGateway谁正在使用MQTT协议?移动端应用:1.FacebookMessenger•FacebookMessenger使用MQTT协议,使得手机与手机之间的通信更加快捷,节省手机电源和带宽•MQTT可以使用在iOSiPhone,iPad,Android和Windows应用程序中。MQTT-SN(MQTTForSensorNetworks)•MQTT-SNv1.2--MQTTfor传感器网络V1.2协议规格书它是一个基于非TCP/IP协议的(例如:ZigBee协议),专门为嵌入式设备提供消息通信模式的协议MQTT-S综述•MQTT-S协议设计和MQTT协议很相似-例如:使用MQTT语义•传感器网络中每个节点是客户端,这些客户端通过网关与基于IP网络的MQTT代理进行通讯•网关可以在MQTT-S与MQTT之间传输数据•专为无线传感器网络架构及数据传输而设计的协议MQTTvsMQTT-S简单客户端QoS=-1MQTT-S网关--MQTT代理MQTT-S网关--MQTT代理支持MQTT协议的服务器•IBMWebsphereMQTelemetry•IBMMessageSight•IBMIntegrationBus•Mosquitto•EclipsePaho•EurotechEverywhereDeviceCloud•Xively•eMQTT•m2m.io•webMethodsNirvanaMessaging•RabbitMQ•ApacheActiveMQ•ApacheApollo•Moquette•HiveMQ•Mosca•LitmusAutomationLoop支持MQTT协议的服务器性能对比图支持MQTT协议的客户端Device-Specific:•Arduino•mbed•mbed(simpleportoftheArduinopubsubclient)•Nanode•Netduino•M2MQTT(workswith.NetMicroFramework)Actionscript:•as3MQTTC:•EclipsePaho•libmosquitto•libemqtt-anembeddedCclientC++:•libmosquittoppClojure:•MachineHeadDart:•mqtt.dartDelphi:•TMQTTClientErlang:•erlmqtt•mqtt4erl•my-mqtt4erl-updatedforkofmqtt4erl支持MQTT协议的客户端Java:•EclipsePaho•XenqttIncludesaclientlibrary,mockbrokerforunit/integrationtesting,andapplicationstosupportenterpriseneedslikeusingaclusterofserversasasingleclient,anHTTPgateway,etc.•MeQanTT•Fusesourcemqtt-client•moquette•MA9Bzipof1/2dozenmobileclientssourcecode.IncludesAndroid-optimizedJavasourcethatworkswithAndroidnotifications,basedonPaho•IA92-deprecatedIBMIA92supportpack,useEclipsePahoGUIclientinstead.AusefulMQTTJavaswingGUIforpublishing&subscribing.TheEclipsePahoGUIisidenticalbutusesnewerclientcodeMQTTClientsLibrarysJavscript/Node.js:•EclipsePahoHTML5JavaScriptforMQTToverWebSocket.•mqtt.js•node_mqtt_client•IBM-providedPhoneGap/ApacheCordovaMQTTplug-inforAndroid-JavaScriptAPIisidenticaltoEclipsePahoHTML5JavaScript•mosquittowebsocketclient(deprecated,useEclipsePaho)•Ascoltatori-anode.jspub/sublibrarythatallowsaccesstoRedis,AMQP,MQTTandZeroMQwiththesameAPI.LotusScript:•MQTTfromLotusScriptLua:•EclipsePahoLuaclient•mqtt_lua(deprecatedusePaho)MQTTClientsLibrarys.NET/dotNET:•MqttDotNet•nMQTT•M2MQTTPerl:•net-mqtt-perl•anyevent-mqtt-perl•WebSphere-MQTT-ClientPHP:•phpMQTT•Mosquitto-PHPObjective-C:•mqttIO-objC•libmosquitto-viawrappers•MQTTKit•MA9Bzipof1/2dozenmobileclientssourcecodeincludingObjective-CPython:•EclipsePahoPythonclient-originallythemosquittoPythonclient•python-mosquitto(deprecatedusePahocode)•nyamuk•MQTTfortwistedpythonRuby:•ruby-mqtt•em-mqtt消息格式FixedHeaderMessageTypeDUPFlagQoS消息格式FixedHeaderRemainingLength消息命令列表•CONNECT•CONNACK•PUBLISH•PUBACK•PUBREC•PUBREL•PUBCOMP•SUBSCRIBE•SUBACK•UNSUBSCRIBE•UNSUBACK•PINGREC•PINGRESP•DISCONNECT一个简单的样例(服务器与客户端)服务器端MosquittoBrokerv3.1它是一个开源的MQTT代理•mosquitto--thebroker•mosquitto.conf--brokerconfiguration•mosquitto_passwd--toolformanagingmosquittopasswordfiles•mosquitto_tls--veryroughcheatsheetforhelpingwithSSL/TLS•mosquitto_pub--commandlineclientforpublishing•mosquitto_sub--commandlineclientforsubscribing客户端PahoMQTTClient来自于Eclipse物联网工作组•Cclient•C++client•Javaclient•JavaScriptclient•Luaclient•Pythonclient样例:介绍Mosquitto服务器/消息代理•1883端口--thestandardunencrypte
本文标题:MQTT协议说明
链接地址:https://www.777doc.com/doc-4280672 .html