CoAP协议

CoAP(Constrained Application Protocol)
CoAP是6LowPAN协议栈中的应用层协议
CoAP是超轻量型协议
CoAP的默认UDP端口号为5683

1. 四种消息类型

typedef enum {
  COAP_TYPE_CON, /* confirmables */
  COAP_TYPE_NON, /* non-confirmables */
  COAP_TYPE_ACK, /* acknowledgements */
  COAP_TYPE_RST  /* reset */
} coap_message_type_t;

ACK回应CON
RST:当接收者接受到的消息包含一个错误,接受者解析消息或者不再关心发送者发送的内容,那么复位消息将会被发送

2. 消息结构
version:版本号
type:消息类型
tkl:标记长度
id:每个CoAP消息都有一个ID,在一次会话中ID总是保持不变
token:标记是ID的另一种表现
options:类似于HTTP请求头
payload:交互数据

CoAP

3. options
包含Delta、Length、Value
Delta:表示Option的增量,当前的Option的具体编号等于之前所有Option Delta的总和
Length:表示Value的具体长度
Value:表示Option具体内容

options

  • 3 Uri-Host:CoAP主机名称
  • 7 Uri-Port:CoAP端口号,默认为5683
  • 11 Uri-Path:资源路径。长度不计第一个”\”
  • 15 Uri-Query:资源参数。Uri-Path?Uri-Query&Uri-Query

4. code

  • 2.01:Created
  • 2.02:Deleted
  • 2.03:Valid
  • 2.04:Changed
  • 2.05:Content。类似于HTTP 200 OK
  • 4.00:Bad Request 请求错误,服务器无法处理。类似于HTTP 400
  • 4.01:Unauthorized 没有范围权限。类似于HTTP 401
  • 4.02:Bad Option 请求中包含错误选项
  • 4.03:Forbidden 服务器拒绝请求。类似于HTTP 403
  • 4.04:Not Found 服务器找不到资源。类似于HTTP 404
  • 4.05:Method Not Allowed 非法请求方法。类似于HTTP 405
  • 4.06:Not Acceptable 请求选项和服务器生成内容选项不一致。类似于HTTP 406
  • 4.12:Precondition Failed 请求参数不足。类似于HTTP 412
  • 4.15:Unsuppor Conten-Type 请求中的媒体类型不被支持。类似于HTTP 415
  • 5.00:Internal Server Error 服务器内部错误。类似于HTTP 500
  • 5.01:Not Implemented 服务器无法支持请求内容。类似于HTTP 501
  • 5.02:Bad Gateway 服务器作为网关时,收到了一个错误的响应。类似于HTTP 502
  • 5.03:Service Unavailable 服务器过载或者维护停机。类似于HTTP 503
  • 5.04:Gateway Timeout 服务器作为网关时,执行请求时发生超时错误。类似于HTTP 504
  • 5.05:Proxying Not Supported 服务器不支持代理功能
### COAP协议介绍 #### 1. 协议背景与发展 COAP(Constrained Application Protocol),即受限应用协议,专为资源受限环境设计的一种轻量级网络传输协议[^1]。这类环境通常指那些计算能力有限、内存较小以及带宽较低的设备或网络条件较差的情况。 #### 2. 技术特点 - **基于UDP**:为了适应低功耗和不稳定网络的需求,COAP选择了更为灵活高效的用户数据报协议(UDP),而非传统的TCP/IP栈中的传输控制协议(TCP)[^2]。 - **高效简洁的消息结构**:相比HTTP动辄数百字节大小的数据包头部开销,COAP通过简化请求响应机制实现了极小化消息体长度——最短可达4个字节,极大地节省了通信过程中的能量消耗与时间成本[^4]。 - **可靠性保障**:尽管采用了不可靠连接模式下的底层协议作为载体,但是COAP引入了确认(CON)与应答(ACK)机制,在必要时能够确保重要信息的成功传递[^2]。 #### 3. 实际应用场景 在实际部署方面,许多物联网平台已经支持COAP协议接入方式,这使得传统COAP终端可以直接对接云服务端口完成远程监控管理等功能操作而不必担心兼容性问题的存在[^3]。 ```python import socket def send_coap_request(host, port=5683): message = b'\x40\x01' # Example of a minimal CoAP packet with GET method sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: sent = sock.sendto(message, (host, port)) data, server = sock.recvfrom(4096) print('Received:', data.hex()) finally: sock.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值