Contents
  1. 1. 要求
  2. 2. 基本步骤
  3. 3. 过程及有关程序代码
    1. 3.1. 1、 搭建局域网
    2. 3.2. 2、开启服务器
    3. 3.3. 3、 客户端请求连接,服务器返回信息
    4. 3.4. 4、抓包信息
  4. 4. 分析
    1. 4.1. 关于COAP的安全问题:

CoAP(Constrained Application Protocol, 受限应用协议)协议是一种在低功耗低速率的设备上实现物联网通信的应用层协议。其采用UDP协议支撑,发送和接收数据可以异步,数据包头采用二进制压缩,对低功耗低速率的网络有很好的适应能力。CoAP协议非常的小巧,最小的数据包仅为4字节。CoAP适用于低功耗受限设备,一个内存为20KB的单片机就可以实现CoAP服务器或客户端。本实验旨在利用工具对CoAP协议基本工作机制进行验证分析,并分析其可能的安全隐患。

要求

(1)实验要求掌握CoAP的基本原理。

(2)用Wireshark等协议分析软件分析CoAP协议过程。

(3)学会用Node.js或Python快速构建CoAP通信验证程序。

基本步骤

注意构建一个局域网,模拟CoAP服务端、客户端,运用Wireshark分析客户端和服务端上的协议工作。

过程及有关程序代码

服务器代码:

1
2
3
4
5
6
7
8
const coap    = require('coap') 
, server = coap.createServer()
server.on('request', function(req, res) {
res.end('Hello ' + req.url.split('/')[1] + '\n')
})
server.listen(function() {
console.log('server started')
})

客户端代码:

1
2
3
4
5
6
7
const coap  = require('coap') 
, req = coap.request('coap://127.0.0.1/client')
req.on('response', function(res) {
res.pipe(process.stdout)
})
req.end()

1、 搭建局域网
2、开启服务器

VqbIjf.png

3、 客户端请求连接,服务器返回信息

VqbLNj.png

4、抓包信息

VqqpuT.png

VqqV81.png

分析

CoAP是一种应用层协议,它运行于UDP协议之上而不是像HTTP那样运行于TCP之上。HTTP 与 COAP协议都是通过4个请求方法(GET, PUT, POST, DELETE)对服务器端资源进行操作。 两者之间明显的区别在于HTTP是通过文本描述方式描述协议包内容,协议包里面会包含一些空格符,换行符等,协议包可读性很强。而COAP是通过定义 二进制各位段功能来描述协议包内容。 因此COAP协议包大小更小,更紧凑。CoAP协议非常小巧,最小的数据包仅为4字节。但CoAP并不能替代HTTP协议,CoAP只能呢 应用于那些小设备。

​ CoAP采用与HTTP协议相同的请求响应工作模式。CoAP协议共有4中不同的消息类型。

CON——需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。

NON——不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。

ACK——应答消息,接受到CON消息的响应。

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

Vqq7xx.png

这里抓到的包只有CON和ACK,是因为客户端发的包需要服务器响应,所以是CON,而且在传输过程中并未出错,所以没有出现RST复位消息。

CoAP还有一个比较特殊的地方,那就是它的url。在HTTP的世界中,RESTFul协议由于其简单性和适用性,在WEB应用中越来越受欢迎,这样的道理同样适用于CoAP。一个CoAP资源可以被一个URI所描述,例如一个设备可以测量温度,那么这个温度传感器的URI被描述为:CoAP://machine.address:5683/sensors/temperature。请注意。后面的 temperature,我觉得更像是表示客户端的身份的信息,不知道理解的对不对,就像下你个面这样 。

Vqq15d.png

VqqwVg.png

关于COAP的安全问题:

COAP使用DTLS来做安全传输层,该层运行于UDP之上,当前考虑使用DTLS时,需要考虑设备终端资源受限情况, 有些资源有限设备无法运行DTLS安全加密算法。

做安全加密,需要根据应用场景需要,对应只上报数据,且数据敏感度不高场景,可以不考虑加入安全层。

Contents
  1. 1. 要求
  2. 2. 基本步骤
  3. 3. 过程及有关程序代码
    1. 3.1. 1、 搭建局域网
    2. 3.2. 2、开启服务器
    3. 3.3. 3、 客户端请求连接,服务器返回信息
    4. 3.4. 4、抓包信息
  4. 4. 分析
    1. 4.1. 关于COAP的安全问题: