一、UDP协议介绍
UDP(User Datagram Protocol, 用户数据报协议),无连接的传输层协议,提供面向事务的简单不可靠信息传输服务。强调传输性能而不是传输完整性,多用于视频和多媒体应用。
2.1 报文格式
2.2 协议特点
- 无连接:
- 不可靠传输:消息尽力传播,但不关注是否传输过去
- 面向数据报:以数据报为传输的基本单位,不拆分、不合并、原样发送
- 全双工:一条路径双向通信,既能读,也能写
- 大小受限:UDP协议首部有2个字节,16位的长度内容,限制了UDP传输数据最大长度为64K(含UDP首部)
- 缓冲区:UDP只有接收缓冲区,没有发送缓冲区
二、物联网中实战
不同物联网平台对协议中所承载的业务内容均有自己的规范,但原理基本一致,本文基于中国电信AIoT物联网平台进行实战。
2.1 在物联网平台创建产品设备
具体操作流程可见平台操作手册
重点关注:
- 创建产品时,通信协议选择UDP
- 创建产品时,“是否透传”,选择透传或者物模型,将对应不同的上下行报文格式。透传:平台对报文不进行解析,将报文透传给应用或终端;物模型:按照在平台定义的服务与属性,对上下行报文进行解析。(https://img-blog.csdnimg.cn/direct/d73abe3f1bf04acbada68b35c964bd3f.jpeg)
2.2 交互流程
设备登录
-
用户在通用组件服务添加设备,填写设备编号。通用组件服务生成device ID和特征串。device ID由产品ID和设备编号拼接生成。设备初始状态为:已注册。
-
设备携带deviceId、password(平台生成的特征串)登录到平台
-
平台对设备进行认证,并将认证结果返回给设备。认证成功后,设备状态为:已激活、在线。
心跳保活
- 平台默认心跳周期为5分钟,心跳超时之前,设备需要发送心跳报文到平台用于会话的延长。超时而没有发送心跳报文的,平台将删除会话。
数据上报
- 设备以0x04消息类型上报数据,平台解析后会以0x84回复响应结果。
下行指令
设备登出
3. 设备登出需要发送登出请求,携带deviceId,平台收到请求后删除会话,并向设备发送登出响应。设备状态更新为:下线。
2.3 报文格式(下文转自官方手册)
消息格式
应用层数据报文以1个字节的类型字段作为分割,平台支持登录、心跳、上下行业务数据、登出等消息类型。消息携带的参数必须包含两个字节的参数长度。
UDP报文Payload包含三部分内容:
消息