当今物联网的主流通信协议是CoAP/LWM2M协议和MQTT协议,本文将分别解读这些协议的工作方式,了解它们的特点,助您选择最适合您的设备的通信协议。
通信协议又称为传输协议,用于定义多个设备之间传播信息时的系统标准。通信协议定义了设备通信中的语法、语义、同步规则和发生错误时的处理原则,可以理解为机器之间使用的语言。
在物联网场景中,通信主要发生在设备和物联网平台之间,由于大部分物联网设备都是资源受限型设备,它们的物理资源和网络资源都非常有限,直接使用现有的HTTP协议进行通信对它们来说要求实在是太高了。因此,物联网场景中主要使用的通信协议都是轻量级的,为资源受限环境而设计的通信协议,例如CoAP/LWM2M协议和MQTT协议。
本文将分别解读CoAP/LWM2M协议和MQTT协议,希望能帮助您了解这些协议,并选择最适合您的设备的通信协议。
CoAP/LWM2M协议
CoAP(Constrained Application Protocol,受限制的应用协议)运行于UDP协议之上,设计上主要借鉴了HTTP协议的RESTful风格,简化了协议包格式,一个最小的CoAP数据包仅4字节。CoAP协议采用了和HTTP协议相同的请求/响应模型,客户端发出请求后,服务端处理请求并回复响应,是一种点对点的通信模型。CoAP和HTTP一样都是通过URI指定要访问的资源,但CoAP协议以“coap:”或“coaps:”开头,其中coaps的s是指消息通过DTLS协议加密。CoAP的每一条消息都是一条二进制的报文,由以下部分组成:
VER:长度2位,用于表示CoAP协议的版本号。
T:长度2位,用于表示报文类型。CoAP协议定义了四种报文类型:
CON:需要应答的报文,接受者收到该消息后需要及时回复一个ACK报文。
NON:无需应答的报文。
ACK:应答报文。
RST:复位报文,当接受者无法解析收到的报文或收到的报文中含有错误时,