tcpmqtt
udp是一種高效但不可靠的協議。
udp是一種面向報文、非連線的協議。具體表現為傳送資料前無需與服務端建立連線,資料傳送完畢後亦無需斷開連線(沒有連線可斷開),如此一來,減少了建立和斷開連線時的開銷,無需像tcp一樣建立連線需要3次握手,斷開連線需要4次握手。
udp不存在擁塞機制。即源主機不會因為網路擁塞而降低傳送速率。
udp不能保證交付。這個特性容易導致丟包、亂序的情況。
tcp是一種面向位元組流、面向連線的全雙工協議。通訊雙方在進行通訊之前,需要經過三次握手,確定雙方都具備資料收到的能力。由於tcp是全雙工協議,因此在斷開連線時,需要經過四次握手。另外tcp還提供了確認應答、超時重傳、滑動視窗、流量控制、慢啟動、擁塞機制等機制,以確保資料有序、可靠。總體而言,它是一種可靠的協議。
mqtt是一種基於發布/訂閱模式的「輕量級」通訊協議,也是tcp長連線應用的一種(當然中間可能多一層websocket)。為什麼既然有了tcp和websocket了,還需要有mqtt的存在呢?
這是因為,mqtt有乙個很大的優點:可以以極少的**和有限的頻寬,為連線遠端裝置提供實時可靠的訊息服務,同時根據網路環境不同,可以選擇三種訊息發布的質量(qos level):
qos0,at most once,至多一次
qos1,at least once,至少一次
qos2,exactly once,確保只有一次
作為一種低開銷、低頻寬占用的即時通訊協議,使其在物聯網、小型裝置、移動應用等方面有較廣泛的應用。
在mqtt協議中,乙個mqtt資料報由固定頭(fixed header)、可變頭(variable header)、訊息體(payload)三部分構成:
固定頭(fixed header)。存在於所有mqtt資料報中,表示資料報型別及資料報的分組類標識。
可變頭(variable header)。存在於部分mqtt資料報中,資料報型別決定了可變頭是否存在及其具體內容。
訊息體(payload)。存在於部分mqtt資料報中,表示客戶端收到的具體內容。
總的來說,mqtt是在tcp之上的應用層協議,對物聯網應用環境做了非常多的優化,tcp傳輸層協議,是更通用層的協議。
由於mqtt是基於tcp實現的協議,所以優點跟tcp基本相同。同時,mqtt也是標準的rfc協議,相比於私有協議而言更加標準,優點有
當然,以上用tcp自己開發協議也能實現,那為什麼需要mqtt呢?
其實就是mqtt另外還實現了很多功能,降低了開發複雜度,比如:心跳機制、非同步機制、遺囑訊息、訂閱發布機制,qos訊息質量等,而且mqtt做了一些優化,比如訊息頭最小只有兩個位元組等。所以,可以簡單理解為,mqtt其實就是tcp協議的一種封裝實現,在tcp的基礎上做了一系列優化,並且封裝了很多實用的機制,一句話總結:mqtt就是觀察者模式的網路放大版。
同tcp。另外,雖然mqtt封裝了很多機制,但還是不夠成熟,實現起來較複雜。
即時通訊協議簡述
即時通訊協議簡述 一 概述 隨 著即時資訊應用的普及,人們期待著產生相關的標準,否則就無法做到互通有無,阻礙即時資訊應用的發展。這一工作仍舊由ietf來完成。他們的工作取得了一 定進展,但是也有許多困難需要征服。正像有人比喻的那樣,如果說標準是一種被推廣的 普通話 可以促進廠商產品的互操作性,那麼,...
簡述CAN通訊協議 01
can controller area network 控制器區域網 特點 速度快,距離遠。最高1mbps 距離 40m 最遠可達10km 速率 5kbps 它是一種非同步通訊,只具有can high和can low兩條訊號線,共同構成一組差分訊號線,以差分訊號的形式進行通訊 顯性電平對應邏輯 0 ...
通訊協議 UDP通訊
通訊協議 通訊協議是udp tcp通訊的基礎,沒有通訊協議的 通訊 是沒有任何意義上的,通訊協議不是底層函式或者高深的原理,而是程式設計師之間的一種文字約定。資料在網路上是以位元組的形式傳送的 底層是01碼 我們在讀取到資料之後,該以怎樣的方式對它進行解碼呢?這就是我們在通訊之前需要制定的通訊協議。...