CoAP协议学习笔记(一)

目录

CoAP协议定义

CoAP协议特点

协议模型

Message Format

Message Hader(CoAP报文结构)

CoAP的响应码

Message分类

Message的可靠传输

Message的非可靠传输

Request/Respones模型

同步可靠响应模式(piggybacked Response)

异步可靠响应模式(separate Response)

非可靠响应模式

Option分类

Option Format

CoAP中Option的定义

Option内容项

CoAP的块传输、代理和安全


CoAP是一种应用层协议,运行于UDP协议之上,非常小巧,最小的数据包仅4字节。

CoAP协议定义

CoAP协议的交互模型与HTTP的客户端/服务端模型类似。然而,在M2M的交互场景中,CoAP的目标是设计一个通用的网络协议,满足受限环境的特殊需求,特别考虑了能源、楼宇自动化和其他M2M应用。

需要注意的是CoAP并不能代替HTTP协议,但是对于那些小设备(例如CPU为8bit的单片机,内存32Kb,Flash 256Kb)而言CoAP的确是一个更好的解决方案。

CoAP协议特点

满足受限环境下M2M的需求的协议

CoAP协议基于UDP

异步消息交换

轻量级的头部,且解析复杂度低。

支持URI和Content-Type

能实现简单的缓存和数据代理

无状态的HTTP映射,可以构建代理服务器,使CoAP资源可以用HTTP协议访问,也可以使HTTP接口实现于CoAP协议之上

支持DTLS

协议模型

逻辑上分为Messages和Requset/Respones两层,R/R通过Messages承载,从封包上不体现这种层次结构

DTLS可选,由于基于UDP,支持组播。

特征

基于UDP的类似HTTP的Client/Server交互模型

Client发送Request(携带不同method)请求对资源(通过URI表示)的操作,Server返回Response(携带资源的representation)和状态码

在M2M应用场景,Endpoint实际同时是Server和Client

协议定义了以下几个角色:

Endpoint:CoAP协议的参与方

Sender(发送方):发出Messages的Endpoint

Recipient(接收方):相当于接收Message的Endpoint

Client(客户端):发出Request的Endpoint,Response的destination Endpoint

Server(服务端):Request的destination,Response的source Endpoint

Origin Server(源服务端):resource所在的ServerElective(存储或者创建一个给定资源的服务端)

Intermediary(媒介):既作为Server又作为Origin Server的Client的Endpoint。可以理解为Proxy的统称

Proxy:一种Intermediary,完成Request前转,Respone中继,执行缓存,namespace转换,协议转换等功能的Endpoint,基于前转请求架构中的位置,协议定义了forward-proxy和reverse-proxy两种代理

Forward-Proxy(正向代理):被Client用于代表Client执行Request,并完成任何必要的转换。

Reverse-Proxy(反向代理):代表一个或多个其他服务器并代表它们满足请求,执行任何必要的翻译的端点。 与转发代理不同,客户端可能不知道它正在与反向代理通信; 反向代理接收请求,就像它是目标资源的源服务器一样。

CoAP-to-CoAP Proxy:映射CoAP request到CoAP request

Cross-Proxy:跨协议代理,比如CoAP-to-HTTP或HTTP-to-CoAP

Message Format

Message组成部分

固定的4个字节的头部

0-8字节的Token

0或者多个TLV(Type-Length-Value)格式的Option (在下面会有详解图↓)

可选的Payload

Message的承载信息

Request

Response

Empty Message(只有message header,且code为0.00)注:最短的消息报文就是只有头文件和返回信息,无承载信息。

Message Hader(CoAP报文结构)

Ver:版本编号,指示CoAP协议的版本号。类似于HTTP 1.0 HTTP 1.1,2位。

TKL:Token Length,Token长度,当前有效取值0-8,其他认为是Message format error,4位。

T:报文类型,CoAP协议定了4种不同形式的报文,CON报文,NON报文,ACK报文和RST报文,2位。

Code:功能码/响应码,格式 c(3bit class type).dd(5bit detail code)Code在CoAP请求报文和响应报文中具有不同的表现形式,Code占一个字节,它被分成了两部分,前3位一部分,后5位一部分,为了   方便阅读,Code被描述为c.dd结构,其中0.XX表示CoAP请求的某种方法,而2.XX、4.XX或5.XX则表示CoAP响应的某种具体表现。8位无符号数。

CoAP定义的Request方法有如下4种ÿ

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值