物联网协议(传输协议和通信协议):基础——IOT(物联网)的七大通信协议_口袋里的跳跳糖-CSDN博客_物联网通信协议
物联网的通信环境有Ethernet, Wi-Fi, RFID, NFC(近距离无线通信), Zigbee, 6LoWPAN(IPV6低速无线版本),Bluetooth, GSM, GPRS, GPS, 3G, 4G等网络。
为什么构建物联网场景系统开发用MQTT协议比http协议适合?
首先,在一些计算和硬件资源比较充沛的设备上,比如运行安卓操作系统的设备,完全可以使用HTTP协议上传和下载数据,就好像在开发移动应用一样。设备也可以使用运行在HTTP协议上的WebSocket主动接收来自服务器的数据。但是在大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯中,MQTT比http更合适。
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型,是一个无状态的协议。所有的WWW文件都必须遵守这个标准。
1、HTTP协议是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)的,通常承载于TCP协议栈之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。默认HTTP的端口号为80,HTTPS的端口号为443。
2、HTTP协议永远都是客户端发起请求,服务器回送响应。HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。
3、工作流程:一次HTTP操作称为一个事务,其工作过程可分为四步:
1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。
MQTT(消息队列遥测传输)是一种开放式OASIS和ISO标准的轻量级发布订阅网络协议,可在设备之间传输消息,是当下使用广泛的物联网通信协议之一。
1、基于TCP协议的应用层协议
2、角色:代理端(Droker),客户端(Client)
3、订阅/发布模式:支持多客户端采用发布/订阅(subscribe/publish)形式进行通信, 代理端负责信息中转;将消息的发送方和接受方解耦;收发消息都是异步的,发送方不需要等待接收方应答。
4、主题:用于对消息进行分类,是一个UTF-8字符串,可进行分级。
5、服务质量(QOS):服务质量是为不同应用程序,用户或数据流提供的不同优先级的能力:
- Qos0. 最多一次传送 (只负责传送,发送过后就不管数据的传送情况)
- Qos1. 至少一次传送 (确认数据交付)
- Qos2. 正好一次传送 (保证数据交付成功)
MQTT-SN(MQTT for Sensor Network)协议是MQTT协议的传感器版本。MQTT协议虽然是轻量的应用层协议,但是MQTT协议是运行于TCP协议栈之上的,TCP协议对于某些计算能力和电量非常有限的设备来说,比如传感器,就不太适用了。
1、基于UDP协议的应用层协议
2、保留了MQTT协议的大部分信令和特性,如订阅和发布等。
3、MQTT-SN协议引入了MQTT-SN网关这一角色,网关负责把MQTT-SN协议转换为MQTT协议,并和远端的MQTT Broker进行通信。MQTT-SN协议支持网关的自动发现。
http不合适之处:
1、实现成本高,实时性差:由于必须由设备主动向服务器发送数据,难以主动向设备推送数据。对于单单的数据采集等场景还勉强适用,但是对于频繁的操控场景,只能推过设备定期主动拉取的的方式,实现成本和实时性都大打折扣。
2、 安全性不高:web的不安全都是妇孺皆知,HTTP是明文协议,在很多要求高安全性的物联网场景,如果不做很多安全准备工作(如采用https等),后果不堪设想。
3、设备受限性:不同于用户交互终端如pc、手机,物联网场景中的设备多样化,对于运算和存储资源都十分受限的设备,http协议实现、XML/JSON数据格式的解析,都是不可能的任务。
mqtt优势:低协议开销,对不稳定网络的容忍,低功耗,数百万个连接客户端,推送通知,客户端平台差异,防火墙容错。
1、采用代理通信的方式, 解耦了发布消息的客户(发布者)与订阅消息的客户(订阅者)之间的关系
2、发布者、订阅者不必了解彼此,只需认同一个代理
3、发布者、订阅者不需要交互,无须等待消息确认
4、发布者、订阅者不要要同时在线,可自由选择时间消费消息