野火lwip應(yīng)用開發(fā)實(shí)戰(zhàn)指南源碼及參考mqtt_第1頁
野火lwip應(yīng)用開發(fā)實(shí)戰(zhàn)指南源碼及參考mqtt_第2頁
野火lwip應(yīng)用開發(fā)實(shí)戰(zhàn)指南源碼及參考mqtt_第3頁
野火lwip應(yīng)用開發(fā)實(shí)戰(zhàn)指南源碼及參考mqtt_第4頁
野火lwip應(yīng)用開發(fā)實(shí)戰(zhàn)指南源碼及參考mqtt_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

MQTT協(xié)議講解和實(shí)踐(接入OneNET)夢(mèng)想還是要有的,萬一實(shí)現(xiàn)了呢?物聯(lián)網(wǎng)協(xié)議誰主沉浮?

實(shí)時(shí)協(xié)議是物聯(lián)網(wǎng)的一項(xiàng)根本性技術(shù),在物聯(lián)網(wǎng)領(lǐng)域發(fā)揮了重大的作用。目前物聯(lián)網(wǎng)設(shè)備所廣泛使用的四大實(shí)時(shí)協(xié)議:XMPP、HTTP、CoAP以及MQTT等可謂各擅所長、亦各有弊端。在對(duì)比哪種協(xié)議更適合物聯(lián)網(wǎng)之前,我們要先了解各種協(xié)議的偏重點(diǎn)。物聯(lián)網(wǎng)終端節(jié)點(diǎn)一般都是存儲(chǔ)和帶寬受限的嵌入式設(shè)備。XMPP協(xié)議基于XML,對(duì)于嵌入式設(shè)備來說,XML解析是超級(jí)困難的。HTTP協(xié)議對(duì)于嵌入式設(shè)備來說屬于重量級(jí),也不是很合適。因?yàn)槟壳拔锫?lián)網(wǎng)中的很多設(shè)備都是資源受限型的,所以只有少量的內(nèi)存空間和有限的計(jì)算能力。CoAP的全稱為受限應(yīng)用協(xié)議,其開發(fā)目的在于允許資源相對(duì)有限的設(shè)備利用UDP而非TCP通過互聯(lián)網(wǎng)實(shí)現(xiàn)通信。MQTT協(xié)議是由IBM開發(fā)的一個(gè)即時(shí)通訊的協(xié)議,是為大量計(jì)算能力有限且工作在低帶寬、不可靠網(wǎng)絡(luò)的遠(yuǎn)程傳感器和控制設(shè)備通訊而設(shè)計(jì)的一種協(xié)議。物聯(lián)網(wǎng)接入的挑戰(zhàn)

物聯(lián)網(wǎng)中的數(shù)據(jù)傳輸會(huì)面臨很多問題,比如在網(wǎng)絡(luò)不穩(wěn)定的情況下,如果保證數(shù)據(jù)的傳輸沒有問題,如何保證數(shù)據(jù)不被重復(fù)發(fā)送,連接斷開后如何進(jìn)行重連。總體來說,物聯(lián)網(wǎng)的接入會(huì)面臨以下幾個(gè)方面的挑戰(zhàn):設(shè)備、傳感器。物聯(lián)網(wǎng)接入對(duì)終端采集和控制設(shè)備要求高,且終端的改造以及網(wǎng)絡(luò)費(fèi)用成本也比較高。另外,其對(duì)終端的能耗要求也比較高。網(wǎng)絡(luò)?,F(xiàn)有的網(wǎng)絡(luò)傳輸貸款參差不齊,傳輸網(wǎng)絡(luò)不穩(wěn)定。服務(wù)器。高并發(fā)情況下,多客戶端的接入能力以及消息處理能力。為什么使用MQTT協(xié)議?MQTT(英語全稱,MessageQueueTelemetryTransport),中文翻譯過來就是遙測(cè)傳輸協(xié)議:其主要提供訂閱/發(fā)布模式,更為簡約、輕量,易于使用,針對(duì)受限環(huán)境(帶寬低、網(wǎng)絡(luò)延遲高、網(wǎng)絡(luò)通信不穩(wěn)定),屬于物聯(lián)網(wǎng)(InternetofThing)的一個(gè)傳輸協(xié)議。設(shè)計(jì)思想是開放、簡單、輕量、易于實(shí)現(xiàn)。這些特點(diǎn)使它適用于受限環(huán)境。例如,但不僅限于此:特別適合于網(wǎng)絡(luò)代價(jià)昂貴,帶寬低、不可靠的環(huán)境。能在處理器和內(nèi)存資源有限的嵌入式設(shè)備中運(yùn)行。使用發(fā)布/訂閱消息模式,提供一對(duì)多的消息發(fā)布,從而解除應(yīng)用程序耦合。使用TCP/IP提供網(wǎng)絡(luò)連接。提供LastWill和Testament特性通知有關(guān)各方客戶端異常中斷的機(jī)制。運(yùn)MQTT協(xié)議,設(shè)備可以很方便地連接到物聯(lián)網(wǎng)云服務(wù),管理設(shè)備并處理數(shù)據(jù),最后應(yīng)用到各種業(yè)務(wù)場(chǎng)景。MQTT的優(yōu)勢(shì)

MQTT的設(shè)計(jì)思想是開源、可靠、輕巧、簡單,MQTT的傳輸格式非常精小,最小的數(shù)據(jù)包只有2個(gè)比特,且無應(yīng)用消息頭。MQTT可以保證消息的可靠性,它包括三種不同的服務(wù)質(zhì)量(最多只傳一次、最少被傳一次、一次且只傳一次),如果客戶端意外掉線,可以使用“遺愿”發(fā)布一條消息,同時(shí)支持持久訂閱。MQTT在物聯(lián)網(wǎng)以及移動(dòng)應(yīng)用中的優(yōu)勢(shì)有:可靠傳輸。MQTT可以保證消息可靠安全的傳輸,并可以與企業(yè)應(yīng)用簡易集成。消息推送。支持消息實(shí)時(shí)通知、豐富的推送內(nèi)容、靈活的Pub-Sub以及消息存儲(chǔ)和過濾。低帶寬、低耗能、低成本。占用移動(dòng)應(yīng)用程序帶寬小,并且?guī)捓寐矢撸碾娏枯^少。服務(wù)質(zhì)量(QoS)

MQTT的設(shè)計(jì)初衷是為了在不可靠的網(wǎng)絡(luò)中運(yùn)作良好,為不同的場(chǎng)景提供了三個(gè)級(jí)別的服務(wù)質(zhì)量,允許客戶端指定自己想要的可靠性級(jí)別。QoSLevel0:至多一次這是最簡單的級(jí)別,無需客戶端確認(rèn),其可靠性與基礎(chǔ)網(wǎng)絡(luò)層TCP/IP一致。QoSLevel1:至少一次,有可能重復(fù)確保至少向客戶端發(fā)送一次信息,不過也可發(fā)送多次;在接收數(shù)據(jù)包時(shí),需要客戶端返回確認(rèn)消息(ACK包)。這種方式常用于傳遞確保交付的信息,但開發(fā)人員必須確保其系統(tǒng)可以處理重復(fù)的數(shù)據(jù)包。QoSLevel2:只有一次,確保消息只到達(dá)一次這是最不常見的服務(wù)質(zhì)量級(jí)別,確保消息發(fā)送且僅發(fā)送一次。這種方法需要交換4個(gè)數(shù)據(jù)包,同時(shí)也會(huì)降低消息代理的性能。由于相對(duì)比較復(fù)雜,在MQTT實(shí)現(xiàn)中通常會(huì)忽略這個(gè)級(jí)別,請(qǐng)確保在選擇數(shù)據(jù)庫或消息代理前檢查這個(gè)問題。MQTT中的服務(wù)質(zhì)量水平劃分MQTT發(fā)布/訂閱模式

發(fā)布/訂閱模式即Pub/Sub,是傳統(tǒng)客戶端/服務(wù)器模型(客戶端直接連接服務(wù)器)的替代。傳統(tǒng)的客戶端/服務(wù)器模型是客戶端直接連接到服務(wù)端(Endpoint),而發(fā)布/訂閱模式實(shí)現(xiàn)了客戶端的解耦。客戶端(Publisher,消息發(fā)布者)發(fā)送特定的消息到另一個(gè)客戶端(Subscriber,消息接收者)。這意味著發(fā)布者和訂閱者都無需關(guān)心對(duì)方的存在與否。它們之間還有第三個(gè)組件,即消息經(jīng)紀(jì)人(Broker),所有的發(fā)布者和接收者都要連接到消息經(jīng)紀(jì)人,消息經(jīng)紀(jì)人會(huì)過濾所有到來的消息,并根據(jù)需要分發(fā)這些消息。發(fā)布/訂閱模式實(shí)現(xiàn)了發(fā)布者和訂閱者之間的解耦,可以從多維度進(jìn)行區(qū)分:空間解耦:發(fā)布者和訂閱者均無需知道彼此的存在(比如對(duì)方的IP地址和端口)時(shí)間解耦:發(fā)布者和訂閱者無需同時(shí)運(yùn)行同步解耦:在發(fā)布或接收期間,雙方組件的操作不會(huì)暫??偟膩碚f,發(fā)布/訂閱模式從消息上對(duì)發(fā)布者和訂閱者進(jìn)行了解耦,并且通過對(duì)消息的過濾實(shí)現(xiàn)了只有某些客戶端才能受到相應(yīng)的消息。解耦包含了三個(gè)維度:空間、時(shí)間、同步。MQTT主題與主題過濾

MQTT是通過主題對(duì)消息進(jìn)行分類的,本質(zhì)上就是一個(gè)UTF-8的字符串,不過可以通過反斜杠表示多個(gè)層級(jí)關(guān)系。定閱與發(fā)布必須要有主題,只有當(dāng)定閱了某個(gè)主題后,才能收到相應(yīng)主題的payload,才能進(jìn)行通信。主題層級(jí)分隔符—’/’主題層級(jí)分隔符使得主題名結(jié)構(gòu)化。如果存在分隔符,它將主題名分割為多個(gè)主題層級(jí)。多層通配符—’#’“#”是用于匹配主題中任意層級(jí)的通配符。多層通配符表示它的父級(jí)和任意數(shù)量的子層級(jí)。多層通配符必須位于它自己的層級(jí)或者跟在主題層級(jí)分隔符后面。單層通配符—’+’“+”是只能用于單個(gè)主題層級(jí)匹配的通配符。在主題過濾器的任意層級(jí)都可以使用單層通配符,包括第一個(gè)和最后一個(gè)層級(jí)。然而它必須占據(jù)過濾器的整個(gè)層級(jí)舉個(gè)例子:building-b/floor-5:代表B樓5層的設(shè)備。+/floor-5:代表任何一個(gè)樓的5層的設(shè)備。building-b/#:代表B樓所有的設(shè)備。MQTT擁有14種不同的消息類型CONNECT:客戶端連接到MQTT代理2.CONNACK:連接確認(rèn)3.PUBLISH:新發(fā)布消息4.PUBACK:新發(fā)布消息確認(rèn),是QoS1給PUBLISH消息的回復(fù)5.PUBREC:QoS2消息流的第一部分,表示消息發(fā)布已記錄6.PUBREL:QoS2消息流的第二部分,表示消息發(fā)布已釋放7.P:QoS2消息流的第三部分,表示消息發(fā)布完成8.SUBSCRIBE:客戶端訂閱某個(gè)主題9.SUBACK:對(duì)于SUBSCRIBE消息的確認(rèn)10.UNSUBSCRIBE:客戶端終止訂閱的消息11.UNSUBACK:對(duì)于UNSUBSCRIBE消息的確認(rèn)12.PINGREQ:心跳13.PINGRESP:確認(rèn)心跳14.DISCONNECT:客戶端終止連接前優(yōu)雅地通知MQTT代理MQTT擁有14種不同的消息類型簡單講解

OneN

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論