鴻蒙有乙個很重要的特性–分布式通訊系統。其通訊協議使用的是coap協議。
coap協議網路傳輸層由tcp改為udp。
它基於rest,server的資源位址和網際網路一樣也有類似url的格式,客戶端同樣有post,get,put,delete方法來訪問server,對http做了簡化。
coap是二進位制格式的,http是文字格式的,coap比http更加緊湊。
輕量化,coap最小長度僅僅4b,乙個http的頭都幾十個b了。
支援可靠傳輸,資料重傳,塊傳輸。 確保資料可靠到達。
支援ip多播, 即可以同時向多個裝置傳送請求。鴻蒙的裝置發現功能就是用的這個特性。
非長連線通訊,適用於低功耗物聯網場景。
支援觀察模式
coap協議有4種訊息型別
第一行是訊息頭,必須有,固定4個byte。
ver : 2bit, 版本資訊,當前是必須寫0x01。
t: 2bit, 訊息型別,包括 con, non. ack, rst這4種。
tkl: 4bit,token長度, 當前支援0~8b長度,其他長度保留將來擴充套件用。
code:8bit,分成前3bit(07)和後5bit(031),前3bit代表型別。 0代表空訊息或者請求碼, 2開頭代表響應碼,取值如下:
0.00 indicates an empty message
0.01-0.31 indicates a request.
1.00-1.31 reserved
2.00-5.31 indicates a response.
6.00-7.31 reserved
message id:16bit, 代表訊息mid,每個訊息都有乙個id ,重發的訊息mid不變
【0.01】get方法——用於獲得某資源
【0.02】post方法——用於建立某資源
【0.03】put方法——用於更新某資源
【0.04】delete方法——用於刪除某資源
1、 success 2.xx
這一型別的狀態碼,代表請求已成功被伺服器接收、理解、並接受。
2、 client error 4.xx
這類的狀態碼代表了客戶端看起來可能發生了錯誤,妨礙了伺服器的處理。
3、 server error 5.xx
這類狀態碼代表了伺服器在處理請求的過程中有錯誤或者異常狀態發生,也有可能是伺服器的軟硬體資源無法完成對請求的處理。
coap的url和http的有很相似的地方,開頭是「coap」對應「http」或者「coaps」對應「https」。
http的預設埠是tcp 80,coap的預設埠是udp 5683(coaps是5684)。
下面三個url的位址是一樣的。訪問example.com這個網域名稱,埠是udp 5683,訪問的資源位址是~sensors/temp.xml。
coap:
coap:
coap:
coap的安全性是用dtls加密實現的。dtls的實現需要的資源和頻寬較多,如果是資源非常少的終端和極有限的頻寬下可能會跑不起來。dtls僅僅在單播情況下適用。
使用者使用發現功能時,需要保證發現端裝置與被發現端裝置在同乙個區域網內,並且互相能收到對方以下流程的報文。
(1) 發現端裝置,發起discover請求後,使用coap協議在區域網內傳送廣播。報文如下:
分布式協議
分布式一致性 raft 協議 分布式容錯 複製協議見 分布式中的一致性與可用性之複製 分布式協議主要有 分布式事務其實是指會涉及到操作多個資料庫的事務。就是將對同一庫事務的概念擴大到了對多個庫的事務。目的是為了保證分布式系統中的資料一致性。分布式事務處理的關鍵是必須有一種方法可以知道事務在任何地方所...
分布式通訊方式 分布式訊息傳遞
談到系統間的協作,目前常用兩種方式 1 基於http協議 通過客戶端發起的get post請求,服務端接收request請求,處理請求,得到響應內容,通過網路傳送到客戶端,由瀏覽器解析出乙個視覺化的頁面。這種互動最大的優勢是實時性,通過http請求連線各個子系統,從而跨伺服器來完成乙個完整的業務流程...
分布式路由協議
路由收斂時間 從網路故障發生到所有路由器 表示式達到一致所需要的時間 路由收斂可能會引起兩個主要問題 路由黑洞和路由迴路。分布式路由協議在常用在控制平面。網路中的涉及 的每乙個節點通過分布式演算法計算推斷各自的 表。這些分布式協議基於兩個原則 1 每個節點向它的鄰居節點報告自己的路由資訊 2 一旦受...