CoAP協(xié)議格式詳解_第1頁(yè)
CoAP協(xié)議格式詳解_第2頁(yè)
CoAP協(xié)議格式詳解_第3頁(yè)
CoAP協(xié)議格式詳解_第4頁(yè)
CoAP協(xié)議格式詳解_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

CoAP是受限制的應(yīng)用協(xié)議(ConstrainedApplicationProtocol)的代名詞。在當(dāng)前由PC機(jī)組成的世界,信息交換是通過(guò)TCP和應(yīng)用層協(xié)議HTTP實(shí)現(xiàn)的。但是對(duì)于小型設(shè)備而言,實(shí)現(xiàn)TCP和HTTP協(xié)議顯然是一個(gè)過(guò)分的要求。為了讓小設(shè)備可以接入互聯(lián)網(wǎng),CoAP協(xié)議被設(shè)計(jì)出來(lái)。CoAP是一種應(yīng)用層協(xié)議,它運(yùn)行于UDP協(xié)議之上而不是像HTTP那樣運(yùn)行于TCP之上。CoAP協(xié)議非常小巧,最小的數(shù)據(jù)包僅為4字節(jié)。1CoAP協(xié)議綜述和其他TCPIP協(xié)議簇中的協(xié)議一樣,CoAP協(xié)議總是以“頭”的形式出現(xiàn)在負(fù)載之前,而負(fù)載和CoAP頭之間使用單字節(jié)0xFF分離。學(xué)習(xí)CoAP協(xié)議最好的方法便是結(jié)合RFC文檔,詳細(xì)分析CoAP協(xié)議報(bào)文格式的每一部分,便是CoAP協(xié)議報(bào)文結(jié)構(gòu)示意圖。圖1.1CoAP協(xié)議報(bào)文結(jié)構(gòu)示意圖2CoAP協(xié)議報(bào)文各部分【Ver】版本編號(hào),指示CoAP協(xié)議的版本號(hào)。類(lèi)似于HTTP1.0HTTP1.1。版本編號(hào)占2位,取值為01B?!綯】報(bào)文類(lèi)型,CoAP協(xié)議定了4種不同形式的報(bào)文,CON報(bào)文,NON報(bào)文,ACK報(bào)文和RST報(bào)文?!綯KL】CoAP標(biāo)識(shí)符長(zhǎng)度。CoAP協(xié)議中具有兩種功能相似的標(biāo)識(shí)符,一種為MessageID(報(bào)文編號(hào)),一種為T(mén)oken(標(biāo)識(shí)符)。其中每個(gè)報(bào)文均包含消息編號(hào),但是標(biāo)識(shí)符對(duì)于報(bào)文來(lái)說(shuō)是非必須的?!綜ode】功能碼/響應(yīng)碼。Code在CoAP請(qǐng)求報(bào)文和響應(yīng)報(bào)文中具有不同的表現(xiàn)形式,Code占一個(gè)字節(jié),它被分成了兩部分,前3位一部分,后5位一部分,為了方便描述它被寫(xiě)成了c.dd結(jié)構(gòu)。其中0.XX表示CoAP請(qǐng)求的某種方法,而2.XX、4.XX或5.XX則表示CoAP響應(yīng)的某種具體表現(xiàn)?!綧essageID】報(bào)文編號(hào)【Token】標(biāo)識(shí)符具體內(nèi)容,通過(guò)TKL指定Token長(zhǎng)度?!綩ption】報(bào)文選項(xiàng),通過(guò)報(bào)文選項(xiàng)可設(shè)定CoAP主機(jī),CoAPURI,CoAP請(qǐng)求參數(shù)和負(fù)載媒體類(lèi)型等等。【11111111B】CoAP報(bào)文和具體負(fù)載之間的分隔符。3Code部分詳解Code部分被分成了兩部分,為了便于閱讀,Code被描述為c.dd形式。具體內(nèi)容可參考RFC7252#12.1.1MethodCodes3.1請(qǐng)求在CoAP請(qǐng)求中,Code被定義為CoAP請(qǐng)求方法,這些方法有GET、POST、PUT和DELETE,這些方法和HTTP協(xié)議非常相似。【0.01】GET方法——用于獲得某資源【0.02】POST方法——用于創(chuàng)建某資源【0.03】PUT方法——用于更新某資源【0.04】DELETE方法——用于刪除某資源3.2響應(yīng)在CoAP響應(yīng)中,Code被定義為CoAP響應(yīng)碼,類(lèi)似于HTTP200OK等等?!?.01】Created【2.02】Deleted【2.03】Valid【2.04】Changed【2.05】Content。類(lèi)似于HTTP200OK【4.00】BadRequest請(qǐng)求錯(cuò)誤,服務(wù)器無(wú)法處理。類(lèi)似于HTTP400?!?.01】Unauthorized沒(méi)有范圍權(quán)限。類(lèi)似于HTTP401?!?.02】BadOption請(qǐng)求中包含錯(cuò)誤選項(xiàng)?!?.03】Forbidden服務(wù)器拒絕請(qǐng)求。類(lèi)似于HTTP403?!?.04】NotFound服務(wù)器找不到資源。類(lèi)似于HTTP404?!?.05】MethodNotAllowed非法請(qǐng)求方法。類(lèi)似于HTTP405?!?.06】NotAcceptable請(qǐng)求選項(xiàng)和服務(wù)器生成內(nèi)容選項(xiàng)不一致。類(lèi)似于HTTP406。【4.12】PreconditionFailed請(qǐng)求參數(shù)不足。類(lèi)似于HTTP412?!?.15】UnsupporConten-Type請(qǐng)求中的媒體類(lèi)型不被支持。類(lèi)似于HTTP415?!?.00】InternalServerError服務(wù)器內(nèi)部錯(cuò)誤。類(lèi)似于HTTP500。【5.01】NotImplemented服務(wù)器無(wú)法支持請(qǐng)求內(nèi)容。類(lèi)似于HTTP501?!?.02】BadGateway服務(wù)器作為網(wǎng)關(guān)時(shí),收到了一個(gè)錯(cuò)誤的響應(yīng)。類(lèi)似于HTTP502?!?.03】ServiceUnavailable服務(wù)器過(guò)載或者維護(hù)停機(jī)。類(lèi)似于HTTP503?!?.04】GatewayTimeout服務(wù)器作為網(wǎng)關(guān)時(shí),執(zhí)行請(qǐng)求時(shí)發(fā)生超時(shí)錯(cuò)誤。類(lèi)似于HTTP504?!?.05】ProxyingNotSupported服務(wù)器不支持代理功能。4Option部分詳解CoAP支持多個(gè)Option,CoAP的Option的表示方法比較特殊,采用增量的方式描述,細(xì)節(jié)可參考RFC7252#3.1圖4.1CoAP部分Option定義一般情況下Option部分包含OptionDelta、OptionLength和OptionValue三部分?!綩ptionDelta】表示Option的增量,當(dāng)前的Option的具體編號(hào)等于之前所有OptionDelta的總和?!綩ptionLength】表示OptionValue的具體長(zhǎng)度。【OptionValue】表示Option具體內(nèi)容CoAP中所有的Option都采用編號(hào)的方式,這些Option及編號(hào)的定義如下圖所示。圖4.2Option編號(hào)內(nèi)容在這些option中,Uri-Host、Uri-Port、Uri-Path和Uri-Query等和資源“位置”和參數(shù)有關(guān)?!?】Uri-Host:CoAP主機(jī)名稱(chēng),例如【7】Uri-Port:CoAP端口號(hào),默認(rèn)為5683【11】Uri-Path:資源路由或路徑,例如\temperature。資源路徑采用UTF8字符串形式,長(zhǎng)度不計(jì)第一個(gè)"\"?!?5】Uri-Query:訪(fǎng)問(wèn)資源參數(shù),例如?value1=1&value2=2,參數(shù)與參數(shù)之間使用“&”分隔,Uri-Query和Uri-Path之間采用“?”分隔。在這些option中,Content-Format和Accept用于表示CoAP負(fù)載的媒體格式【12】Content-Format:指定CoAP復(fù)雜媒體類(lèi)型,媒體類(lèi)型采用整數(shù)描述,例如application/json對(duì)應(yīng)整數(shù)50,application/octet-stream對(duì)應(yīng)整數(shù)40?!?7】Accept:指定CoAP響應(yīng)復(fù)雜中的媒體類(lèi)型,媒體類(lèi)型的定義和Content-Format相同。CoAP協(xié)議中支持多個(gè)Option,例如第一個(gè)OptionDelta=11,表示該Option表示Uri-Path(11)第二個(gè)OptionDelta=1,表示該Option=1+11,表示Content-Format(12)第三個(gè)OptionDelta=3,表示該Option=3+1+11,表示Uri-Query(15)CoAP采用這樣的方式表示多個(gè)Option,而每種Option都可以在HTTP協(xié)議中找到對(duì)應(yīng)項(xiàng)。5Content-Format描述CoAP支持多種媒體類(lèi)型,具體可參考RFC7252#12.3。從下圖的信息可以發(fā)現(xiàn),CoAP協(xié)議中關(guān)于媒體類(lèi)型的定義比較簡(jiǎn)單,未來(lái)應(yīng)該會(huì)根據(jù)實(shí)際情況擴(kuò)展。圖5.1Content-Format編號(hào)內(nèi)容【text/plain】編號(hào)為0,表示負(fù)載為字符串形式,默認(rèn)為UTF8編碼。【application/link-format】編號(hào)為40,CoAP資源發(fā)現(xiàn)協(xié)議中追加定義,該媒體類(lèi)型為CoAP協(xié)議特有?!綼pplication/xml】編號(hào)為41,表示負(fù)載類(lèi)型為XML格式?!綼pplication/octet-stream】編號(hào)為42,表示負(fù)載類(lèi)型為二進(jìn)制格式。【application/exi】編號(hào)為47,表示負(fù)載類(lèi)型為“精簡(jiǎn)XML”格式。(翻譯不一定準(zhǔn)確)另外,還有一種格式也北IANA認(rèn)定,也會(huì)在CoAP協(xié)議中廣泛使用那便是CBOR格式,該格式可理解為二進(jìn)制JSON格式?!綼pplicaiton/cbor】編號(hào)為60。6示例該示例來(lái)自于RFC7252。【流程描述】CoAP客戶(hù)端通過(guò)GET方法從Server端獲得溫度傳感器數(shù)據(jù),CoAPURI如下coap:///temperautreCoAP請(qǐng)求采用CON報(bào)文,Server接收到CON報(bào)文必須返回一個(gè)ACK報(bào)文。CoAP請(qǐng)求采用0.01GET方法,若操作成功CoAPServer返回2.05Content,相當(dāng)于HTTP200OK。請(qǐng)求和響應(yīng)的MID必須完全相同,此處為0x7d

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論