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

    文章

    477

    浏览量

    30745
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1321

    浏览量

    78749
  • MQTT
    +关注

    关注

    5

    文章

    625

    浏览量

    22273
收藏 人收藏

    评论

    相关推荐

    一文了解TCP/IP协议

    TCP/IP协议是现代计算机网络通信的基础,是互联网及局域网广泛使用的一套协议TCP/IP协议集包括许多
    的头像 发表于 08-07 15:38 270次阅读
    一文<b class='flag-5'>了解</b><b class='flag-5'>TCP</b>/IP<b class='flag-5'>协议</b>

    基于MQTT协议云平台的Modbus转MQTT网关

    钡铼Modbus转MQTT网关BL100是一款高性能、高性价比的物联网网关,它支持将Modbus协议(包括Modbus RTU和Modbus TCP)的数据转换为MQTT
    的头像 发表于 07-29 17:59 529次阅读
    基于<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>云平台的Modbus转<b class='flag-5'>MQTT</b>网关

    为什么使用MQTT而不是HTTP

    为什么使用MQTT而不是HTTP? 在探讨为何在某些场景下选择MQTT(Message Queuing Telemetry Transport)而非HTTP(Hypertext Tra
    的头像 发表于 06-19 14:26 272次阅读
    为什么使用<b class='flag-5'>MQTT</b>而不是<b class='flag-5'>HTTP</b>?

    mqtt协议tcp协议区别

    在数字化的宇宙中,无数的信息以电脉冲的形式穿梭于无形的空间之中。它们遵循着既定的规则——通信协议,在此背景下,TCPMQTT两大协议赫然而立,各具特色。
    的头像 发表于 04-30 14:02 709次阅读

    为什么使用MQTT而不是HTTP

    MQTT协议通过TCP/IP运行,基于无损通信的双向发布-订阅模型,确保MQTT消息高效无损地传递。
    发表于 04-28 11:07 639次阅读
    为什么使用<b class='flag-5'>MQTT</b>而不是<b class='flag-5'>HTTP</b>?

    mqtt协议tcp协议区别

    MQTT协议TCP协议在设计和应用上存在以下主要区别: 1. 起源与设计:MQTT协议诞生于1
    的头像 发表于 04-01 09:15 1353次阅读

    mqtt协议http协议区别

    MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的“轻量级”通讯协议,构建于TCP/IP协议上。它是由IBM在1999年发布的
    的头像 发表于 01-19 15:56 6445次阅读

    关于TCPHTTP的知识科普

    要说http就绕不开tcpTCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二
    的头像 发表于 12-21 09:31 855次阅读
    关于<b class='flag-5'>TCP</b>、<b class='flag-5'>HTTP</b>的知识科普

    如何理解HTTP协议是无状态的

    1、HTTP 协议TCP/IP 协议的关系 HTTP 的长连接和短连接本质上是 TCP 长连
    的头像 发表于 11-11 15:46 1763次阅读
    如何理解<b class='flag-5'>HTTP</b><b class='flag-5'>协议</b>是无状态的

    MQTT是什么 MQTT特点

    很简单,易于学习和使用。 •可靠性高:MQTT 使用了 TCP 协议进行传输,具有较高的可靠性。 •低延迟:MQTT 使用了发布/订阅模式,可以减少消息传递的延迟。 在机器人应用中,
    的头像 发表于 11-09 15:20 2127次阅读

    TCP 协议深度解析

    头部信息,此处是 TCP 协议 Hypertext Transfer Protocol:应用层 HTTP 的信息 网络分层 应用层(Application Layer) 应用层的本质是规定了应用程序之间如何相互传递报文, 以
    的头像 发表于 11-09 11:19 713次阅读
    <b class='flag-5'>TCP</b> <b class='flag-5'>协议</b>深度解析

    基于HttpTcp协议自主实现的WebServer

    项目介绍 该项目是一个基于HttpTcp协议自主实现的WebServer,用于实现服务器对客户端发送过来的GET和POST请求的接收、解析、处理,并返回处理结果给到客户端。该项目主要背景知识涉及
    的头像 发表于 11-09 11:11 574次阅读
    基于<b class='flag-5'>Http</b>和<b class='flag-5'>Tcp</b><b class='flag-5'>协议</b>自主实现的WebServer

    MQTT协议和EDP协议该怎么选?

    OneNet支持HTTPMQTT和EDP,HTTP好像不能下发指令,MQTT和EDP可以,我需要控制一个简单的开关,用那个协议更合理一些。
    发表于 11-09 07:18

    TCP协议详细解析

    TCPTCP/IP协议族中一个最核心的协议,它向下使用网络层IP协议,向上为应用层HTTP、F
    的头像 发表于 11-03 09:14 3546次阅读
    <b class='flag-5'>TCP</b><b class='flag-5'>协议</b>详细解析

    MQTT协议采集网关可自定义格式

    取出设备地址、寄存器地址和数据等内容;最后,将这些内容通过MQTT协议发布到指定的主题上,以便远程客户端可以订阅并获取数据。 对于TCPMQTT网关的实现,我们需要使用编程语言如J
    发表于 10-09 19:33