博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MQTT协议理解
阅读量:5013 次
发布时间:2019-06-12

本文共 1722 字,大约阅读时间需要 5 分钟。

1.MQTT协议概念理解

MQTT(Message Queuing Telemetry Transprot,消息队列遥测传输协议),是一种基于发布/订阅模式的“轻量级” 通讯协议,该协议构建于 TCP/IP协议上,由IBM1999年发布。MQTT最大的优点在于,可以极少的 代码和有限的带宽,为连接远程的设备提供实时可靠的消息服务。作为一种低开小、低带宽占用的即时通讯协议,使其了物联网、小型设备、移动应用等方面有较广泛的应用。

2.1 MQTT的协议实现方式

实现MQTT协议需要: 客户端和服务器端。
MQTT 协议中有三种身份:发布者(Pulish),代理者(Booler)(服务器)、订阅者(Subscribe)。其中消息的发布者和订阅者都是客户端,消息代理是服务器端,消息发布可以同时是订阅者。
MQTT传输的消息分为:主题(Topic)和负载(Payload)两部分
Topic,可以理解为消息的订阅类型,订阅者订阅后,就会收到该主题的消息内容
Payload,可以理解为消息的内容,是指订阅者具体要使用的内容

2.2网络传输与应用消息

MQTT会构建底层网络传输:它将建立客户端到服务器的连接。提供两者之间的一个有序无损的基于字节流的双向传输。当应用数据通过MQTT网络发送时,MQTT会把与之相关的 服务质量(Qos)和主题名(Topic)想关联。

2.3MQTT客户端

一个使用MQTT协议的应用程序或者设备,它总是建立到服务器的网络连接。客户端可以:
发布其他客户端可能会订阅的 消息
退订或删除应用程序的消息
订阅其他客户端发布的消息

2.4MQTT服务器

MQTT服务器以称为“消息代理(Broker)”,可以是一个应用程序或一台设备。它是 位于消息发布和订阅者的之间。可以
接收来自客户端的网络连接
接收客户发布的应用消息
处理来自客户端的订阅和退订请求
向订阅的客户转发应用程序消息

2.5MQTT协议中的订阅、主题、和会话

订阅(Subscription)
订阅包含 主题筛选器(Topic Filter)和大量的服务质量(QOS)。订阅会与一个会话(Session)关联。一个会话可以 包含多个订阅。每个 会话都会有一个不同的主题筛选器。
会话(Session)
每个 客户端与服务器建立连接后就是一个会话,客户端与服务器之间的状态交互。会话存在于一个网络之间,也可能在客户端和服务器之间跨越多个连续的网络连接。
主题名(Topic Name)
连接到一个应用程序的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给 订阅所匹配标签的每个客户端。
主题筛选器(Topic Filter)
一个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。
负载(Payload)
消息订阅者所需接收的内容

2.6MQTT协议中的方法

MQTT协议中定义了一些方法(动作),来与表示对确定资源所进行操作。这个资源可以代表预先存在的数据或者动态生成数据。这取决于服务器的实现。通常来说,资源指服务器上的文件或者输出。
Connect,等待与服务器建立连接
Disconnect 等待MQTT客户端完成所做的工作,并且与服务器断开TCP/IP会话
Subscribe, 等待完成订阅
UnSubcribe 等待服务器取消客户端的一个或多个topic订阅
Publish MQTT客户端发送请求,完成后返回应用程序线程

2.特点

MQTT是基于客户端-服务器的消息发布/订阅传输协议。MQTT是轻量级、简单、开放和易于实现的,这些特点使他适用范围广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在。通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化的设备中已广泛使用。
MQTT协议当前版本为2014年发布的MQTTv3.1.1。除标准版以外,还用一个简化的MQTT-SN该协议主要针对嵌入式设备,这些设备一般工作于TCP/IP网络,如:ZigBee。

转载于:https://www.cnblogs.com/cjxltd/p/7125795.html

你可能感兴趣的文章
display:flow-root
查看>>
判读字符串是否为空的全局宏-分享
查看>>
iOS中Block的基础用法
查看>>
mac 终端 使用ftp命令
查看>>
22-reverseString-Leetcode
查看>>
Centos 开机自动联网
查看>>
cocos2dx使用lua和protobuf
查看>>
HDOJ 5630 Rikka with Chess
查看>>
netcore2.1 在后台运行一个任务
查看>>
PostgreSQL pg_hba.conf 文件简析
查看>>
android o logcat read: unexpected EOF!
查看>>
[Scrum]2010/12/28 —— 第一天!
查看>>
ASP.NET MVC模式 温习(一)排除MVC模式误区
查看>>
Mysql的read_only 只读属性说明 (运维笔记)
查看>>
DOCKER 从入门到放弃(五)
查看>>
Python 多线程学习
查看>>
appcan官方ajax
查看>>
获取NVIDIA显卡的温度
查看>>
Dijkstra算法
查看>>
Deep Learning 9: Performance
查看>>