物聯網數據接入篇-應用層 CoAP(7)
這篇文章,我們來學習下物聯網數據接入中的應用層協議——CoAP,這種基于REST架構的協議適用于在資源受限的低功耗設備上,其工作原理、應用場景等信息,詳見本文。
CoAP,The Constrained Application Protocol,受限應用協議,專門為物聯網和其他受限環境設計的一種輕量級協議,基于REST架構,與HTTP類似,但是基于 UDP,更加簡潔和高效。CoAP協議適用在資源受限的低功耗設備上,尤其是NB-IoT的設備使用。設備醒了直接發數據,發完設備休眠,省電。
他是個應用層協議,聯網方式,就是網絡接口層可以用 Wi-Fi 連接、以太網連接、蜂窩網絡連接、藍牙連接、低功耗廣域網(LPWAN)連接(如 LoRa、NB-IoT 等)。
CoAP 模仿 HTTP 的 REST 模型,服務端以 URI 方式創建資源,客戶端可以通過 GET、PUT、POST、DELETE方式訪問這些資源,并且協議風格也和HTTP極為相似。
MQTT可以實現一個最簡單的loT架構:Device+MQTT服務器+APP。手機端或Web端可以直接從MQTT服務器訂想要的主題。
而CoAP可能需要這樣的架構:CoAP+ Web+ DataBase+App。使用CoAP必須經過DataBase才能轉給第三方。
組成部分
主要包括客戶端、服務器和消息格式等。
工作原理
客戶端向服務器發送請求消息,服務器根據請求進行相應的響應。CoAP 采用了類似于 HTTP 的請求/響應模式,但針對受限環境進行了優化。
CoAP 報文:
報文結構:CoAP報文由固定的4字節頭部、0-8字節的Token、0或多個TLV格式的Option、可選的Payload組成。
報文類型:CoAP定義了四種報文類型,分別是CON(需要應答的報文)、NON(無需應答的報文)、ACK(應答報文)和RST(復位報文)。
Code字段:Code字段占一個字節,用于表示請求方法或響應碼。例如,0.01表示GET方法,2.00表示成功響應。文本類型(text/plain)、二進制類型(application/octet-stream)、JSON類型(application/json)是在物聯網中應用最廣泛的三種媒體類型,application/link-format 則是專屬于 CoAP 的媒體類型,一般在 CoAP 資源發現中使用。
Token:用于匹配Request和Response,或者用于消息防偽造等場景。
Options:通過報文選項可設定CoAP請求參數和負載媒體類型等。
Payload:真正有用的被交互的數據。
CoAP 和 HTTP對比
特點
輕量級:協議開銷小,適合資源受限設備。COAP 是二進制格式的,HTTP 是文本格式的,COAP 比 HTTP 更加緊湊。COAP 最小長度僅僅4B,一個HTTP的頭都幾十個B了。
低功耗:非長連接通信,適應低功耗網絡的需求。
支持可靠傳輸:雖然基于 UDP,但通過四種報文類型的組合及重傳機制提高了傳輸的可靠性。
應用場景
智能家居:如智能家電的控制和狀態監測。
工業物聯網:工廠內設備的通信。
智能農業:農田監測設備的數據傳輸。
可穿戴設備等領域,實現設備與服務器之間的高效交互。
本文由 @躍曰 原創發布于人人都是產品經理。未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
- 目前還沒評論,等你發揮!