0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

你了解清楚了嘛-TCP、HTTP、MQTT协议

IOTRouter 来源:IOTRouter 作者:IOTRouter 2024-07-11 11:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

如下参考于成都纵横智控-https://www.iotrouter.com/news/2009.html 或(苏州稳联)

物联网(IoT)的快速发展离不开数据传输技术的进步。在众多的数据传输协议中,TCP、HTTP、和MQTT各有其独特的优势和应用场景。本文将详细解析这三种协议的特点、应用及其相互之间的区别,以帮助开发者在不同的物联网应用中选择最合适的传输协议。
依据OSI网络分层模型,TCP属于传输层协议,HTTP和MQTT属于应用层协议。TCP是HTTP和MQTT的底层协议。

wKgaomaM8TaAQTxWAACIZqMj3-A546.png

TCP、HTTP、MQTT协议


TCP:传输控制协议
TCP是一种基于连接的可靠传输协议。这是互联网协议套件的一部分,用于在网络中的2个运用中间建立一个靠谱的数据传输通道。TCP增强了数据分割、重组、流量管理和拥塞控制等业务,以确保数据的稳定性和次序传送。这是一项面对连接的协议,规定在传输数据以前建立一个连接。TCP适用文件传送、电子邮箱和网页浏览对传输数据可靠性要求高的运用。建立一个TCP连接需要三次握手,断开一个TCP连接需要四次挥手。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。

1.三次握手:是TCP协议建立连接的过程,确保双方都已准备好进行数据传输。以下是三次握手的步骤和示意图:

步骤 描述 示意图
1 客户端发送SYN:客户端向服务器发送一个SYN(同步序列编号)请求,以初始化连接。 wKgaomaM8teAHyxvAAASbNi7OaQ807.png
TCP:三次握手
2 服务器发送SYN-ACK:服务器收到SYN请求后,回复一个SYN-ACK(同步序列编号-确认)包,表示同意建立连接,并告知客户端已收到其请求。
3 客户端发送ACK:客户端收到SYN-ACK后,再发送一个ACK(确认)包,表示确认连接已建立,双方可以开始数据传输。

2.四次挥手:是TCP协议断开连接的过程,确保双方都已完成数据传输并同意断开连接。以下是四次挥手的步骤及示意图:

步骤 描述 示意图
1 客户端发送FIN:客户端向服务器发送一个FIN(终止连接)请求,表示其已经完成数据发送,准备断开连接。 wKgaomaM8zqAb7mWAAANu8n_nFs314.png
TCP:四次挥手
2 服务器发送ACK:服务器收到FIN请求后,回复一个ACK(确认)包,表示已收到客户端的断开请求,但可能还有未完成的数据需要发送。
3 服务器发送FIN:服务器完成数据发送后,向客户端发送一个FIN请求,表示其也准备断开连接。
4 客户端发送ACK:客户端收到服务器的FIN请求后,回复一个ACK包,表示确认断开连接,连接正式断开。

HTTP:超文本传输协议
HTTP用于在Web上传送超文本(如HTML)和其他资源应用层协议。TCP的稳定性和连接性是根据TCP。HTTP挑选客户端-服务器模型,客户端向服务器推送HTTP规定,服务器回到HTTP回应,以传送需要资源。HTTP是一种无状态协议,每个请求和响应都是独立的,服务器不会储存客户端状态信息。

HTTP 请求/响应流程示意图 HTTP 请求示例
wKgaomaM9AmAcwh_AAAUNdIUEkY951.png
HTTP 请求/响应流程示意图
wKgaomaM9BaABB0GAAAwtc48aeg263.png
HTTP 请求示例

HTTP连接是一种“短连接”,由于HTTP在每个规定结束后都会主动释放连接。为保持客户端流程的在线状态,务必再次连接到服务器。一般来说,即便不用获得所有数据,客户端还会每隔一段时间向服务器推送一次“维护连接”规定。服务器接到要求之后回复客户端,表明客户端是“线上”的。假如服务器长期接受不了客户端的需求,但认为客户端“撤出”,假如客户端长期接受不了云服务器的回应,却认为网络已经断开。

MQTT:远程传输消息队列
MQTT是一种基于公示/定阅的MQTT(publish/subscribe)1999年IBM发布的TCP/IP协议中创立了该模式的“轻”通讯协议。MQTT最大的优点是可以为连接远程设备提供实时可靠的信息服务,编号少,带宽有限。它作为一种低成本、低带宽的即时通信协议,广泛用于物联网、小型机器和移动应用。

wKgZomaM9wSAI_OXAAA8Wmk2LRA867.png

以下是MQTT消息传输过程的示意图:

1.客户端连接到Broker:

CONNECT 请求:客户端向MQTT Broker发起连接请求。
CONNACK 响应:Broker确认连接请求。

2.客户端发布消息到主题:

PUBLISH 请求:客户端将消息发布到特定主题。
Broker 将消息转发给订阅该主题的客户端。

3.Broker 转发消息:

PUBLISH 请求:Broker 将消息转发给所有订阅了该主题的客户端。

4.客户端确认消息接收:

PUBACK 响应:客户端确认接收到消息,适用于QoS 1等级。

5.客户端断开连接:

DISCONNECT 请求:客户端请求断开与Broker的连接。
DISCONNECT 响应:Broker 确认断开连接。

TCP、HTTP与MQTT的对比表格

特性 TCP HTTP MQTT
协议类型 传输层协议 应用层协议 应用层协议
连接建立 面向连接(三次握手) 无状态请求-响应 面向连接(连接保持)
数据传输模式 可靠传输,顺序保证 请求-响应 发布-订阅
可靠性 取决于应用层实现 支持QoS等级确保可靠性
数据头开销 较大 较大 较小
传输效率 较低 中等
适用场景 可靠传输需求的场景 Web浏览、API通信、RESTful服务 物联网、实时数据传输
典型应用 文件传输、电子邮件、远程登录 网页浏览、Web API 物联网设备通信、消息传输

总结

TCP、HTTP 和 MQTT 是三种不同层级和用途的协议是进行设备互联和传送数据的重要组成部分;TCP适用高可靠性传送,HTTP适用Web服务与API打开,MQTT是物联网设备通讯的不二之选。了解它们的特点和适用场景有助于在设计和实现网络通信时做出最佳选择。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HTTP
    +关注

    关注

    0

    文章

    538

    浏览量

    35553
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1433

    浏览量

    83764
  • MQTT
    +关注

    关注

    5

    文章

    739

    浏览量

    25252
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于LuatOS的MQTT物联网通信全解

    在构建物联网终端设备时,通信协议的选择直接决定系统的稳定性与扩展性。LuatOS通过内置MQTT客户端支持,使开发者能以极少代码实现设备上云。本文将从协议原理到代码实现,全面解析基于LuatOS
    的头像 发表于 01-29 19:42 314次阅读
    基于LuatOS的<b class='flag-5'>MQTT</b>物联网通信全解

    使用HTTP实现IAP的方法

    使用 HTTP 协议进行固件升级没有使用 TFTP 常见,但是在需要通过 Internet 进行远程编程时,这种解决方案就显得极为有用。这时,需要使用 TCP 传输协议来实现
    发表于 12-16 06:18

    MQTT协议为什么成为物联网协议

    不稳定环境下的通信需求。以下是具体分析: 1. 轻量级设计,适配资源受限设备 极简协议头 :MQTT协议头最小仅2字节,远低于HTTP(通常数百字节)或CoAP(虽轻量但基于UDP,可
    的头像 发表于 12-10 09:15 604次阅读

    为什么会有TCP/IP协议

    见了面,完全不能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生。TCP/IP不是一个协议,而是一个协议族的统称。 里面包括了IP
    发表于 12-03 06:28

    Modbus TCP与RTU协议详解:网关采集如何选?

    深控网关如何工作: 我们的高端系列网关具备多串口 + 网口的配置,可以同时接入RS-485总线上的RTU设备和网络上的TCP设备。网关作为一个数据汇聚点,将不同协议的数据统一采集、处理,并转换成标准协议(如
    的头像 发表于 11-04 10:34 644次阅读

    EC20在使用AT指令实现http或者mqtt功能时,应该没办法使用socket吧?

    EC20在使用AT指令实现http或者mqtt功能时,应该没办法使用socket吧
    发表于 10-11 09:21

    使用paho-mqtt里例程连接服务器失败怎么解决?

    【rt-thread】【paho-mqtt】最近由于学习需要,了解了关于rt-thread软件包paho-mqtt的使用,但是使用官方例程时,出现连接不上服务器的情况。具体报错如下: msh
    发表于 09-18 06:38

    MQTT_协议中文资料

    电子发烧友网站提供《MQTT_协议中文资料.pdf》资料免费下载
    发表于 09-02 16:19 1次下载

    GraniStudio :MQTT 协议的深度剖析

    在工业物联网(IIoT)的通信协议体系中,MQTT(Message Queuing Telemetry Transport)凭借其轻量级、发布 - 订阅模式和低带宽占用等特性,成为连接边缘设备与云端
    的头像 发表于 08-04 09:48 1168次阅读
    GraniStudio :<b class='flag-5'>MQTT</b> <b class='flag-5'>协议</b>的深度剖析

    什么是Modbus TCP协议

    Modbus TCP是一种基于TCP/IP协议的Modbus通信协议,用于在客户机和服务器之间进行数据通信。它常用于工业自动化控制、电力监控与管理、温湿度监测等领域。Modbus
    的头像 发表于 07-23 17:18 4786次阅读
    什么是Modbus <b class='flag-5'>TCP</b><b class='flag-5'>协议</b>

    MQTT介绍

    的消息传输协议,近年来被广泛应用于智能家居、工业控制、车联网等场景。 MQTT 是一种基于发布/订阅(Pub/Sub)模式的轻量级消息协议,设计初衷是为低带宽、不稳定网络环境下的设备通信而生。它更像是广播电台:
    的头像 发表于 07-14 09:34 3833次阅读
    <b class='flag-5'>MQTT</b>介绍

    简析Modbus和MQTT协议

    Modbus和MQTT协议在设计目标、通信模式、应用场景、网络结构、数据传输效率、设备兼容性及安全性等方面存在显著差异,具体分析如下: 一、设计目标与定位 Modbus :诞生于1979年,由施耐德
    的头像 发表于 07-10 14:25 985次阅读

    御控网关如何实现MQTT、MODBUS、OPCUA、SQL、HTTP之间协议转换

    在工业自动化领域,不同设备、系统之间的通信协议就像不同的语言,常常让信息交互变得困难重重。MQTT、MODBUS、OPCUA、SQL、HTTP协议各有特点,适用于不同的场景和设备,但
    的头像 发表于 07-07 13:07 680次阅读

    HTTP协议在工业领域会用到吗

    HTTP协议在工业领域会用到,并且在工业互联网、设备管理、数据交互等多个方面发挥着重要作用,以下为详细介绍: 工业互联网场景 设备接入与管理 原理:在工业互联网平台中,各类工业设备(如传感器
    的头像 发表于 06-03 09:17 785次阅读

    MQTT为何成为物联网协议

    的优势,以下为详细介绍: 轻量级特性,适配资源受限设备 协议头开销小 :MQTT协议头非常简洁,相比其他协议,它在数据传输时添加的额外信息
    的头像 发表于 05-20 09:54 981次阅读