coap Californium 源码分析

物联网中的很多设备都是资源受限型的,即只有少量的内存空间和有限的计算能力,所以传统的HTTP协议应用在物联网上就显得过于庞大而不适用。

受限应用层协议CoAP:CoAP由CoRE工作制订,是6LowPAN协议栈中的应用层协议

CoAP使用的是面向数据包的传输层协议,如用户数据包协议(User Datagram Protocol,UDP),因此可以支持多播

CoAP主要有以下特点:
●满足资源受限的网络需求。
●无状态HTTP映射,可以通过HTTP代理实现访问CoAP资源,或者在CoAP之上构建HTTP接口。
●使用UDP实现可靠单播和最大努力多播。
●异步消息交换。
●很小的消息头载荷及解析复杂度。
●支持URI和内容类型(Content-type)。
●支持代理和缓存。
●内建资源发现。

●支持订阅机制。

CoAP分为两层:通过这种双层结构,CoAP能够在UDP上实现可靠传输机制。进行可靠传输时,使用CON消息,如果在规定时间内未收到ACK消息,则重新传输该消息(超时重传),直到收到ACK/RST消息或者超过最大重试次数。接收方收到CON消息时,返回ACK消息,如果接收方不能处理该消息,则返回RST消息。此外,CoAP还支持异步通信。当CoAP服务端收到不能立即处理的请求时,首先返回ACK消息,处理请求之后再发送返回消息。

消息层(Message负责使用UDP进行异步交互

CoAP消息有4种类型,分别是:
●Confirmable(CON):需要收到确认的消息。
●Non-confirmable(NON):不需要收到确认。
●Acknowledgment(ACK):表示确认一个Confirmable类型的消息已收到。
●Reset(RST):表示一个Confirmable类型的消息已收到,但是不能处理。

请求/回复层(Request/Response负责传输资源操作请求和回复数据。

CoAP消息结构

一个CoAP消息最小为4个字节,以下是CoAP协议不同部分的描述。

【版本Version】:类似于IPv6和IPv6,仅仅是一个版本号。

【消息类型Message Type】:CON,NON,ACK,RST。这些消息类型相当于HTTP协议的PUTGET等

【消息ID Message ID】:每个CoAP消息都有一个ID,在一次会话中ID总是保持不变。但是在这个会话之后该ID会被回收利用。

【标记 Token】:标记是ID的另一种表现、

【选项 Options】:CoAP选项类似于HTTP请求头,它包括CoAP消息本身,例如CoAP端口号,CoAP主机和CoAP查询字符串等。

【负载Payload】:真正有用的被交互的数据。

1、 server结构

* +--------------------------------------- Server                                                                                      

 * |                               +-----------------------+                              

 * |                               |    MessageDeliverer   +--> (Resource Tree)           

 * |                               +---------A-A-A---------+                              

 * |                                         | | |                                        

 * |                                          | ||                                        

 * |                 .-------->>>-----------' | '--------<<<------------.                 

 * |                /                          |                              \               

 * |               |                           |                               |              

 * |            * A                         *A                             *A              

 * | |       Endpoint       |   |       Endpoint       |   |         Endpoint       

 * | +---------------------+   +-------------------- +    +----------  +    

*|+-----------v-A-----------------------v-A--------------------------v-A-

 *             v A                          vA                            v A           

 *             v A                          v A                            v A        

 *           (Network)                    (Network)                   (Network)

 

 

NetworkConfig类

getStandard 获得该类的实例

调用NetworkConfigDefaults类的setDefaults设置默认配置参数;如果配置文件Californium.properties存在用该文件设置默认配置参数,如果不存在保存NetworkConfigDefaults类中的配置参数到Californium.properties文件中。返回NetworkConfig类实例

 

server类

NetworkConfig ,

executor ,

MessageDeliverer(包含rootResource),

root Resource (包含.well-know Resource,多个resource),

Endpoint list ( endpoint, executor, MessageDeliverer(rootResource))

a)初始化设置config配置参数,初始化线程池executor,构建root Resource,构建MessageDeliverer,为endpoint绑定executor和MessageDeliverer

b)开始server,如果Endpoint list为空采用默认配置参数启动一个Endpoint并添加的Endpoint list ,否则循环启动Endpoint list中的Endpoint

c)停止server,循环停止Endpoint list中的Endpoint

d)销毁server,循环销毁Endpoint list中的Endpoint,关闭executor

e) setExecutor,为每个Endpoint设置executor

f) setMessageDeliverer,为每个Endpoint设置MessageDeliverer

g)addEndpoint, 为每个Endpoint设置executor和MessageDeliverer, 并添加的Endpoint list

h) add,remove将资源增加到rootResource或者从root Resource删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值