说到工业物联网协议,我们要了解物联网协议中有哪些种类的协议。
物联网协议是指在物联网环境中用于设备间通信和数据传输的协议。根据不同的作用,物联网协议大体上可分为传输协议、行业协议。
传输协议:一般负责子网内设备间以及设备到的组网及通信。例如TCP,UDP,HTTP,MQTT等。这些协议能够确保在网络上传输的数据的安全性和可靠性。
行业协议:某个行业范围内统一的标准协议。例如车联网 JT/T808、视频GB/T 28181等一些国标协议。
本章我们主要讨论的是其中的传输协议。
下面列举一些常见协议以及各个协议的优缺点
UDP
UDP通信基于IP协议,将数据源IP、目的地IP和端口以及数据封装成数据包,大小限制在64KB内,直接发送出去。接收端只负责接收数据包,无所谓是哪个发送端的数据包。UDP通信的过程相对简单,不需要建立连接和进行数据包的顺序传输,因此它的传输速度较快,适用于对实时性要求较高的应用。
数据传输效率高,数据传输速度快。
不会增加网络负担。
适用于实时性要求高的数据传输场景。
数据传输不可靠,数据可能会丢失。
不支持拥塞和流量控制机制,容易导致网络拥堵。
不支持错误恢复和重传机制,无法保证数据完整性。
主要应用于实时数据传输和设备之间的快速通信,包括实时视频和音频流传输、传感器数据采集和控制信号发送、广播和组播等。由于UDP协议具有低时延、少开销、无需建立连接等特点,能够满足物联网中对快速传输和实时性要求高的应用场景。
TCP
首先,客户端发送一个SYN(同步)包,向服务器请求建立连接。服务器在收到SYN包后,回复一个SYN-ACK(同步-确认)包,表明已收到客户端的请求,并准备好建立连接。最后,客户端回复一个ACK(确认)包,表明已经收到服务器的回复,连接建立成功。
建立连接后,数据包的传输通过序列号和确认应答来进行。每个数据包都有一个序列号和一个确认号,序列号表示这个数据包的数据在整个数据流中所处的位置,确认号表示接收端期望接收的下一个数据包的序列号。当发送端发送数据时,会按照序列号的顺序进行发送,接收端收到数据后会回复一个ACK确认包,表示已经接收到该数据包。如果发送端没有收到ACK确认包,则会重复发送该数据包,直到收到ACK为止。
当要断开连接时客户端会向服务端发送一个带有FIN(结束)标志的数据包,表示不在发送数据;服务段收到FIN后,回复一个带有ACK标志的数据包给客户端,表示收到关闭请求,服务端再完成数据发送后也会给客户端发送一个FIN标志的数据包,表时服务端也准备关闭连接,客户端收到服务器的FIN后会返回一个ACK给服务端,表示收到。此时双方关闭连接完成。
数据传输可靠性高,数据不会丢失。
支持流量控制和拥塞控制,避免网络拥堵。
支持错误恢复和重传机制,可保证数据传输准确性。
建立连接及断开连接需要消耗大量时间,因此会增加网络负担。
数据传输效率较低,数据传输速度较慢。
不适用于实时性要求高的数据传输场景。
在实际使用中,基本上是使用基于TCP的一些应用层协议,如MQTT,HTTP。
HTTP
HTTP是基于TCP的封装,并且规定了请求、响应的报文格式,HTTP是无状态协议,每个请求都是独立的,即服务端不需要记录客户端的状态。
成熟稳固:HTTP是互联网上使用最广泛的协议之一,有大量的工具和库支持。
无状态:默认情况下,HTTP是无状态的,每次请求之间都是独立的,不会保留之前的状态。
灵活强大:HTTP支持各种类型的媒体,还有方法如GET、POST等用于不同的操作。
基于文本:HTTP是基于文本的,便于查看和调试。
由于必须由设备主动向服务器发送数据,难以主动向设备推送数据。
不同于用户交互终端如pc、手机,物联网场景中的设备多样化,对于运算和存储资源都十分受限的设备,http协议实现、XML/JSON数据格式的解析,都是不可能的任务。
适用于对设备硬件和网络带宽充裕的场景需要与云平台进行通信的设备。
MQTT
MQTT协议的底层原理是基于TCP/IP协议栈的,通过三个主要组件实现通信:客户端、代理(Broker)和主题(Topic)。客户端作为发布者或订阅者发送和接收消息,代理则负责转发消息,主题用于标识消息主体的类别。可以通过指定Qos用于确保消息在不同网络环境下的可靠性和可用性。
QoS 0:最多一次。消息发布不会进行重传,不保证可靠性,可能会导致消息的丢失。
QoS 1:至少一次。消息发布可能会进行重传,确保消息至少传输一次,但可能会导致消息的重复。
QoS 2:恰好一次。消息发布会进行重传,确保消息恰好传输一次,但可能会导致消息的重复。
MQTT通信机制主要包括连接建立、发布、订阅和断开连接四个步骤。连接建立阶段包括客户端与代理之间的握手和认证,建立起可靠的连接。发布阶段是指客户端向代理发送消息的过程,可以选择指定消息的主题和质量等级。订阅阶段是指客户端对特定主题感兴趣并请求接收相关消息的过程。断开连接阶段则是客户端与代理之间的连接结束,释放相关网络资源。
轻量级:协议设计简洁,网络带宽占用极低。
灵活性:可以通过不同的QoS级别和持久化会话来适应不同的应用场景。
可扩展性:支持广播和多播,可以实现多设备之间的协同通信。
可靠性:提供不同的QoS级别,确保消息的可靠传递。
在工业物联网传输协议这个范围内几乎没有。
MQTT 是基于发布/订阅模式的,对消息的可靠性依赖于 QoS(服务质量)等级的设置。虽然 QoS 1 和 QoS 2 提供了消息传输的确认机制,但在网络不稳定或高负荷的情况下,可能会导致消息丢失或重复传输的问题。
MQTT 是为低带宽和高延迟网络环境设计的,适用于传感器设备等物联网设备的通信。但在大规模消息传输或高吞吐量需求的情况下,可能会面临性能瓶颈。
虽然 MQTT 提供了即时的消息传输能力,但并不保证实时性,因为消息传输的速度受到网络延迟和各种 QoS 级别的影响。
适用于 低功耗,延迟高,不稳定网络。
为物联网行业推荐协议之一,广泛应用于智能硬件、车联网、能源、电力等场景。如果设备支持,可优先选用。
小结
在行业中还有较多用到的协议,笔者水平有限便不一一列举,其中不足望广大读者留言指正。
以上四种协议其中UDP,TCP为传输层协议,MQTT,HTTP为应用层协议。传输层为数据传输的根本,应用层使数据在传输的过程中更方便,快捷,规范。
传输层和应用层的区别
传输层和应用层的区别,传输层是通过连接或者无连接的方式通过网络将数据直接由一个位置传输到另一个位置,应用层则是在传输层的基础上对数据进行包装,其更规范,更标准。我们将协议比作货物的话,应用层协议就好比火车,但我们想让货物完好运到目的地,就需要做打包、装车、验货、入库、签回单等工作。这些工作也就是应用层协议要做的工作。