2016年4月27日 星期三

CoAP基礎

From:http://blog.csdn.net/xukai871105/article/details/17734163

什麼是CoAP
    CoAP是受限制的應用協議(Constrained Application Protocol)的代名詞。最近幾年專家們預測會有更多的設備相互連接,而這些設備的數量將遠超人類的數量。在這種大背景下,物聯網和M2M技術應運而生。雖然對人們而言,連接入互聯網顯得方便容易,但是對於那些微型設備而言接入互聯網非常困難。在當前由PC機組成的世界,信息交換是通過TCP和應用層協議HTTP實現的。但是對於小型設備而言,實現TCP和HTTP協議顯然是一個過分的要求。為了讓小設備可以接入互聯網,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://machine.address:5683/sensors/temperature。請注意,CoAP的默認UDP端口號為5683。

CoAP觀察模式
    在物聯網的世界中,你需要去監控某個傳感器例如溫度或濕度等。在這種情況下,CoAP客戶端並不需要不停的查詢CoAP服務器端的數據變化情況。CoAP客戶端可以發送一個觀察請求到服務器端。從該時間點開始計算,服務器便會記住客戶端的連接信息,一旦溫度發生變化,服務器將會把新結果發送給客戶端。如果客戶端不在希望獲得溫度檢測結果,那麼客戶端將會發送一個RST復位請求,此時服務器便會清除與客戶端的連接信息。

CoAP塊傳輸
    CoAP協議的特點是傳輸的內容小巧精簡,但是在某些情況下不得不傳輸較大的數據。在這種情況下可以使用CoAP協議中的某個選項設定分塊傳輸的大小,那麼無論是服務器或客戶端可完成分片和組裝這兩個動作。



REF:
 

CoAP学习笔记

http://blog.csdn.net/xukai871105/article/details/44980041

A Great basic git learning website


http://pcottle.github.io/learnGitBranching/




How to use simple speedtest in RaspberryPi CLI

  pi@ChunchaiRPI2:/tmp $  wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py --2023-06-26 10:4...