0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

COAP协议的双层模型及其传输特性

jf_uPRfTJDa 来源:移动Labs 2023-11-20 10:19 次阅读

Labs 导读

作为物联网世界的主流协议之一,CoAP协议为低功耗受限设备的数据交互和网络接入提供了可能,IETF在RFC7252中对其进行了详细的定义,本文结合CoAP协议在和家亲中的应用场景对其双层模型及输特性进行介绍。

作者:毛小俊

单位:中国移动智慧家庭运营中心

和家亲是中国移动面向智慧家庭用户推出的智能连接类App,是物联网在家庭应用场景中的落地实践。物联网强调的是物与物之间的连接通信,在和家亲中实现这种物物连接的就是Andlink协议,它是对多种主流物联网协议的综合运用,其中包含CoAP、MQTT、LwM2M、HTTP等协议,他们的简单对比如下表所示。由于多个协议都涉及到CoAP,因此本文重点介绍CoAP协议双层模型及其传输特性。

badfcf44-8743-11ee-939d-92fbcf53809c.png

Part 01和家亲哪些场景用到了CoAP?

在和家亲中,CoAP主要应用在下述2个场景中:

LPWAN网络(包括NB-IoTLoRaSigFox等)下,智能设备与家开平台通过LwM2M协议进行交互,LwM2M协议的底层便是基于UDP/UDP+DTLS传输层协议之上的CoAP协议。

Wi-Fi网络下,配网是实现智能设备后续注册、上线、管控的前提条件,配网过程中涉及到智能组网终端查找、发送入网请求、通知设备入网信息、设备入网成功广播、智能组网终端密码变更同步等步骤,这些步骤的交互即是通过CoAP协议完成。

bb05cfb4-8743-11ee-939d-92fbcf53809c.png

Part 02什么是CoAP协议?

CoAP协议(Constrained Application Protocol,标准文档RFC7252),属于应用层协议,在M2M通信中的作用和互联网中的HTTP类似,但在定义上只是实现了REST的一个子集,更重要区别是HTTP运行于TCP之上,而CoAP运行于UDP协议之上,由于UDP建立的是非可靠连接,在网络数据传输过程中,无论是请求还是响应,均存在丢包的风险。那CoAP协议的传输如何保障可靠性呢?这就涉及到CoAP协议的双层模型:

bb10e62e-8743-11ee-939d-92fbcf53809c.png

CoAP协议逻辑上分为Messaging Model和Request/Response Model,其中:

Messaging Model:处理端到端之间的数据交换,并为各报文类型提供重传机制,来弥补传输过程中的不可靠性。通过CoAP消息头部的Message ID建立请求与应答消息之间的关联,实现可靠传输。

Request/Response Model:定义了Client侧通过URI向服务端的资源发出操作请求和服务端响应的规则。通过CoAP消息头部的Token建立Request和Response关联,实现可靠响应。

注意区分Request/Response Model中的Token和Messaging Model中的Message ID是两个不同字段,如下图[1]所示:

bb252bac-8743-11ee-939d-92fbcf53809c.png

下面分别从Request/Response Model和Messaging Model分析CoAP协议的传输特性。

Part 03Messaging Model的可靠消息传输

上述介绍的中间CoAP定义了四种不同类型的报文:CON、NON、ACK、RST。其中CON报文需要接收方确认,即每一个CON报文都对应一个头部带有相同Message ID的ACK报文或RST报文,如果在规定的时间内请求方未收到ACK报文或RST报文,那么客户端将启动 “重传机制”。发送方未收到ACK/RST报文可能有两种原因:

CoAP请求丢失:CoAP请求已经发出,但未到达服务端

CoAP响应丢失:服务器已收到请求并返回响应信息,但响应未正确到达客户端

与重传机制相关的参数包括:ACK_TIMEOUT、ACK_RANDOM_FACTOR、MAX_RETRANSMIT、MAX_TRANSMIT_SPAN、MAX_TRANSMIT_WAIT

ACK_TIMEOUT:超时响应等待时间,默认2s。一个CON报文的初始等待时间为一个随机数,取值范围是ACK_TIMEOUT到ACK_TIMEOUT*ACK_RANDOM_FACTOR之间。随着重传次数增加,每一次的等待时间均为前一次的2倍。

ACK_RANDOM_FACTOR:随机系数,默认1.5。

MAX_RETRANSMIT:最大重传次数,固定值4次。

MAX_TRANSMIT_SPAN:第一次发出CON报文到最后一次重新发送的最长时间间隔。

MAX_TRANSMIT_WAIT:第一次发出CON报文到发送方放弃接收ACK或RST报文的最长时间间隔。

为进一步说明Messaging Model重传机制,以和家亲中设备端向智能组网终端发送入网CON请求为例,假如在本次CON报文发送中

ACK_TIMEOUT=2s

ACK_RANDOM_FACTOR=1.5

首次超时响应等待时间取t1=2.5s (2s<=t1<=2*1.5s)

由于网络较差尝试了4次重新发送都未收到ACK或RST响应报文,可以得到如下图所示的交互结果:

bb50d8ba-8743-11ee-939d-92fbcf53809c.png

需要注意的是上图只是为了说明重传机制的完整流程,只要CON消息发送后任意时刻,设备端收到来自服务端的ACK/RST消息,本次消息传送便会终止。通过这种重传机制,CoAP协议保证了端到端消息传输的可靠性。

Part 04Request/Response Model的消息传输

Request/Response模型的交互方式类似于HTTP协议中的客户端和服务端交互的C/S模型。

Request关注的是根据URI向服务端的资源发出操作请求,请求类型包括GET、POST、PUT 和 DELETE,但和HTTP不同的是不会先建立连接,而是通过CoAP消息进行异步交互,Request和Response之间通过CoAP消息头部的Token字段进行匹配。

Response则根据Request类型和服务端当前状态的差异,分为Piggybacked Response、Separate Response、Non-confirmable Response3种不同类型:

➤ Piggybacked Response(附带响应)

下图[1]中展示了对于两个GET请求,服务端返回附带响应的例子,一个成功,一个导致了4.04(资源未找到)。通过ACK报文回应CON报文,是最通用的类型,属于可靠响应模式。

bb60fd26-8743-11ee-939d-92fbcf53809c.png

➤ Separate Response(独立响应)

假如Server由于系统繁忙等原因无法直接给出数据响应,那么它就会立即发回一个空的ACK消息,服务端在数据准备好后服务器端就会把它组装成一个新的CON类型消息(这需要客户端的ACK),进行异步响应。独立响应也属于可靠响应模式。下图[1]中可以看到两次交互中使用的Token一致,都是0x73;但是Message ID已经变掉了,从0x7a10变成了0x23bb。

bb6c4be0-8743-11ee-939d-92fbcf53809c.png

➤ Non-confirmable Response(无需响应)

Client的请求如果是NON类型,Server一般也回NON类型消息,但服务器也有可能发送一个CON类型的消息作为响应。适用于对响应可靠性要求不高的场景。例如对温度传感器数据的重复读取,并不需要每一次都成功。图中[1]request和response使用了相同的Token:0x74。

bb76c1b0-8743-11ee-939d-92fbcf53809c.png

Part 05总结

CoAP协议目前在和家亲的智能设备大网和局域网连接、管控中都起到了重要的连接作用。作为物联网的主流协议之一,CoAP协议除了本身单独使用之外,还是LwM2M协议的底层消息传递协议,和MQTT相比,CoAP更加轻量、开销更低,在诸如和家亲设备配网等场景中更加合适。在使用CoAP时结合场景选择合适的Message和Request/Response模型对保障传输可靠性,提高客户端和服务端的交互效率十分重要。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2900

    文章

    44052

    浏览量

    370096
  • ACK
    ACK
    +关注

    关注

    0

    文章

    28

    浏览量

    11128
  • RST
    RST
    +关注

    关注

    0

    文章

    31

    浏览量

    7375
  • CoAP
    +关注

    关注

    0

    文章

    10

    浏览量

    10570
  • TCP通信
    +关注

    关注

    0

    文章

    146

    浏览量

    4200

原文标题:技术 | COAP协议的双层模型及其传输特性

文章出处:【微信号:5G通信,微信公众号:5G通信】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MQTT协议网关的工作原理及功能特性

    的数据传输。本文将详细探讨 MQTT协议网关 的工作原理、功能特性及其在物联网应用中的重要作用。 一、MQTT协议网关的工作原理 1、连接设
    的头像 发表于 09-18 17:00 336次阅读
    MQTT<b class='flag-5'>协议</b>网关的工作原理及功能<b class='flag-5'>特性</b>

    有损传输线及其特性介绍

    电子发烧友网站提供《有损传输线及其特性介绍.pdf》资料免费下载
    发表于 08-12 14:24 1次下载

    集总电路元件及其特性

    电子发烧友网站提供《集总电路元件及其特性.pdf》资料免费下载
    发表于 08-12 09:33 0次下载

    请问InDTU IHDMP协议使用的CRC校验使用的什么参数模型

    InDTU IHDMP协议使用的CRC校验使用的什么参数模型
    发表于 07-25 06:39

    京准电钟 | NTP网络时间同步协议原理及其应用介绍

    京准电钟 NTP网络时间同步协议原理及其应用介绍
    的头像 发表于 06-12 15:22 443次阅读
    京准电钟 | NTP网络时间同步<b class='flag-5'>协议</b>原理<b class='flag-5'>及其</b>应用介绍

    SMBus协议的工作原理和应用特性

    任务提供一条控制总线。SMBus协议的出现,极大地简化了系统内部设备之间的连接方式,提高了系统的稳定性和可靠性。本文将详细介绍SMBus协议的工作原理、应用特性及其在电脑系统中的应用。
    的头像 发表于 05-24 15:50 1950次阅读

    网络传输协议有几种?

    网络传输协议是一种规定计算机在网络中进行通信的规则或标准。常见的网络传输协议有以下几种: 1. TCP/IP协议:TCP/IP(
    的头像 发表于 04-02 16:04 1222次阅读

    osi七层模型各层功能及协议简述

    OSI七层模型是一种将计算机网络通信分为七个层次,并定制了每个层次的功能和协议的标准模型。这个模型的设计是为了使不同的计算机网络设备和系统能够进行互操作。以下是对每个层次的功能和
    的头像 发表于 02-04 18:06 1877次阅读

    osi七层模型各层功能及协议 osi七层模型有哪些

    中的功能和任务。该模型由七层组成,每一层都有各自的功能和协议,可以实现不同层之间的通信和数据传输。下面将详细介绍每一层的功能和常用的协议。 第一层:物理层(Physical Layer
    的头像 发表于 01-25 11:03 1.2w次阅读

    TTL与非门的电压传输特性 TTL与非门的静态输入与输出特性

    TTL与非门的电压传输特性 TTL与非门的静态输入与输出特性 TTL与非门的动态特性  TTL与非门是一种基本的逻辑门电路,用于将两个输入信号进行逻辑与运算,并输出结果。TTL(双晶体
    的头像 发表于 01-23 13:52 4153次阅读

    osi七层模型各层功能及协议

    OSI(Open Systems Interconnection)七层模型是一种将计算机网络通信协议划分为七个不同层次的模型,每层都有其特定的功能和协议。下面将详细介绍每个层次的功能及
    的头像 发表于 01-10 18:06 2055次阅读

    蓝牙协议版本解析:不同类型的蓝牙协议及其作用

    到2.1:经典蓝牙协议 蓝牙1.0: 首次引入蓝牙技术,支持数据传输速率为1 Mbps,主要应用在耳机和手机等简单设备的连接。 蓝牙2.0: 引入了增强数据传输速率(3 Mbps)和快速连接建立的
    的头像 发表于 12-28 11:17 1936次阅读

    TCP传输控制协议知识科普拓展

    传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
    的头像 发表于 11-27 17:46 903次阅读
    TCP<b class='flag-5'>传输</b>控制<b class='flag-5'>协议</b>知识科普拓展

    串口传输协议

    通信传输协议
    油泼辣子
    发布于 :2023年11月16日 17:18:55

    如何实现MQTT协议数据传输

    如何实现MQTT协议数据传输? 随着物联网技术的不断发展,越来越多的设备和应用需要实现互联互通。而MQTT作为一种轻量级的发布/订阅消息传输协议,在物联网领域应用广泛,成为了许多设备之
    的头像 发表于 11-15 17:23 1084次阅读