如下參考于成都縱橫智控-https://www.iotrouter.com/news/2009.html 或(蘇州穩(wěn)聯(lián))
物聯(lián)網(wǎng)(IoT)的快速發(fā)展離不開(kāi)數(shù)據(jù)傳輸技術(shù)的進(jìn)步。在眾多的數(shù)據(jù)傳輸協(xié)議中,TCP、HTTP、和MQTT各有其獨(dú)特的優(yōu)勢(shì)和應(yīng)用場(chǎng)景。本文將詳細(xì)解析這三種協(xié)議的特點(diǎn)、應(yīng)用及其相互之間的區(qū)別,以幫助開(kāi)發(fā)者在不同的物聯(lián)網(wǎng)應(yīng)用中選擇最合適的傳輸協(xié)議。
依據(jù)OSI網(wǎng)絡(luò)分層模型,TCP屬于傳輸層協(xié)議,HTTP和MQTT屬于應(yīng)用層協(xié)議。TCP是HTTP和MQTT的底層協(xié)議。
TCP、HTTP、MQTT協(xié)議
TCP:傳輸控制協(xié)議
TCP是一種基于連接的可靠傳輸協(xié)議。這是互聯(lián)網(wǎng)協(xié)議套件的一部分,用于在網(wǎng)絡(luò)中的2個(gè)運(yùn)用中間建立一個(gè)靠譜的數(shù)據(jù)傳輸通道。TCP增強(qiáng)了數(shù)據(jù)分割、重組、流量管理和擁塞控制等業(yè)務(wù),以確保數(shù)據(jù)的穩(wěn)定性和次序傳送。這是一項(xiàng)面對(duì)連接的協(xié)議,規(guī)定在傳輸數(shù)據(jù)以前建立一個(gè)連接。TCP適用文件傳送、電子郵箱和網(wǎng)頁(yè)瀏覽對(duì)傳輸數(shù)據(jù)可靠性要求高的運(yùn)用。建立一個(gè)TCP連接需要三次握手,斷開(kāi)一個(gè)TCP連接需要四次揮手。TCP協(xié)議可以對(duì)上層網(wǎng)絡(luò)提供接口,使上層網(wǎng)絡(luò)數(shù)據(jù)的傳輸建立在“無(wú)差別”的網(wǎng)絡(luò)之上。
1.三次握手:是TCP協(xié)議建立連接的過(guò)程,確保雙方都已準(zhǔn)備好進(jìn)行數(shù)據(jù)傳輸。以下是三次握手的步驟和示意圖:
步驟 | 描述 | 示意圖 |
---|---|---|
1 | 客戶端發(fā)送SYN:客戶端向服務(wù)器發(fā)送一個(gè)SYN(同步序列編號(hào))請(qǐng)求,以初始化連接。 |
![]() TCP:三次握手 |
2 | 服務(wù)器發(fā)送SYN-ACK:服務(wù)器收到SYN請(qǐng)求后,回復(fù)一個(gè)SYN-ACK(同步序列編號(hào)-確認(rèn))包,表示同意建立連接,并告知客戶端已收到其請(qǐng)求。 | |
3 | 客戶端發(fā)送ACK:客戶端收到SYN-ACK后,再發(fā)送一個(gè)ACK(確認(rèn))包,表示確認(rèn)連接已建立,雙方可以開(kāi)始數(shù)據(jù)傳輸。 |
2.四次揮手:是TCP協(xié)議斷開(kāi)連接的過(guò)程,確保雙方都已完成數(shù)據(jù)傳輸并同意斷開(kāi)連接。以下是四次揮手的步驟及示意圖:
步驟 | 描述 | 示意圖 |
---|---|---|
1 | 客戶端發(fā)送FIN:客戶端向服務(wù)器發(fā)送一個(gè)FIN(終止連接)請(qǐng)求,表示其已經(jīng)完成數(shù)據(jù)發(fā)送,準(zhǔn)備斷開(kāi)連接。 |
![]() TCP:四次揮手 |
2 | 服務(wù)器發(fā)送ACK:服務(wù)器收到FIN請(qǐng)求后,回復(fù)一個(gè)ACK(確認(rèn))包,表示已收到客戶端的斷開(kāi)請(qǐng)求,但可能還有未完成的數(shù)據(jù)需要發(fā)送。 | |
3 | 服務(wù)器發(fā)送FIN:服務(wù)器完成數(shù)據(jù)發(fā)送后,向客戶端發(fā)送一個(gè)FIN請(qǐng)求,表示其也準(zhǔn)備斷開(kāi)連接。 | |
4 | 客戶端發(fā)送ACK:客戶端收到服務(wù)器的FIN請(qǐng)求后,回復(fù)一個(gè)ACK包,表示確認(rèn)斷開(kāi)連接,連接正式斷開(kāi)。 |
HTTP:超文本傳輸協(xié)議
HTTP用于在Web上傳送超文本(如HTML)和其他資源應(yīng)用層協(xié)議。TCP的穩(wěn)定性和連接性是根據(jù)TCP。HTTP挑選客戶端-服務(wù)器模型,客戶端向服務(wù)器推送HTTP規(guī)定,服務(wù)器回到HTTP回應(yīng),以傳送需要資源。HTTP是一種無(wú)狀態(tài)協(xié)議,每個(gè)請(qǐng)求和響應(yīng)都是獨(dú)立的,服務(wù)器不會(huì)儲(chǔ)存客戶端狀態(tài)信息。
HTTP 請(qǐng)求/響應(yīng)流程示意圖 | HTTP 請(qǐng)求示例 |
![]() HTTP 請(qǐng)求/響應(yīng)流程示意圖 |
![]() HTTP 請(qǐng)求示例 |
HTTP連接是一種“短連接”,由于HTTP在每個(gè)規(guī)定結(jié)束后都會(huì)主動(dòng)釋放連接。為保持客戶端流程的在線狀態(tài),務(wù)必再次連接到服務(wù)器。一般來(lái)說(shuō),即便不用獲得所有數(shù)據(jù),客戶端還會(huì)每隔一段時(shí)間向服務(wù)器推送一次“維護(hù)連接”規(guī)定。服務(wù)器接到要求之后回復(fù)客戶端,表明客戶端是“線上”的。假如服務(wù)器長(zhǎng)期接受不了客戶端的需求,但認(rèn)為客戶端“撤出”,假如客戶端長(zhǎng)期接受不了云服務(wù)器的回應(yīng),卻認(rèn)為網(wǎng)絡(luò)已經(jīng)斷開(kāi)。
MQTT:遠(yuǎn)程傳輸消息隊(duì)列
MQTT是一種基于公示/定閱的MQTT(publish/subscribe)1999年IBM發(fā)布的TCP/IP協(xié)議中創(chuàng)立了該模式的“輕”通訊協(xié)議。MQTT最大的優(yōu)點(diǎn)是可以為連接遠(yuǎn)程設(shè)備提供實(shí)時(shí)可靠的信息服務(wù),編號(hào)少,帶寬有限。它作為一種低成本、低帶寬的即時(shí)通信協(xié)議,廣泛用于物聯(lián)網(wǎng)、小型機(jī)器和移動(dòng)應(yīng)用。
以下是MQTT消息傳輸過(guò)程的示意圖:
1.客戶端連接到Broker:
CONNECT 請(qǐng)求:客戶端向MQTT Broker發(fā)起連接請(qǐng)求。
CONNACK 響應(yīng):Broker確認(rèn)連接請(qǐng)求。
2.客戶端發(fā)布消息到主題:
PUBLISH 請(qǐng)求:客戶端將消息發(fā)布到特定主題。
Broker 將消息轉(zhuǎn)發(fā)給訂閱該主題的客戶端。
3.Broker 轉(zhuǎn)發(fā)消息:
PUBLISH 請(qǐng)求:Broker 將消息轉(zhuǎn)發(fā)給所有訂閱了該主題的客戶端。
4.客戶端確認(rèn)消息接收:
PUBACK 響應(yīng):客戶端確認(rèn)接收到消息,適用于QoS 1等級(jí)。
5.客戶端斷開(kāi)連接:
DISCONNECT 請(qǐng)求:客戶端請(qǐng)求斷開(kāi)與Broker的連接。
DISCONNECT 響應(yīng):Broker 確認(rèn)斷開(kāi)連接。
TCP、HTTP與MQTT的對(duì)比表格
特性 | TCP | HTTP | MQTT |
---|---|---|---|
協(xié)議類(lèi)型 | 傳輸層協(xié)議 | 應(yīng)用層協(xié)議 | 應(yīng)用層協(xié)議 |
連接建立 | 面向連接(三次握手) | 無(wú)狀態(tài)請(qǐng)求-響應(yīng) | 面向連接(連接保持) |
數(shù)據(jù)傳輸模式 | 可靠傳輸,順序保證 | 請(qǐng)求-響應(yīng) | 發(fā)布-訂閱 |
可靠性 | 高 | 取決于應(yīng)用層實(shí)現(xiàn) | 支持QoS等級(jí)確保可靠性 |
數(shù)據(jù)頭開(kāi)銷(xiāo) | 較大 | 較大 | 較小 |
傳輸效率 | 較低 | 中等 | 高 |
適用場(chǎng)景 | 可靠傳輸需求的場(chǎng)景 | Web瀏覽、API通信、RESTful服務(wù) | 物聯(lián)網(wǎng)、實(shí)時(shí)數(shù)據(jù)傳輸 |
典型應(yīng)用 | 文件傳輸、電子郵件、遠(yuǎn)程登錄 | 網(wǎng)頁(yè)瀏覽、Web API | 物聯(lián)網(wǎng)設(shè)備通信、消息傳輸 |
總結(jié)
TCP、HTTP 和 MQTT 是三種不同層級(jí)和用途的協(xié)議是進(jìn)行設(shè)備互聯(lián)和傳送數(shù)據(jù)的重要組成部分;TCP適用高可靠性傳送,HTTP適用Web服務(wù)與API打開(kāi),MQTT是物聯(lián)網(wǎng)設(shè)備通訊的不二之選。了解它們的特點(diǎn)和適用場(chǎng)景有助于在設(shè)計(jì)和實(shí)現(xiàn)網(wǎng)絡(luò)通信時(shí)做出最佳選擇。
審核編輯 黃宇
-
HTTP
+關(guān)注
關(guān)注
0文章
523瀏覽量
32598 -
TCP
+關(guān)注
關(guān)注
8文章
1400瀏覽量
80634 -
MQTT
+關(guān)注
關(guān)注
5文章
675瀏覽量
23579
發(fā)布評(píng)論請(qǐng)先 登錄
MQTT為何成為物聯(lián)網(wǎng)協(xié)議
TCP協(xié)議的常見(jiàn)應(yīng)用場(chǎng)景
基于MQTT協(xié)議的車(chē)云通信設(shè)計(jì)

如何使用 cURL 測(cè)試 HTTP 協(xié)議
HTTP 協(xié)議的工作原理
HTTP 協(xié)議的基本概念
TCP協(xié)議是什么
MQTT.fx 連接Onenet 多協(xié)議接入平臺(tái) MQTT協(xié)議(舊版)詳解

物聯(lián)網(wǎng)行業(yè)中MQTT通信協(xié)議詳解以及使用

功能強(qiáng)大的網(wǎng)絡(luò)通訊工具,支持各類(lèi)TCP、UDP、HTTP的通訊協(xié)議
一文了解TCP/IP協(xié)議

鋇錸技術(shù)Modbus轉(zhuǎn)MQTT網(wǎng)關(guān):橋接Modbus協(xié)議與MQTT協(xié)議

基于MQTT協(xié)議云平臺(tái)的Modbus轉(zhuǎn)MQTT網(wǎng)關(guān)

PLC協(xié)議、Modbus RTU TCP 、DL T645、IEC101-104、BACnet 轉(zhuǎn)Modbus TCP RTU、OPC UA、MQTT、BACnet IP協(xié)議網(wǎng)關(guān)

Modbus RTU、Modbus TCP轉(zhuǎn)MQTT網(wǎng)關(guān)實(shí)現(xiàn)Modbus設(shè)備與云平臺(tái)的無(wú)縫通信

評(píng)論