偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

CoAP協(xié)議學習筆記——CoAP格式詳解

網(wǎng)絡 網(wǎng)絡管理
CoAP是受限制的應用協(xié)議(Constrained Application Protocol)的代名詞。在當前由PC機組成的世界,信息交換是通過TCP和應用層協(xié)議HTTP實現(xiàn)的。但是對于小型設備而言,實現(xiàn)TCP和HTTP協(xié)議顯然是一個過分的要求。

CoAP是受限制的應用協(xié)議(Constrained Application Protocol)的代名詞。在當前由PC機組成的世界,信息交換是通過TCP和應用層協(xié)議HTTP實現(xiàn)的。但是對于小型設備而言,實現(xiàn)TCP和HTTP協(xié)議顯然是一個過分的要求。為了讓小設備可以接入互聯(lián)網(wǎng),CoAP協(xié)議被設計出來。CoAP是一種應用層協(xié)議,它運行于UDP協(xié)議之上而不是像HTTP那樣運行于TCP之上。CoAP協(xié)議非常小巧,最小的數(shù)據(jù)包僅為4字節(jié)。

1 CoAP協(xié)議綜述

和其他TCP IP協(xié)議簇中的協(xié)議一樣,CoAP協(xié)議總是以“頭”的形式出現(xiàn)在負載之前,而負載和CoAP頭之間使用單字節(jié)0xFF分離。學習CoAP協(xié)議***的方法便是結合RFC文檔,詳細分析CoAP協(xié)議報文格式的每一部分,便是CoAP協(xié)議報文結構示意圖。

 

圖1.1 CoAP協(xié)議報文結構示意圖

圖1.1 CoAP協(xié)議報文結構示意圖

2 CoAP協(xié)議報文各部分

【Ver】 版本編號,指示CoAP協(xié)議的版本號。類似于HTTP 1.0 HTTP 1.1。版本編號占2位,取值為01B。

【T】報文類型,CoAP協(xié)議定了4種不同形式的報文,CON報文,NON報文,ACK報文和RST報文。

【TKL】CoAP標識符長度。CoAP協(xié)議中具有兩種功能相似的標識符,一種為Message ID(報文編號),一種為Token(標識符)。其中每個報文均包含消息編號,但是標識符對于報文來說是非必須的。

【Code】功能碼/響應碼。Code在CoAP請求報文和響應報文中具有不同的表現(xiàn)形式,Code占一個字節(jié),它被分成了兩部分,前3位一部分,后5位一部分,為了方便描述它被寫成了c.dd結構。其中0.XX表示CoAP請求的某種方法,而2.XX、4.XX或5.XX則表示CoAP響應的某種具體表現(xiàn)。

【Message ID】報文編號

【Token】標識符具體內(nèi)容,通過TKL指定Token長度。

【Option】報文選項,通過報文選項可設定CoAP主機,CoAP URI,CoAP請求參數(shù)和負載媒體類型等等。

【1111 1111B】CoAP報文和具體負載之間的分隔符。#p#

3 Code部分詳解

Code部分被分成了兩部分,為了便于閱讀,Code被描述為c.dd形式。具體內(nèi)容可參考RFC7252 #12.1.1 Method Codes

3.1 請求

在CoAP請求中,Code被定義為CoAP請求方法,這些方法有GET、POST、PUT和DELETE,這些方法和HTTP協(xié)議非常相似。

【0.01】GET方法——用于獲得某資源

【0.02】POST方法——用于創(chuàng)建某資源

【0.03】PUT方法——用于更新某資源

【0.04】DELETE方法——用于刪除某資源

3.2 響應

在CoAP響應中,Code被定義為CoAP響應碼,類似于HTTP 200 OK等等。

【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 請求選項和服務器生成內(nèi)容選項不一致。類似于HTTP 406。

【4.12】Precondition Failed 請求參數(shù)不足。類似于HTTP 412。

【4.15】Unsuppor Conten-Type 請求中的媒體類型不被支持。類似于HTTP 415。

【5.00】Internal Server Error 服務器內(nèi)部錯誤。類似于HTTP 500。

【5.01】Not Implemented 服務器無法支持請求內(nèi)容。類似于HTTP 501。

【5.02】Bad Gateway 服務器作為網(wǎng)關時,收到了一個錯誤的響應。類似于HTTP 502。

【5.03】Service Unavailable 服務器過載或者維護停機。類似于HTTP 503。

【5.04】Gateway Timeout 服務器作為網(wǎng)關時,執(zhí)行請求時發(fā)生超時錯誤。類似于HTTP 504。

【5.05】Proxying Not Supported 服務器不支持代理功能。#p#

4 Option部分詳解

CoAP支持多個Option,CoAP的Option的表示方法比較特殊,采用增量的方式描述,細節(jié)可參考RFC7252 #3.1

圖4.1 CoAP部分Option定義

圖4.1 CoAP部分Option定義

一般情況下Option部分包含Option Delta、Option Length和Option Value三部分。

【Option Delta】表示Option的增量,當前的Option的具體編號等于之前所有Option Delta的總和。

【Option Length】表示Option Value的具體長度。

【Option Value】表示Option具體內(nèi)容

CoAP中所有的Option都采用編號的方式,這些Option及編號的定義如下圖所示。

 

圖4.2 Option編號內(nèi)容

圖4.2 Option編號內(nèi)容

在這些option中,Uri-Host、Uri-Port、Uri-Path和Uri-Query等和資源“位置”和參數(shù)有關。

【3】Uri-Host:CoAP主機名稱,例如iot.eclipse.org

【7】Uri-Port:CoAP端口號,默認為5683

【11】Uri-Path:資源路由或路徑,例如\temperature。資源路徑采用UTF8字符串形式,長度不計***個"\"。

【15】Uri-Query:訪問資源參數(shù),例如?value1=1&value2=2,參數(shù)與參數(shù)之間使用“&”分隔,Uri-Query和Uri-Path之間采用“?”分隔。

在這些option中,Content-Format和Accept用于表示CoAP負載的媒體格式

【12】Content-Format:指定CoAP復雜媒體類型,媒體類型采用整數(shù)描述,例如application/json對應整數(shù)50,application/octet-stream對應整數(shù)40。

【17】Accept: 指定CoAP響應復雜中的媒體類型,媒體類型的定義和Content-Format相同。

CoAP協(xié)議中支持多個Option,例如

***個Option Delta=11,表示該Option表示Uri-Path(11)

第二個Option Delta=1,表示該Option=1+11,表示Content-Format(12)

第三個Option Delta=3,表示該Option=3+1+11,表示Uri-Query(15)

CoAP采用這樣的方式表示多個Option,而每種Option都可以在HTTP協(xié)議中找到對應項。#p#

5 Content-Format描述

CoAP支持多種媒體類型,具體可參考RFC7252 #12.3。從下圖的信息可以發(fā)現(xiàn),CoAP協(xié)議中關于媒體類型的定義比較簡單,未來應該會根據(jù)實際情況擴展。

 

圖5.1 Content-Format編號內(nèi)容

圖5.1 Content-Format編號內(nèi)容

【text/plain】 編號為0,表示負載為字符串形式,默認為UTF8編碼。

【application/link-format】編號為40,CoAP資源發(fā)現(xiàn)協(xié)議中追加定義,該媒體類型為CoAP協(xié)議特有。

【application/xml】編號為41,表示負載類型為XML格式。

【application/octet-stream】編號為42,表示負載類型為二進制格式。

【application/exi】編號為47,表示負載類型為“精簡XML”格式。(翻譯不一定準確)

另外,還有一種格式也北IANA認定,也會在CoAP協(xié)議中廣泛使用那便是CBOR格式,該格式可理解為二進制JSON格式。

【applicaiton/cbor】編號為60。

6 示例

該示例來自于RFC7252。

【流程描述】

CoAP客戶端通過GET方法從Server端獲得溫度傳感器數(shù)據(jù),CoAP URI如下

coap://www.server.com/temperautre

CoAP請求采用CON報文,Server接收到CON報文必須返回一個ACK報文。CoAP請求采用0.01 GET方法,若操作成功CoAP Server返回2.05 Content,相當于HTTP 200 OK。請求和響應的MID必須完全相同,此處為0x7d34。請求響應中的Token域為空。CoAP請求中包含Option,該Option的類型為Uri-Path,那么Option Delta的值為0+11=11,Option Value的值為字符串形式的“temperature”。CoAP返回中包含溫度數(shù)據(jù),使用字符串形式描述,具體值為"22.3"。

圖6.1 CoAP 請求響應流程

圖6.1 CoAP 請求響應流程

【格式描述】

 

圖6.2 CoAP請求響應具體格式

圖6.2 CoAP請求響應具體格式

7 總結

一旦熟悉了CoAP協(xié)議的格式,那么再學習CoAP協(xié)議的應用就輕松多了。

責任編輯:藍雨淚 來源: CSDN博客
相關推薦

2023-09-07 14:59:42

物聯(lián)網(wǎng)MQTTCoAP

2023-11-18 19:41:51

2019-10-17 09:07:49

TCPUDPHTTP

2019-12-27 10:35:59

物聯(lián)網(wǎng)協(xié)議LWM2M MQTTCoAP

2022-08-31 09:05:08

CoAPLwM2MOthers

2023-10-11 11:59:50

Mainflux物聯(lián)網(wǎng)平臺

2010-07-16 14:37:26

Perl格式化輸出

2010-07-15 11:29:25

Perl格式化輸出

2015-08-20 08:57:29

物聯(lián)網(wǎng)實時協(xié)議

2020-02-20 22:44:01

通信協(xié)議物聯(lián)網(wǎng)終端設備

2023-04-18 16:12:14

2009-11-12 14:57:18

ASON路由協(xié)議

2023-05-06 08:00:25

通訊協(xié)議字節(jié)

2022-10-10 11:10:51

物聯(lián)網(wǎng)數(shù)據(jù)傳輸協(xié)議

2025-03-26 01:55:00

Spring協(xié)議物聯(lián)網(wǎng)

2009-12-14 15:33:50

動態(tài)路由協(xié)議

2010-06-03 11:12:55

Hadoop

2009-12-15 14:01:10

路由選擇協(xié)議

2010-06-29 13:22:26

UML類圖

2010-08-31 11:25:15

點贊
收藏

51CTO技術棧公眾號