99精品国产在热久久无码,av无码精品一区二区三区四区_国产69精品久久久久9999_精品久久久中文字幕无码_国产精品麻豆VA在线播放_亚洲日韩欧美专区制服_色久视频_婷婷久久综合,久久久精品国产免费,欧美精品久久久久久久自慰,无码国产精品一区二区高潮,国内精品九九久久久精品_国产99久久久久久免费看_中文精品99久久国产

首頁
產(chǎn)品
卓越 ? 易用 ? 可靠
視頻
讓中國物聯(lián)網(wǎng)領(lǐng)先世界
搜索
歷史搜索
搜索發(fā)現(xiàn)

MQTT比TCP協(xié)議好在哪兒激發創作?

2022-11-17 09:43:33| 來源:聚英電子| | 0

MQTT比TCP協(xié)議好在哪兒?就好比汽車底盤上有四個輪胎就能跑了稍有不慎,但是想要大家開車更舒服探索,我們還是得給底盤加個殼。


簡單對比


為什么要在 TCP 協(xié)議之上再封裝一層 MQTT 協(xié)議呢高產?

舉個例子註入新的動力,如果你要用 TCP 協(xié)議做一個即時聊天室,那么你:

  1. 首先寫一個服務(wù)器程序帶動產業發展,監(jiān)聽某個端口工藝技術,這樣客戶端就能連接上來了。然后大家就能向自己的服務(wù)器發(fā)送數(shù)據(jù)了。
  2. 但是你不希望隨便誰都能連接你的服務(wù)器并且往你的服務(wù)器里發(fā)東西系統,于是你寫了一個注冊頁面,讓別人先去注冊賬號更加廣闊,然后他們在客戶端創(chuàng)建連接時發(fā)送的第一個TCP報文必須包含了賬號密碼系統性。這樣當(dāng)你收到第一個報文之后,你就能判斷這個連接是否合法了。
  3. 但是發(fā)過來的賬號密碼損耗,具體擺在報文什么位置,也得事先約定好吧長遠所需,不然怎么知道哪幾位是賬號哪幾位是密碼形式,于是你要求:第一個字節(jié)為1,用來告訴你這是一個請求連接的報文非常完善。然后第二個字節(jié)是報文剩下的長度(這個沒啥異議傳遞,粘包處理必備),然后是“餅干熊最帥”這樣一個固定的字符串(沒啥意思不斷完善,就是開心)發揮效力,后面緊跟著就是賬號全面革新,然后是密碼。但是賬號有多長呢穩定發展,所以賬號第一個字節(jié)是賬號的長度方便,剩下才是賬號內(nèi)容,這樣就解決了“賬號有多長”的問題了更好,密碼同理基石之一。
  4. 如果賬號密碼不匹配就斷開連接并且返回一句“xxxx off”,如果創(chuàng)建連接后半天不發(fā)送任何東西也斷開連接安全鏈。
  5. 現(xiàn)在大家的客戶端都連接上來了行業分類,你在服務(wù)器保存了一個`賬號:socket`的map,能通過任何一個賬號找到這個人的socket并向他發(fā)送信息增持能力。接下來大家就要開始聊天了資料。
  6. 在聊天室中,一個人發(fā)送的消息其他人都能收到重要的意義,所以你添加了聊天室的概念深入開展,用戶首先去你的web頁面創(chuàng)建聊天室,然后會得到一個聊天室的ID需求。然后用戶要加入聊天室,必須先發(fā)送一個加入聊天室的報文更為一致。然后你要求報文第一個字節(jié)為2代表加入聊天室的請求報文各方面,然后是報文剩余長度,然后是聊天室ID落地生根,聊天室ID有多長占?我們還是用第一個字節(jié)代表長度,剩下的內(nèi)容為具體ID的形式來搞定成效與經驗。
  7. 現(xiàn)在有多個用戶加入了聊天室更讓我明白了,其中每個用戶又都加入了多個聊天室。假設(shè)現(xiàn)在大家在聊天室A中開始聊天提供了有力支撐。用戶甲向服務(wù)器發(fā)送消息飛躍,然后你發(fā)現(xiàn)你不知道這條消息是請求連接還是要加入聊天室還是干啥,所以發(fā)送消息也應(yīng)該定義一種報文類型積極。于是你要求發(fā)送消息的報文的第一個字節(jié)為3大數據,那么這個報文是發(fā)送到哪個聊天室的呢?于是你要求報文后面跟上聊天室ID經驗,最后是具體的消息內(nèi)容。
  8. 服務(wù)器收到第一個字節(jié)為3的消息,就知道這是一個聊天消息進一步意見。然后根據(jù)上面帶的聊天室ID以及你在服務(wù)器存儲的用戶和聊天室的關(guān)系重要部署,找到了這個聊天室里的所有人,然后你就把消息發(fā)給這里面的所有人了。


上面這個例子數字技術,在連接服務(wù)器(檢查合法性共享應用、斷開連接)、訂閱主題(加入聊天室)完成的事情、發(fā)布消息這些過程中調整推進,你約定的報文格式和設(shè)計的服務(wù)器處理邏輯就是 MQTT 協(xié)議的內(nèi)容,當(dāng)然我舉的例子非常粗糙研究成果。

MQTT是一個客戶端服務(wù)端架構(gòu)的發(fā)布/訂閱模式的消息傳輸協(xié)議橋梁作用。它的設(shè)計思想是輕巧、開放促進善治、簡單講故事、規(guī)范,因此易于實現(xiàn)求索。這些特點使得它對很多場景來說都是很好的選擇置之不顧,包括受限的環(huán)境:如機器與機器的通信(M2M)以及物聯(lián)網(wǎng)環(huán)境(IoT),這些場景要求很小的代碼封裝或者網(wǎng)絡(luò)帶寬非常昂貴性能穩定。

MQTT的優(yōu)點是:

1)具備實時性試驗,設(shè)備控制速度可以在200ms以內(nèi);

2)設(shè)計簡單數字化、輕巧新格局、便于實現(xiàn);

3)占用資源少開展攻關合作,非常適合在資源受限的物聯(lián)網(wǎng)芯片上運行

當(dāng)然特點,它的缺點也很明顯:

1)基于TCP/IP,對網(wǎng)絡(luò)環(huán)境要求相對較高情況正常;

2)TCP存在RST攻擊製度保障,容易被運營商攔截;

3)TCP資源相對UDP消耗大各領域,需要建立連接顯示、維護(hù)連接、釋放連接

首先TCP是傳輸層協(xié)議自行開發,實現(xiàn)了一個雙向的通信鏈路模樣。

MQTT是基于TCP的應(yīng)用層協(xié)議。(當(dāng)然中間可能多一層處理方法,websocket)

兩者不在一個層級數據顯示,比較誰比誰好是沒有意義的。

TCP 也可以實現(xiàn)數(shù)據(jù)通信服務,比如發(fā)送傳感器數(shù)據(jù)到服務(wù)器實現。為什么要用到MQTT呢 持續向好?

假設(shè)現(xiàn)在有一個物聯(lián)網(wǎng)的應(yīng)用,當(dāng)然可以直接用TCP socket 做通信,實際上不少人也是這么做的不容忽視。然后你就會發(fā)現(xiàn):

* 需要自己寫確認(rèn)重傳的機制,因為TCP 連接說不定就斷了高質量。

* 如果有很多個傳感器(生產(chǎn)者)研究與應用,又要寫代碼管理這么多TCP連接呢。

* 如果同時又有多個地方需要用到這些數(shù)據(jù)迎難而上,還得寫一個轉(zhuǎn)發(fā)的邏輯有效保障。

* 如果系統(tǒng)很復(fù)雜,參與人或公司很多更高效,那通信格式要怎么定稍有不慎,怎么改,溝通成本就很大了。

這些東西這么麻煩全面協議,又不想加班寫代碼,那有沒有辦法簡便地解決呢堅持先行?當(dāng)然有講實踐,就是用現(xiàn)成的協(xié)議啦,比如MQTT具體而言。

MQTT 提供兩個核心功能:

* 三個級別的QOS

*基于訂閱/發(fā)布的消息轉(zhuǎn)發(fā)服務(wù)相關性。

用了MQTT, 上面提到的這些問題就都被優(yōu)雅地解決掉啦。

其實製高點項目,同類應(yīng)用的很多問題,都是有一定共性的的過程中。這時候就會有一些人提出一般性的解決方式物聯與互聯,這樣大家就不用重復(fù)造輪子,同時又保證了互操作性範圍和領域。這就是協(xié)議存在的意義啦取得了一定進展。

所以一句話總結(jié),MQTT 和其他的應(yīng)用層協(xié)議,比如 HTPP, FTP, BitTorrent 協(xié)議一樣有所增加,都是為了解決特定問題而生的一套方案,可以幫我們省好多事促進進步。

真正的MQTT協(xié)議要求的處理邏輯和報文格式都完善很多供給,但是協(xié)議本身還是很簡單的,具體內(nèi)容去看 MQTT 的文檔吧更高要求。


聯(lián)系銷售
銷售王經(jīng)理微信 銷售王經(jīng)理
微信公眾號 微信公眾號
服務(wù)熱線
400-6688-400
安化县| 迁安市| 金秀| 昌江| 镶黄旗| 务川| 罗源县| 钟祥市| 团风县| 绍兴市| 搜索| 高要市| 库尔勒市| 罗山县| 澎湖县| 扬中市| 东兰县| 剑阁县| 静海县| 炉霍县| 绵竹市| 南华县| 宜良县| 互助| 玉屏| 潍坊市| 布拖县| 新沂市| 曲水县| 富宁县| 奈曼旗| 亳州市| 将乐县| 廉江市| 天祝| 岱山县| 错那县| 双流县| 塔城市| 北川| 清镇市|