物聯網協議Coap協議介紹


COAP協議簡介

Coap(Constrained Application Protocol)是一種在物聯網世界的類web協議,它的詳細規范定義在 RFC 7252。COAP名字翻譯來就是“受限應用協議”,顧名思義,使用在資源受限的物聯網設備上。物聯網設備的ram,rom都通常非常小,運行TCP和HTTP是不可以接受的。

COAP協議特點

1 COAP協議網絡傳輸層由TCP改為UDP。

 

 

COAP協議層

2 它基於REST,server的資源地址和互聯網一樣也有類似url的格式,客戶端同樣有POST,GET,PUT,DELETE方法來訪問server,對HTTP做了簡化。

3 COAP是二進制格式的,HTTP是文本格式的,COAP比HTTP更加緊湊。

4 輕量化,COAP最小長度僅僅4B,一個HTTP的頭都幾十個B了。

5 支持可靠傳輸,數據重傳,塊傳輸。 確保數據可靠到達。

6 支持IP多播, 即可以同時向多個設備發送請求。

7 非長連接通信,適用於低功耗物聯網場景。

COAP協議消息類型

COAP協議有4種消息類型

CON—— 需要被確認的請求,如果CON請求被發送,那么對方必須做出響應。這有點像TCP,對方必須給確認收到消息,用以可靠消息傳輸。

 

 

 

可靠消息傳輸

NON—— 不需要被確認的請求,如果NON請求被發送,那么對方不必做出回應。這適用於消息會重復頻繁的發送,丟包不影響正常操作。這個和UDP很像。用以不可靠消息傳輸。

 

 

不可靠消息傳輸

ACK —— 應答消息,對應的是CON消息的應答。

RST —— 復位消息,可靠傳輸時候接收的消息不認識或錯誤時,不能回ACK消息,必須回RST消息。

 

COAP消息格式

 

 

coap消息格式

消息頭(HEAD)

第一行是消息頭,必須有,固定4個byte。

Ver : 2bit, 版本信息,當前是必須寫0x01。

T: 2bit, 消息類型,包括 CON, NON. ACK, RST這4種。

TKL: 4bit,token長度, 當前支持0~8B長度,其他長度保留將來擴展用。

Code:8bit,分成前3bit(0~7)和后5bit(0~31),前3bit代表類型。 0代表空消息或者請求碼, 2開頭代表響應碼,取值如下:

1 0.00 Indicates an Empty message

2 0.01-0.31 Indicates a request.

3 1.00-1.31 Reserved

4 2.00-5.31 Indicates a response.

5 6.00-7.31 Reserved

Message ID:16bit, 代表消息MID,每個消息都有一個ID ,重發的消息MID不變

token(可選)用於將響應與請求匹配。 token值為0到8字節的序列。 ( 每條消息必須帶有一個標記, 即使它的長度為零)。 每個請求都帶有一個客戶端生成的token, 服務器在任何結果響應中都必須對其進行回應。token類似消息ID,用以標記消息的唯一性。token還是消息安全性的一個設置,使用全8字節的隨機數,使偽造的報文無法獲得驗證通過。option(可選,0個或者多個)

請求消息 與回應消息都可以0~多個options。 主要用於描述請求或者響應對應的各個屬性,類似參數或者特征描述,比如是否用到代理服務器,目的主機的端口等。

payload(可選)

實際攜帶數據內容, 若有, 前面加payload標識符“0xFF”,如果沒有payload標識符,那么就代表這是一個0長度的payload。如果存在payload標識符但其后跟隨的是0長度的payload,那么必須當作消息格式錯誤處理。

 
 
 
 
 
 

COAP的請求碼(requests)和響應碼(responses)

 

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

【0.02】POST方法——用於創建某資源

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

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

 

CoAP的URL

coap的url和HTTP的有很相似的地方,開頭是“coap”對應“http”或者“coaps”對應“https”。

HTTP的默認端口是tcp 80,coap的默認端口是udp 5683(coaps是5684)。

URL里面的“/”“&”“.”

下面三個URL的地址是一樣的。訪問example.com這個域名,端口是udp 5683,訪問的資源地址是~sensors/temp.xml。

coap://example.com:5683/~sensors/temp.xml

coap://EXAMPLE.com/%7Esensors/temp.xml

coap://EXAMPLE.com:/%7esensors/temp.xml

 

COAP的安全性

COAP的安全性是用DTLS加密實現的。DTLS的實現需要的資源和帶寬較多,如果是資源非常少的終端和極有限的帶寬下可能會跑不起來。DTLS僅僅在單播情況下適用。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM