物联网的初衷之一是通过大数据的采集分析去颠覆交通、运输、物流、能源等生产生活的每个方面。一般而言,物联网遇到的最大的问题是环境的不稳定性,也就是没有稳定的电源,并且无线网络的带宽、延时、丢包等问题都比较突出。
因此,物联网领域一般使用轻量级的协议,如知名的消息协议 MQTT、XMPP、CoAP 协议。今天,我们来了解下 CoAP 协议概述和报文结构。
01 CoAP 协议概述
1.CoAP 协议定义
先来了解下什么是 CoAP。
CoAP 协议定义:CoAP 是受限制的应用协议 (Constrained Application Protocol) 的代名词。
对于那些物联网的设备而言,要接入互联网非常困难。在当前由 PC 机组成的世界,信息交换是通过 TCP 和应用层协议 HTTP 实现的。但是对于物联网小型设备而言,实现 TCP 和 HTTP 协议显然是一个过分的要求。
对于物联网而言,CoAP 这种轻量级的协议可以更好适配,CoAP 并不能替代 HTTP 协议,但是对于那些小设备(256KB Flash 32KB RAM 20MHz 主频)而言,CoAP 的确是一个更好的解决方案。
2.CoAP 协议在 NB-IoT 网络协议栈中的位置
来看看下图:
从图中可以看出 CoAP 是一个应用层协议。
3.CoAP 协议特点:
CoAP 协议特点可以从以下几个方面了解:
CoAP 协议网络传输层当前主要支持 UDP
CoAP 是二进制格式的,HTTP 是文本格式的,CoAP 比 HTTP 更加紧凑
轻量化,CoAP 最小长度仅 4 个字节,一个 HTTP 的头部达几十个字节
支持可靠传输,数据重传,块传输。 确保数据可靠到达
支持 IP 多播, 即可以同时向多个设备发送请求
非长连接通信,适用于低速率、低功耗物联网场景
CoAP 基于 REST,服务器的资源地址和互联网一样也有类似 URI 的格式,客户端同样有 POST,GET,PUT,DELETE 方法来访问 server,但是相对 HTTP 简化实现降低复杂度(代码更小,封包更小)
4.RESTful 架构
REST(Representational State Transfer)是一种设计风格而不是标准ÿ