文章首發於同名微信公衆號:DigCore編程
歡迎關注同名微信公衆號:DigCore,及時獲取最新技術博文。服務器
原文連接:https://mp.weixin.qq.com/s/hY3y0EpWLeya3YkWwvU1lQ微信
對於MQTT的介紹,官方文檔是直接進入主題,討論其架構模型,對於不曾接觸網絡技術的電子工程師來講,這第一章都已是略微難懂的章節,更別提繼續往下看了。所以,此文是站在電子工程師的角度介紹MQTT協議,爲方便理解和描述,確定沒有計算機網絡方面專業術語那麼準確。網絡
做爲一名電子工程師,去理解網絡工程、軟件工程這些範疇的技術,有時候時很是困難的,尤爲是作硬件,不少東西感受很抽象,又很空洞。架構
平常工做中,電子工程師面對更多的是UART、SPI、IIC、USB,對於觸手可及的這些外設接口協議,咱們通常更多關注的是他們的信號時序、電氣特性、傳輸速率等參數。而且在開發時,這些外設接口可以看得見摸得着,知道是哪兩個或者哪幾個設備之間進行鏈接。tcp
MQTT基於TCP鏈接進行的網絡通訊。ide
都說「基於TCP鏈接」的通訊,那到底啥是「TCP鏈接」呢?(官網http://www.tcpipguide.com/)這個須要瞭解到TCP/IP參考模型中的4層的定義:工具
TCP/IP參考模型圖ui
MQTT是在TCP鏈接後的基礎上進行通訊的,那麼在此能夠簡單認爲,TCP就是個「外設接口」,就像UART、SPI這樣,做爲傳輸層,就負責把數據收發。spa
而在實際在使用過程當中,MQTT數據是帶了各類「格式」的條條框框進行封裝,這些條條框框的封裝就是在應用層定義和實現的。
應用層的協議利用TCP這種「接口」進行收發數據時,爲了區別於不一樣應用程序,而定義了應用協議,相似於MQTT、HTTP、FTP等。
利用工具模擬和對比,串口鏈接後收發和TCP鏈接後收發的狀況。
這裏使用的是單片機開發的時候最經常使用到的一個串口助手SSCOM V5.10a(http://www.daxia.com/sscom/sscom5.13.1.rar),帶有TCP鏈接功能。首先看看電子工程師很是熟悉的串口通訊界面:
串口通訊時的數據交互截圖
一樣的,切換到TCP鏈接的方式,根據以下截圖配置TCP服務器和TCP客戶端:
TCP鏈接後通訊時的數據交互截圖
可見TCP和串口相似,在鏈接後就能夠對數據進行傳輸了。而且和串口同樣,在傳輸時,數據是被徹底透傳出去的,而沒有被封裝成任何格式(只看TCP層),可見平時在底層開發時使用串口通訊都沒有上升到應用層協議,基本都是裸數據傳輸的,即便說有協議那基本都是私有協議,且是自定義的。
但是怎樣可以實現鏈接?
MQTT協議是基於TCP鏈接進行通訊的,TCP可謂是比嵌入式外設要複雜些,不是簡單一個硬件實現就能夠了的。
串口鏈接,最少須要的3根數據線(TxD,RxD,GND),而後設置兩端設備的波特率、數據位、校驗位、中止位,便可完成鏈接。
而TCP鏈接,須要往下的多個層協議來實現,而後就是配置IP地址、端口。實現方式有不少,有線方式能夠用集成了網卡芯片的單片機或者以太網轉串口、SPI模塊等,無線的方式能夠用集成了wifi的單片機或者wifi轉串口、SPI模塊等。
TCP鏈接實現方式很簡單,就是芯片搭模塊,而實現過程倒是很複雜,對於應用開發的電子工程師,須要作的是可以利用低價格高效益的解決方案來實現MQTT協議,實現物聯網。
更多原創技術乾貨,點擊閱讀原文。
原文連接:https://mp.weixin.qq.com/s/hY3y0EpWLeya3YkWwvU1lQ
★★★★★推薦文章
《【嵌入式編程】平臺大小端存儲差別解決辦法》
《嵌入式硬件通訊接口-使用RingBuffer處理數據(二)詳細設計過程》
《嵌入式硬件通訊接口-使用RingBuffer處理數據(一)》
《快速開發MQTT(一)電子工程師眼中的MQTT》
《快速開發MQTT(二)初識MQTT》
《MQTT客戶端搭建-最清晰的MQTT協議架構》
《MQTT服務端搭建-最快方式驗證本身開發的客戶端》
★★★★★類似文章
《嵌入式硬件通訊接口協議-UART(五)數據包設計與解析》
《嵌入式硬件通訊接口協議-UART(四)設計起止式的應用層協議》
《嵌入式硬件通訊接口協議-UART(三)快速使用串口及應用》
《嵌入式硬件通訊接口協議-UART(二)不一樣電氣規範下的標準》
《嵌入式硬件通訊接口協議-UART(一)協議基礎》
《嵌入式硬件通訊接口協議-SPI(二)分層架構設計模擬接口》
《嵌入式硬件通訊接口協議-SPI(一)協議基礎》
★★★★★擴展閱讀
《【硬件電路】AltiumDesigner18規則檢查含義》
《【硬件電路】N溝道、P溝道MOS管基本原理與應用案例》