IoT物联网CoAP协议是什么意思
这篇文章主要为大家分析了IoT物联网CoAP协议是什么意思的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习"IoT物联网CoAP协议是什么意思"的知识吧。
CoAP是受限制的应用协议(Constrained Application Protocol)的缩写。在IoT物联网场景,为了让小设备可以接入互联网,CoAP协议被设计出来。CoAP是一种应用层协议,它运行于UDP协议之上而不是像HTTP那样运行于TCP之上。CoAP协议非常小巧,最小的数据包仅为4字节。
CoAP是一种面向网络的协议,采用了与HTTP类似的特征,核心内容为资源抽象、REST式交互以及可扩展的头选项等。为了克服HTTP对于受限环境的劣势,CoAP既考虑到数据报长度的最优化,又考虑到提供可靠通信。一方面,CoAP提供URI,REST 式的方法如GET,POST,PUT和DELETE,以及可以独立定义的头选项提供的可扩展性。另一方面,CoAP基于轻量级的UDP协议,并且允许IP多播。为了弥补UDP传输的不可靠性,CoAP定义了带有重传机制的事务处理机制。并且提供资源发现机制,并带有资源描述。
协议特点
基于消息模型
请求/响应模型
双向通信
轻量、低功耗
支持可靠传输
支持IP多播
非长连接通信,支持受限设备
支持观察模式
支持异步通信
协议内容
CoAP是一个完整的二进制应用层协议,消息格式紧凑,默认运行在UDP上。
CoAP报文
【Ver】版本编号。
【T】报文类型,CoAP协议定了4种不同形式的报文,CON报文,NON报文,ACK报文和RST报文。
【TKL】CoAP标识符长度。CoAP协议中具有两种功能相似的标识符,一种为Message ID(报文编号),一种为Token(标识符)。其中每个报文均包含消息编号,但是标识符对于报文来说是非必须的。
【Code】功能码/响应码。Code在CoAP请求报文和响应报文中具有不同的表现形式,Code占一个字节,它被分成了两部分,前3位一部分,后5位一部分,为了方便描述它被写成了c.dd结构。其中0.XX表示CoAP请求的某种方法,而2.XX、4.XX或5.XX则表示CoAP响应的某种具体表现。
【Message ID】报文编号。
【Token】标识符具体内容,通过TKL指定Token长度。
【Option】报文选项,通过报文选项可设定CoAP主机,CoAP URI,CoAP请求参数和负载媒体类型等等。
【1111 1111B】CoAP报文和具体负载之间的分隔符。
请求方法
0.01 GET:获取资源
0.02 POST:创建资源
0.03 PUT:更新资源
0.04 DELETE:删除资源
响应码
Success 2.xx
这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。
2.01 Created
2.02 Deleted
2.03 Valid
2.04 Changed
2.05 Content
Client Error 4.xx
这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。
4.00 Bad Request
4.01 Unauthorized
4.02 Bad Option
4.03 Forbidden
4.04 Not Found
4.05 Method Not Allowed
4.06 Not Acceptable
4.12 Precondition Failed
4.13 Request Entity Too Large
4.15 Unsupported Content-Format
Server Error 5.xx
这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器的软硬件资源无法完成对请求的处理。
5.00 Internal Server Error
5.01 Not Implemented
5.02 Bad Gateway
5.03 Service Unavailable
媒体类型
工作模式
CoAP参考了很多HTTP的设计思路,同时也根据受限资源限制设备的具体情况改良了诸多的设计细节,增加了很多实用的功能。
消息类型
CON:需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。
NON:不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。
ACK:应答消息,接受到CON消息的响应。
RST:复位消息,当接收者接收到的消息包含一个错误,接收者解析消息或者不再关心发送者发送的内容,那么复位消息将会被发送。
请求/响应模型
1.携带模式
2.分离模式
3.非确认模式
CoAP协议的URI
在HTTP的世界中,正式RESTFul协议由于其简单性和适用性,在WEB应用中越来越受欢迎,这样的道理同样适用于CoAP。一个CoAP资源可以被一个URI所描述,例如一个设备可以测量温度,那么这个温度传感器的URI被描述为:CoAP://machine.address:5683/sensors/temperature。
CoAP的默认UDP端口号为5683
HTTP和CoAP对比
HTTP代表超文本传输协议,CoAP代表约束应用协议;
HTTP协议的传输层采用了TCP,CoAP协议的传输层使用UDP;
CoAP协议是HTTP协议的简化版;
CoAP协议和HTTP协议一样使用请求/响应模型,拥有相同的方法;
CoAP开销更低,并支持多播;
CoAP专为资源构成应用而设计,如:IoT/WSN/M2M等...
CoAP和MQTT对比
MQTT协议使用发布/订阅模型,CoAP协议使用请求/响应模型;
MQTT是长连接,CoAP协议是无连接;
MQTT通过中间代理传递消息的多对多协议,CoAP协议是Server和Client之间消息传递的单对单协议;
MQTT不支持带有类型或者其它帮助Clients理解的标签消息,CoAP内置内容协商和发现支持,允许设备彼此窥测以找到交换数据的方式。
关于"IoT物联网CoAP协议是什么意思"就介绍到这了,更多相关内容可以搜索以前的文章,希望能够帮助大家答疑解惑,请多多支持网站!