COAP协议说明
来源:互联网 发布:recscreen录屏软件 编辑:程序博客网 时间:2024/06/06 03:35
CoAPService
git源码
作者项目地址
app包:Android服务器端代码
coaplib: java服务器代码以及java客户端测试代码
原文讲解 , 以下为补充说明内容
COAP协议:原文
CoAP服务器则提供了人们能轻松看懂的URI,如 /thermometers/5 。在可发现性的使用惯例里,所有资源都可以通过访问 /.well-known/core 这个地址列出,每个资源可以通过一系列查询参数来筛选,如 /.well-known/core?rt=light_switch 会列出所有资源类型(rt, resource type)为 light_switch的资源。
和HTTP协议类似,你可以使用GET, POST, PUT 和 DELETE来操作资源,这种相似性使你可以映射请求到另一个服务器,也就是把CoAP和Web结合。COAP底层基于UDP,协议更加轻盈,请求可以不被确定,也可以确定,根据需求定,由于UDP的不可靠性,CoAP协议采用了双层结构,定义了带有重传的事务处理机制,并且提供资源发现和资源描述等功能。CoAP采用尽可能小的载荷,从而限制了分片。
最有趣的特性要属“observe” 设置了。客户端发送GET请求时可以传递一个flag来开启观察者模式(observation)。server之后会把这个客户端列入特定资源的观察者名单,然后客户端持续监听服务端的响应。它允许我们构建被动接收数据的系统,无论这些数据将在什么时候送达。我们回想到HTTP和Websocket的场景,是不是有点像publisher-subscriber模式?是不是有点像Meteor的REST for Websocket。简言之,CoAP既可以单次REST请求,也可以通过observe实现实时数据订阅。
COAP报文格式 : 模块说明
- ~.californium-core
californium 核心模块,定义了一系列协议栈核心接口,并提供了Coap协议栈的完整实现, - coap:定义了消息类型,消息头,observe机制等,COAP协议中的常量和消息的基本模型MessageObserver 接口实现消息的状态跟踪,重传确认等
observe:
COAP协议订阅模块,是协议的一大功能package-network:
network 是协议栈核心机制实现的关键模块,涵盖了网络传输以及协议层的定义以及实现
模块实现了一些关键接口定义,将网络传输端点抽象为Endpoint,~.element-connector
从core模块剥离的连接器模块,用于抽象网络传输层的接口,使得coap可以同时运行于udp和tcp多种传输协议之上;~.californium-proxycoap代理模块,用于支持coap2coap、coap2http、http2coap的转换;
~.scandium-core
Coap over DTLS 支持模块,提供了DTLS 传输的Connector实现;~.demo-xxx 样例程序;
- 其中,californium-core和element-connector是coap技术实现最关键的模块
核心接口
与分层设计对应,框架分为 transport 传输层、protocol 协议层、logic 逻辑层。
transport 传输层 : 由Connector 提供传输端口的抽象,UDPConnector是其主要实现;数据包通过RawData对象封装;该层还提供CorrelationContext 实现传输层会话数据的读写支持。【element-connector.jar包】
protocol 协议层 : 提供了Coap协议栈机制的完整实现;
CoapEndpoint是核心的操作类,数据的编解码通过DataSerializer、DataParser实现,MessageInterceptor提供了消息收发的拦截功能,Request/Response的映射处理由 Matcher实现,Exchange 描述了映射模型;协议栈CoapStack 是一个分层的内核实现,在这里完成分块、重传等机制。californium-core网络层 :
logic 逻辑层,定义了CoapClient、CoapServer的入口,包括消息的路由机制,Resource的继承机制;Observe机制的关系维护、状态管理由ObserveManager提供入口。
简单说明:MessageInterceptor(消息拦截器)、Matcher(匹配器)、CoapStack(Coap协议栈)
- COAP源码分析:Californium开源框架之源码分析
- COAP协议说明
- CoAP协议
- CoAP协议
- CoAP协议笔记[RFC7252]
- CoAP-协议格式详解
- CoAP协议简介
- CoAP协议调研
- COAP协议全面分析
- CoAP协议学习——CoAP基础
- CoAP协议学习——CoAP基础
- CoAP协议学习——CoAP基础
- CoAP协议学习——CoAP基础
- 物联网的coap协议
- DTLS编写样例一coap协议
- CoAP协议学习笔记——CoAP格式详解
- CoAP协议及开源实现
- CoAP协议及开源实现
- CoAP协议及开源实现
- oracle 两个时间相减默认为天数
- python——asyncio模块实现协程、异步编程(一)
- Android应用程序框架层和系统运行库层日志系统源代码分析
- Hadoop的部署教程
- 从数据备份恢复来看,iCloud和iTunes到底有什么区别?
- COAP协议说明
- (POJ
- MySQL在shell中查询时的中文乱码显示问题
- New Reliable Android Kernel Root Exploitation Techniques
- 23种设计模式(3):抽象工厂模式
- 设计模式(18)-备忘录模式
- C++获得数组长度
- java操作redis
- Uncaught SyntaxError: Invalid or unexpected token