日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lorawan服务器通信协议,LoRaWAN协议(三)–Server端数据协议

發布時間:2023/12/9 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lorawan服务器通信协议,LoRaWAN协议(三)–Server端数据协议 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LoRaWAN Server 端架構

LoRaWAN 的server包括 NS(Network server)、AS(application server)、CS(Custom server)….

其中NS和AS是必不可少的,是完成LoRaWAN協議的重要組成部分

NS 職責

NS是直接與GW通信的服務器,也是AS和GW之間的橋梁

我所知道的工作有如下幾點:

驗證數據的合法性(校驗MIC)

從GW的信息中提取數據,整理成NS 的JSON數據包

將校驗合法的數據打包成新的JSON包上傳至AS

OTAA入網時向AS發送請求入網消息,然后再將入網信息告訴AS,當獲取AS傳來的入網的信息,告訴GW

GW 和 AS之間的數據通道

有幾點需要注意的是NS端的數據不進行AES解密工作。

AS 職責

AS是server端的數據處理中心

它的工作有如下幾點:

上行數據的解密

下行數據的加密

OTAA入網請求的處理(同意入網/生成APPSKEY/NWKSKEY)

CS 職責

CS負責將AS給的數據處理成用戶自定義的數據協議格式,也就是說,CS端必須是用戶來完成的,因為上面運行的是用戶的協議。這里也就不再多說了。

抓包分析

以下是我在本地服務器端通過抓到得來的數據,我們通過分析數據包來理解數據的走向已及現有的server端處理流程。抓包使用的是tcpdump。

1.NS->AS數據

這是一幀從NS->AS的數據,使用的是TCP方式,AS的數據端口為4000。從data部分我們可以看出來,這是一個未解密的數據。

15:30:53.662471 IP localhost.60795 > localhost.4000: Flags [P.], seq 13:328, ack 14,

win 442, options [nop,nop,TS val 414153 ecr 414145], length 315

0x0000: 4500 016f aee3 4000 4006 8ca3 7f00 0001

0x0010: 7f00 0001 ed7b 0fa0 5505 b988 2261 4f1b

0x0020: 8018 01ba ff63 0000 0101 080a 0006 51c9

0x0030: 0006 51c1 7b22 6170 7022 3a7b 226d 6f74

0x0040: 6565 7569 223a 2234 6137 3730 3032 3031

0x0050: 3631 3031 3622 2c22 6469 7222 3a22 7570

0x0060: 222c 2273 6571 6e6f 223a 3532 332c 2275

0x0070: 7365 7264 6174 6122 3a7b 2270 6f72 7422

0x0080: 3a32 2c22 7061 796c 6f61 6422 3a22 5645

0x0090: 7666 6f56 2b72 6631 5838 4177 316e 6c52

0x00a0: 7077 227d 2c22 6d6f 7465 7478 223a 7b22

0x00b0: 6672 6571 223a 3437 312e 352c 2264 6174

0x00c0: 7222 3a22 5346 3132 4257 3132 3522 2c22

0x00d0: 636f 6472 223a 2234 2f35 222c 2261 6472

0x00e0: 223a 6661 6c73 657d 2c22 6777 7278 223a

0x00f0: 5b7b 2265 7569 223a 2266 6666 6562 3832

0x0100: 3765 6266 3231 6130 3722 2c22 7469 6d65

0x0110: 223a 2232 3031 362d 3131 2d32 3454 3135

0x0120: 3a33 303a 3533 5a22 2c22 7469 6d65 6672

0x0130: 6f6d 6761 7465 7761 7922 3a66 616c 7365

0x0140: 2c22 6368 616e 223a 342c 2272 6663 6822

0x0150: 3a30 2c22 7273 7369 223a 2d37 392c 226c

0x0160: 736e 7222 3a2d 3136 2e35 7d5d 7d7d 00

提取其中的數據部分為:

{

"app": {

"moteeui": "4a770020161016",

"dir": "up",

"seqno": 523,

"userdata": {

"port": 2,

"payload": "VEvfoV+rf1X8Aw1nlRpw"

},

"motetx": {

"freq": 471.5,

"datr": "SF12BW125",

"codr": "4/5",

"adr": false

},

"gwrx": [

{

"eui": "fffeb827ebf21a07",

"time": "2016-11-24T15:30:53Z",

"timefromgateway": false,

"chan": 4,

"rfch": 0,

"rssi": -79,

"lsnr": -16.5

}

]

}

}

再把app.userdata.payload 做base64解碼之后,得到的payload內容是這個:

app.userdata.payload base64 decoded:

\x54 \x4b \xdf \xa1 \x5f \xab \x7f \x55

\xfc \x03 \x0d \x67 \x95 \x1a \x70

此時看到的payload因為是加密的,所以完全看不出來數據內容是什么。

不過在這里,我們可以看到,NS已經將GW上傳的數據做了一定的解析,封裝成了另外一種JSON格式,由此,我們不難得出,NS做的工作包括–base64解碼/MIC校驗/GW數據包的重新組包

2.AS->CS數據

這是一幀從AS->CS的數據,使用的是TCP方式,CS的數據端口為5000。從data部分我們可以看出來,這是一個已經解密完成的數據了。

15:30:53.663219 IP localhost.36774 > localhost.5000: Flags [P.], seq 13:328, ack 13,

win 342, options [nop,nop,TS val 414153 ecr 414140], length 315

0x0000: 4500 016f 928b 4000 4006 a8fb 7f00 0001

0x0010: 7f00 0001 8fa6 1388 2a2a 93a0 9d70 4aae

0x0020: 8018 0156 ff63 0000 0101 080a 0006 51c9

0x0030: 0006 51bc 7b22 6170 7022 3a7b 226d 6f74

0x0040: 6565 7569 223a 2234 6137 3730 3032 3031

0x0050: 3631 3031 3622 2c22 6469 7222 3a22 7570

0x0060: 222c 2273 6571 6e6f 223a 3532 332c 2275

0x0070: 7365 7264 6174 6122 3a7b 2270 6f72 7422

0x0080: 3a32 2c22 7061 796c 6f61 6422 3a22 4151

0x0090: 4944 4241 5547 4277 674a 4367 734d 4451

0x00a0: 3450 227d 2c22 6d6f 7465 7478 223a 7b22

0x00b0: 6672 6571 223a 3437 312e 352c 2264 6174

0x00c0: 7222 3a22 5346 3132 4257 3132 3522 2c22

0x00d0: 636f 6472 223a 2234 2f35 222c 2261 6472

0x00e0: 223a 6661 6c73 657d 2c22 6777 7278 223a

0x00f0: 5b7b 2265 7569 223a 2266 6666 6562 3832

0x0100: 3765 6266 3231 6130 3722 2c22 7469 6d65

0x0110: 223a 2232 3031 362d 3131 2d32 3454 3135

0x0120: 3a33 303a 3533 5a22 2c22 7469 6d65 6672

0x0130: 6f6d 6761 7465 7761 7922 3a66 616c 7365

0x0140: 2c22 6368 616e 223a 342c 2272 6663 6822

0x0150: 3a30 2c22 7273 7369 223a 2d37 392c 226c

0x0160: 736e 7222 3a2d 3136 2e35 7d5d 7d7d 00

提取其中的數據部分為:

{

"app": {

"moteeui": "4a770020161016",

"dir": "up",

"seqno": 523,

"userdata": {

"port": 2,

"payload": "AQIDBAUGBwgJCgsMDQ4P"

},

"motetx": {

"freq": 471.5,

"datr": "SF12BW125",

"codr": "4/5",

"adr": false

},

"gwrx": [

{

"eui": "fffeb827ebf21a07",

"time": "2016-11-24T15:30:53Z",

"timefromgateway": false,

"chan": 4,

"rfch": 0,

"rssi": -79,

"lsnr": -16.5

}

]

}

}

再把app.userdata.payload 做base64解碼之后,得到的payload內容是這個:

\x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08

\x09 \x0a \x0b \x0c \x0d \x0e \x0f

而此時,數據已經完全解密了,可以看到數據就是在AS解密的,解密完再發送給CS,CS再做進一步用戶協議的處理。

在這里,我們可以看到,AS已經將NS傳輸過來的JSON包的payload部分做了解密,然后再傳給了CS。所以解密工作是在AS完成的。

總結

以上是生活随笔為你收集整理的lorawan服务器通信协议,LoRaWAN协议(三)–Server端数据协议的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。