【 原連線位址】
更多coap文章請參考博文索引
——【 物聯網學習筆記——索引博文】
學習coap最簡單的方法便是閱讀協議文件。該協議文件並不是那麼複雜。但如果有乙個coap的簡單介紹就再好不過了。
什麼是coap
coap是一種應用層協議
,它執行於
udp協議之上而不是像http那樣執行於tcp之上。coap協議非常小巧,最小的資料報僅為4位元組。
coap協議是否可以替換http協議?
coap並不能替代http協議,但是對於那些小裝置(256kb flash 32kb ram 20mhz主頻)而言coap的確是乙個好的解決方案。
coap訊息型別
coap採用與http協議相同的請求響應工作模式。coap協議共有4中不同的訊息型別。
con——需要被確認的請求,如果con請求被傳送,那麼對方必須做出響應。
non——不需要被確認的請求,如果non請求被傳送,那麼對方不必做出回應。
ack——應答訊息,接受到con訊息的響應。
rst——復位訊息,當接收者接受到的訊息包含乙個錯誤,接受者解析訊息或者不再關心傳送者傳送的內容,那麼復位訊息將會被傳送。
coap訊息結構
乙個coap訊息最小為4個位元組,以下是coap協議不同部分的描述。
【版本version】:類似於ipv6和ipv6,僅僅是乙個版本號。
【訊息型別message type】:con,non,ack,rst。
【訊息id message id】:每個coap訊息都有乙個id,在一次會話中id總是保持不變。但在這個會話之後該id會被**利用。
【標記 token】:標記是id的另一種表現。
【選項 options】:coap選項類似於http請求頭,它包括coap訊息本身,例如coap埠號,coap主機和coap查詢字串等。
【負載payload】:真正有用的被互動的資料。
圖 coap訊息結構
coap的url
在http的世界中,restful協議由於其簡單性和適用性,在web應用中越來越受歡迎,這樣的道理同樣適用於coap。乙個coap資源可以被乙個uri所描述,例如乙個裝置可以測量溫度,那麼這個溫度感測器的uri被描述為:coap:請注意,coap的預設udp埠號為5683。
coap觀察模式
在物聯網的世界中,你需要去監控某個感測器例如溫度或濕度等。在這種情況下,coap客戶端並不需要不停的查詢coap伺服器端的資料變化情況。coap客戶端可以傳送乙個觀察請求到伺服器端。從該時間點開始計算,伺服器便會記住客戶端的連線資訊,一旦溫度發生變化,伺服器將會把新結果傳送給客戶端。如果客戶端不在希望獲得溫度檢測結果,那麼客戶端將會傳送乙個rst復位請求,此時伺服器便會清除與客戶端的連線資訊。
coap塊傳輸
coap協議的特點是傳輸的內容小巧精簡,但是在某些情況下不得不傳輸較大的資料。在這種情況下可以使用coap協議中的某個選項設定分塊傳輸的大小,那麼無論是伺服器或客戶端可完成分片和組裝這兩個動作。
參考資料
【csdn部落格:
coap協議和開源實現】
CoAP協議學習筆記 CoAP格式詳解 1
coap是受限制的應用協議 constrained application protocol 的代名詞。在當前由pc機組成的世界,資訊交換是通過tcp和應用層協議http實現的。但是對於小型裝置而言,實現tcp和http協議顯然是乙個過分的要求。為了讓小裝置可以接入網際網路,coap協議被設計出來。...
CoAP協議學習筆記 CoAP格式詳解 1
coap是受限制的應用協議 constrained application protocol 的代名詞。在當前由pc機組成的世界,資訊交換是通過tcp和應用層協議http實現的。但是對於小型裝置而言,實現tcp和http協議顯然是乙個過分的要求。為了讓小裝置可以接入網際網路,coap協議被設計出來。...
COAP協議格式
和其他tcp ip協議簇中的協議一樣,coap協議總是以 頭 的形式出現在負載之前,而負載和coap頭之間使用單位元組0xff分離。學習coap協議最好的方法便是結合rfc文件,詳細分析coap協議報文格式的每一部分,便是coap協議報文結構示意圖。3.1 請求 在coap請求中,code被定義為c...