CoAP协议学习笔记 1.1 为什么物联网要使用 CoAP 协议

物联网通讯协议:MQTT,NB-IOT,Zigbee,CoAP,RFID,BLUETOOTH,NFC,4G,HTTP 一、按网络四层协议分类 物理层协议:NB-IoT,LORA,WIFI,蓝牙,zigbee,4G,这几个都需要芯片模组支持(硬件支持) 应用层协议:MQTT,COAP,HTTP,这些需要开发服务器,或者对接云平台厂商(软件支持) 二、按需要网关来分类 直连:NB-IoT,4G(芯片可以直接连上移动,联通,电信运营商) 网关代理:LORA,WIFI,zigbee(不能直接连上电信运营商,需要通过一个网关中转才能连上电信运营商) 蓝牙:比较特别,是两个蓝牙设备之间互联 三、物理层协议. 阅读详情

1 前言

前几年,Json比较火的时候,和朋友在讨论项目协议时就在感慨,要是咱们的这些设备都能走Json,那该多爽。由于HTTP协议对于物联网设备实在是太铺张了,我们只好作罢。

知识限制了我们的想象力,CoAP 就是这样的存在。

小能手正在学习 CoAP 协议,CoAP协议学习笔记可点此查看。

2 什么是CoAP?

在 CoAP 协议 RFC7252 首页的介绍能让大家有所理解,不要略过这一点介绍,有助于我们了解 CoAP 的核心思想。

The use of web services (web APIs) on the Internet has become ubiquitous in most applications and depends on the fundamental Representational State Transfer [REST] architecture of the Web.

The work on Constrained RESTful Environments (CoRE) aims at realizing the REST architecture in a suitable form for the most constrained nodes (e.g., 8-bit microcontrollers with limited RAM and ROM) and networks (e.g., 6LoWPAN, [RFC4944]). Constrained networks such as 6LoWPAN support the fragmentation of IPv6 packets into small linklayer frames; however, this causes significant reduction in packet delivery probability. One design goal of CoAP has been to keep message overhead small, thus limiting the need for fragmentation.

One of the main goals of CoAP is to design a generic web protocol for the special requirements of this constrained environment, especially considering energy, building automation, and other machine-to-machine (M2M) applications. The goal of CoAP is not to blindly compress HTTP[RFC2616], but rather to realize a subset of REST common with HTTP but optimized for M2M applications. Although CoAP could be used for refashioning simple HTTP interfaces into a more compact protocol, more importantly it also offers features for M2M such as built-in discovery, multicast support, and asynchronous message exchanges.

This document specifies the Constrained Application Protocol (CoAP), which easily translates to HTTP for integration with the existing Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments and M2M applications.

小能手给大家翻译下。

互联网的 WEB 已经无处不在,这些 WEB 服务又依赖于 WEB 的 REST 架构。

为了在大多的受限制节点上(例如 RAM 和 ROM 很有限的8位单片机)以及受限制网络上(例如 6LoWPAN)也能实现 REST 架构,人们着手处理“受限制的RESTful环境”,即CoRE。如6LoWPAN的受限网络支持将IPv6数据分成小包,但是这也极大降低的传输效率。CoAP的一个设计目标是保持很小的消息开销,因此限制了分包传输的需求。

CoAP 的主要目标之一是设计一个通用的 Web 协议,以满足这种受限环境的特殊要求,特别是考虑到能源,楼宇自动化和其他 M2M 应用。 CoAP 的目标不是盲目地压缩 HTTP [RFC2616],而是实现REST的一个通用 HTTP 子集,但针对 M2M 应用进行了优化。 虽然 CoAP 可用于将简单的 HTTP 接口转换为更紧凑的协议,但更重要的是,它还提供了 M2M 的功能,如内置发现,多播支持和异步消息传输。

本文档定义了 CoAP 协议,它可以很容易转换为 HTTP,以便集成到现有Web,同时它还能满足很多特殊要求,诸如组播支持,非常低的开销以及针对受限环境和M2M应用程序做了简化等。

这里最核心的一点是,大家必须先了解 REST。体会到 WEB 世界里 ReST 的种种优点,我们才能明白先驱们为何拼命要在物联网的世界里也实现一套 ReST。

3 什么是 ReST

阮一峰说的比较清楚,具体见他的博客文章。

二、名称
Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写。我对这个词组的翻译是"表现层状态转化"。
如果一个架构符合REST原则,就称它为RESTful架构。
要理解RESTful架构,最好的方法就是去理解Representational State Transfer这个词组到底是什么意思,它的每一个词代表了什么涵义。如果你把这个名称搞懂了,也就不难体会REST是一种什么样的设计。

三、资源(Resources)
REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。
所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。
所谓"上网",就是与互联网上一系列的"资源"互动,调用它的URI。

四、表现层(Representation)
"资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层"(Representation)。
比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。
URI只代表资源的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。

五、状态转化(State Transfer)
访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。
互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。
客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

六、综述
综合上面的解释,我们总结一下什么是RESTful架构:
  (1)每一个URI代表一种资源;
  (2)客户端和服务器之间,传递这种资源的某种表现层;
  (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

我看到还有1句话的总结:URL定位资源(表现层),用HTTP动词 (GET、POST、PUT、DELETE) 描述操作。

按照这种风格来设计的系统,我觉得有两个较大的优点:

1.安全性、幂等性。规范化的 URL 和操作,这样大多数操作,无论操作多少次,结果都是一样的,也就是传说的幂等性。如 Get 查询某个状态、PUT 更新某个状态、DELETE 删除某个资源,甚至是 POST 创建某个资源。这样在网络不可靠的情况下,整个系统也能安全稳定地运行。

2.可拓展性强。资源的各种表现层是相互独立的,耦合性很低,系统有新增新的资源和表现层都很方便。

4 HTTP for IoT

在物联网领域的协议最好能继承该优点。

1.安全性、幂等性。在NB-IoT等低功耗设备中,通常不能使用TCP长连接。它的传输必须高效,弱化对连接的依赖,网络不稳定时也不影响系统运行。

2.可拓展性。一个 Server 可能会逐步增加各类型设备,所以这也是各个物联网平台使用 CoAP 的最主要原因。

所以,对于物联网设备而言,如果能简化出 REST 的一个通用 HTTP 子集,便于与已有的 WEB 体系转化,那就是最好的选择。

这便是 CoAP 的设计初衷。

5 CoAP 的特点

了解了 CoAP 的设计思想,再看看现在 CoAP 到底有哪些特点。

CoAP has the following main features:

- Web protocol fulfilling M2M requirements in constrained environments
- UDP [RFC0768] binding with optional reliability supporting unicast and multicast requests.
- Asynchronous message exchanges.
- Low header overhead and parsing complexity.
- URI and Content-type support.
- Simple proxy and caching capabilities.
- A stateless HTTP mapping, allowing proxies to be built providing access to CoAP resources via HTTP in a uniform way or for HTTP simple interfaces to be realized alternatively over CoAP.
- Security binding to Datagram Transport Layer Security (DTLS) [RFC6347].

CoAP 具有如下特点(官方介绍):

  • 在受限环境中满足M2M要求的Web协议。
  • 支持可靠性的UDP [RFC0768]绑定,支持单播和多播请求。
  • 异步消息交换。
  • 低头部开销和解析复杂性。// 受限设备要求。
  • 支持 URI 和 Content-type。// 开发者喜欢。
  • 简单的代理和缓存功能。
  • 无状态 HTTP 映射,允许构建代理,以统一方式通过 HTTP 访问 CoAP 资源,或者通过 CoAP 变换实现 HTTP 简单接口。
  • 支持对数据报传输层安全(DTLS)[RFC6347] 的绑定。

6 小结

ReST 风格的 HTTP 协议广泛存在于 WEB 世界中,由于它的种种优点,人们在物联网世界里也拼命实现了一套 HTTP 子集,可方便和现有 WEB 体系转化,继承了它的优点,同时针对受限的物联网设备做了优化。这便是 CoAP 协议。


什么是物联网?常见IoT协议最全讲解 物联网通信环境有Wi-Fi、RFID、NFC、Zigbee、6LoWPAN、Bluetooth、GSM、GPRS、GPS、3G、4G等网络,而每一种通信应用协议都有一定适用范围。 阅读详情

相关推荐

COAP协议

​ 很多人预测将会有更多其他的设备相互连接,这些设备的数量将远远超过人类的数量,到时候形成的网络将是现有网络的N个量级,这个网络带给世界的变化将是无法估量的。 ​ 不像人接入互联网的简单方便,由于物联网设备大多都是资源限制型的,有限的CPU、RAM、Flash、网络宽带等。对于这类设备来说,想要直接使用现有网络的TCP和HTTP来实现设备实现信息交换是不现实的。于是为了让这部分设备能够顺利接入网络,CoAP,CoAP协议解析

weixin_43504224的博客 4278

coap over tcp调试笔记

搜索网上的资料,大多是coap over udp,over tcp的介绍很少。 通过近段时间的学习,学习笔记如下 1、代码下载 git clone https://github.com/obgm/libcoap 2、编译 2.1.进入目录: $:cd libcoap 2.2.配置编译 $:./autogen.sh//生成脚本 $:./configure //配置脚本 ./configure --d...

u013764418的博客 1182

四个重要的IOT物联网协议介绍

物联网 (IoT) 有多种应用程序级协议可供使用,使应用程序开发和维护变得更加容易。然而,考虑到某些应用程序协议的范围、可用性、成熟度和细分市场适用性,某些应用程序协议比其他协议更合适。

STONE的博客 2664

通讯协议介绍&CoAP 协议解析

如请求没有准确到达 CoAP 服务器(称作 “CoAP 请求丢失”),或服务器虽收到请求并返回响应,但响应未正确到达客户端(称作 “CoAP 响应丢失”),超过一定时间后,客户端就会将前一次 CoAP 请求判定为失败,并再次发送同样的 GET 请求,两次请求的首部和负载完全相同。,占8位(一个字节)。即使网络条件不好,也不会对发送速率进行调整,这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议、直播等)就需要使用 UDP 而不是 TCP。

码灵的博客 7534

CoAP协议学习笔记(一)

CoAP是一种应用层协议,运行于UDP协议之上,非常小巧,最小的数据包仅4字节。 CoAP协议定义 CoAP协议的交互模型与HTTP的客户端/服务端模型类似。然而,在M2M的交互场景中,CoAP的目标是设计一个通用的网络协议,满足受限环境的特殊需求,特别考虑了能源、楼宇自动化和其他M2M应用。 需要注意的是CoAP并不能代替HTTP协议,但是对于那些小设备(例如CPU为8bit的单片机,内存32Kb,Flash 256Kb)而言CoAP的确是一个更好的解决方案。 CoAP协议特点 满足受限环境下M

CN_tuzibushituzi的博客 2629

Coap协议在物联网中的实战

CoAP协议报文解读

zize_snail的博客 1026

【CoAP】【物联网通讯协议】---- CoAP 从入门到精通(整合 Spring Boot)

本文系统介绍了轻量级物联网协议CoAP的核心概念、技术特性及开发实践。CoAP专为资源受限设备设计,具有4字节极简头部、基于UDP传输、支持RESTful语义等特点,相比HTTP更适配低功耗场景。文章详细对比了CoAP与HTTP的差异,并解析了CoAP的资源、端点、观察机制等核心组件。通过Java开发实例,演示了如何使用Eclipse Californium库搭建CoAP服务器和客户端,包括温度传感器资源实现、请求响应交互以及观察机制的应用。内容涵盖从基础概念到实战整合的全链路知识,为物联网应用开发提供了完

朱朱博客,分享技术 1303

coap协议学习之搭建coap测试环境

本篇目标:简单初步认识coap协议,以及怎么去测试自己搭建得coap协议应用。 材料准备: 55.0版本的火狐浏览器与copper插件() linux系统(搭建在虚拟机下的 Ubantu)与libcoap开源程序() COAP协议简单介绍 ...

图书馆 5697

CoAP学习笔记——CoAP格式详解

CoAP是受限制的应用协议(Constrained Application Protocol)的代名词。在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的。但是对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网,CoAP协议被设计出来。CoAP是一种应用层协议,它运行于UDP协议之上而不是像HTTP那样运行于TCP之上。CoAP协议非常小巧,最小的数据包仅为4字节。

物联网 IoT 经验分享 4万+

移远BC95使用CoAP协议接入华为IoT平台(NB-IoT专栏—进阶篇1)

目录 1、华为 NB-IoT CoAP总体方案拓扑 2、华为IoT平台环境搭建 3、NB-IoT上传数据到云平台 BC95的CoAP测试需要云平台配合,当前的支持CoAP协议的平台有华为OceanConnect平台、电信天翼云(除了 Logo 其他和华为的一样)、移动 OneNet等。此教程以华为的OceanConnect 平台为例进行测试。下面我将就平台申请、平台测开发、NB-IoT实验...

不脱发的程序猿 1万+

【Konva】解决图形加入group后无法获取到绝对坐标,以及group内绘制新图形坐标偏移的问题

解决konva绘图开发时“图形加入group后坐标不会变动,无法获取到绝对坐标”的问题

近10年前端开发工作经验,为你分享日常经验所得 1500

NB-IoT使用笔记(6)在linux下使用搭建CoAP服务(2)

背景随着对NB-IoT模块的生态了解得越来越多,对于NB应用的平台实现方案有了更加实际的认识——简单来说,就是如何得到NB-IoT模块的数据。目前我将自己知道的几种方式做一个总结:1.直接传输UDP数据这种方案是最简单无脑的,只要在购买NB卡的时候向客服说明需要绑定的IP地址,就可以在开发中直接发送UDP数据包到自己的服务器端。在这种方案下,还可以参考NB-IoT使用笔记(5)在linux下用pyt

厉害了我的IOT的博客 1万+

CCSP考后复盘:那些刷题时感觉良好,考场却发懵的题目到底长什么样?

本文深入分析了CCSP考试中常见的题目陷阱和解题策略,揭示了刷题与实战的差距。通过解析换装题、双胞胎选项和场景题等典型题型,帮助考生掌握拆题技巧和思维模式转变,提升应对CCSP考试的能力。

weixin_30485379的博客 438

物联网协议之COAP简介及Java实践

本文将围绕物联网的COAP协议,首先对其进行简单介绍,然后基于JAVA语言来进行COAP协议通讯编程实战,帮助大家对COAP有一个简单的认知,经过编程实践掌握协议的通信机制

夜郎King的博客 9735

“华为”云桌面系统声音比较小,如何调大?

调整操作系统声音 开启云桌面,登录账户之后,进入操作系统,鼠标左键点击右下角的声音图标,把声音调到最大(如下图); 可以考虑使用浏览器在线听音乐,确定声音的音量! 如果只是耳麦声音小,可以鼠标右键点击声音图标,选择录音设备(R),如下图: 点击“录音设备(R)”后进入,鼠标右键点击“麦克风”选择属性,将侦听级别调至最大,确定! 调整华为云终端声音(软设置) 将鼠标移至桌面的顶端中间位置,打开如下图的样式图标,鼠标左键点击“主页”; 点击“主页”之后,将回到云桌面的终端操作界面,

shunchang的专栏 2337

从零到一:Cadence AC仿真中的运放性能参数深度解析与实战避坑指南

本文深度解析Cadence AC仿真中运放性能参数的精确测量方法,包括开环增益、带宽和相位裕度等关键指标。通过实战案例分享常见设置错误的避坑技巧,帮助工程师提升设计成功率和仿真效率,特别针对全差分运放和工艺角分析提供专业指导。

www00的博客 294

IoT五种常见物联网协议:TCP/IP、UDP、HTTP、MQTT、CoAP初探

  对于软件公司来说,IoT模式为其硬件设计以及所提供的服务带来决定性的改变。其中影响最大的一个方面是通信协议。      通信协议可以被认为是一种语言,即两台或两台以上的设备可以相互交流。同时无规矩不成方圆,通信协议也遵循一组规则,两台设备会将有意义的信息传递给对方。在分布式系统中通信协议极为重要,相同的协议不同的部分在多个位置独立运行。系统在运行进程时可能是多样化的,因此在系统中需要保证一组通用的指令来通信。      IoT物联网之所以可以掀起热潮,信息物理融合系统(Cyber-Physical Sy

开发笔记 1万+

TexGen模型导出ABAQUS inp文件时纱线材料属性缺失?5分钟快速修复指南

本文针对TexGen模型导出ABAQUS inp文件时纱线材料属性缺失的问题,提供了快速修复指南。通过手动编辑inp文件或使用Python脚本自动补全材料属性,帮助复合材料仿真工程师高效解决问题。文章还介绍了TexGen导出前的预防性设置和ABAQUS中的验证技巧,确保仿真分析的准确性。

qsc901234的博客 250

了解CoAP协议

物联网产品开发中,我们常常听到各种协议名称,如CoAP,MQTT等,但这些协议究竟如何去传输数据,如何下发指令呢? 1. CoAP协议概述 1.1 CoAP协议的产生 物联网的初衷之一就是通过大数据的采集分析去颠覆交通、运输、物流、能源等生产生活的每个方面。一般而言,物联网遇到的最大问题就是环境的不稳定性,例如没有稳定的电源。除此之外,无线网络的带宽、时延、丢包等问题都比较突出 1.2 CoAP协议的定义 CoAP是受限制的应用协议(Costrained Application Protocal)。对于那些

柚子君的博客 2万+

512分辨率万能遮罩模型实战指南:从下载到高精度应用

本文提供了512分辨率万能遮罩模型的完整实战指南。该模型经过超过540万次迭代,专门优化了对头发、手、眼睛等复杂区域的识别。文章详细介绍了从可靠渠道下载、环境部署、使用DF_ICE工具批量应用遮罩,到利用XSeg Editor进行高精度精修的全流程,旨在帮助用户显著提升AI换脸合成视频的质量与效率。

y2z3a4b5c的博客 1165

Python全栈项目--手机语音远程控制智能家居系统(含嵌入式控制)

摘要:本项目实现了一个基于Python全栈的智能家居语音控制系统,支持手机端语音指令控制家居设备。系统采用FastAPI后端+Vue3前端的架构,集成Web Speech API实现语音识别,通过嵌入式设备(如ESP32)执行硬件控制。功能包括用户认证、设备管理、场景联动、指令解析和日志记录,支持HTTP轮询和直推两种命令下发模式。项目涵盖物联网全链路开发,适用于课程设计或毕业设计原型开发。

exlink2012的专栏 882

CoAP 协议学习

物联网应用协议学习 本来不打算做这个笔记的,因为这些东西很老了,并且网上已经很泛了。 但是在开发工作中还是陆陆续续有了一些新的发现,譬如新的阐述、有趣的内容、或者有更好的梳理总结。就像每一段时光都值得被好好记录,每一次闪现的灵光都不应消失在碎片化记录中。 于是有了这一系列笔记,这是我的物联网应用协议知识体系。 第一部分 TCP/IP基础 《TCP/IP详解》是2000年机械工业出版社...

IoT小能手 5081

Autosar CAN 网络管理测试用例(3)——Repeat Message Timer 时间测试

Autosar CAN 网络管理测试用例(3)——Repeat Message Timer 时间测试

蚂蚁小兵 2466

NB-IoT使用CoAP协议接入华为IoT平台教程

原文地址:https://bbs.huaweicloud.com/forum/thread-24342-1-1.html 上一次我们讲了“华为IoT平台环境搭建”,只用了虚拟设备进行演示,今天我们用真实的NB-IoT模块来进行通信。 1、准备 要完成这次实验需要以下几个东西。 1.1、NB-IoT模组 目前NB-IoT厂商与模组主要有以下几个 公司 模组名称 使用芯片 支持频段 通讯协议 ...

Micah's Blog 7879

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

CoAP协议学习笔记 1.2 一张表了解 CoAP 协议

1 前言 对于CoAP协议的学习,这份100多页的文档肯定没法背下来。我们只需把协议当作工具书,大体知道主体的内容,在遇到细节问题时再去具体章节找问题。 本篇笔记中先对 CoAP 协议内容做个基础了解,然后搬出重量级干货《coap-cheatsheet_note.pdf》,最后展示出协议附录中的示例。 这是本能手的学习记忆路线,希望对您有所帮助。 小能手正在学习 CoAP 协议,其他物联网...

IoT小能手 7828

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 阿里云IoT平台CoAP接入 1 开发准备
下一篇: CoAP协议学习笔记 1.2 一张表了解 CoAP 协议
iotisan
iotisan 领域专家: 嵌入式与硬件开发技术领域 领域专家: 嵌入式与硬件开发技术领域
博客等级 码龄10年 2262粉丝 259原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值