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

    文章

    504

    浏览量

    31164
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1353

    浏览量

    79051
  • MQTT
    +关注

    关注

    5

    文章

    650

    浏览量

    22476
收藏 人收藏

    评论

    相关推荐

    MQTT.fx 连接Onenet 多协议接入平台 MQTT协议(旧版)详解

    TCP dtu.heclouds.com 183.230.40.40 1811 打开Onenet平台,多协议接入 选择MQTT协议(旧版),点击添加产品,输入
    的头像 发表于 09-30 15:20 600次阅读
    <b class='flag-5'>MQTT</b>.fx 连接Onenet 多<b class='flag-5'>协议</b>接入平台 <b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>(旧版)详解

    物联网行业中MQTT通信协议详解以及使用

    ,该协议构建于TCP/IP协议上,由IBM在1999年发布。 MQTT最大优点在于, 用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务 。 作为一种低开销、低带宽占用的即
    的头像 发表于 09-20 17:08 1374次阅读
    物联网行业中<b class='flag-5'>MQTT</b>通信<b class='flag-5'>协议</b>详解以及使用

    功能强大的网络通讯工具,支持各类TCP、UDP、HTTP的通讯协议

    功能强大的网络通讯工具,支持各类TCP、UDP、HTTP的通讯协议,简单方便,包含历史记忆功能,体积小,服务器调试最合适
    发表于 09-05 11:51 0次下载

    一文了解TCP/IP协议

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

    钡铼技术Modbus转MQTT网关:桥接Modbus协议MQTT协议

    提供了一键对接亚马逊云平台的解决方案。 BL101网关是钡铼技术研发的一款高性能工业物联网设备,通过桥接Modbus协议MQTT通信协议,实现了工业设备与云端平台之间的高效互联。支持Modbus RTU、Modbus
    的头像 发表于 07-30 16:28 366次阅读
    钡铼技术Modbus转<b class='flag-5'>MQTT</b>网关:桥接Modbus<b class='flag-5'>协议</b>与<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>

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

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

    PLC协议、Modbus RTU TCP 、DL T645、IEC101-104、BACnet 转Modbus TCP RTU、OPC UA、MQTT、BACnet IP协议网关

    /TP等多种协议转换为Modbus TCP、OPC UA、MQTT、BACnet IP、华为云IoT、亚马逊云IoT、阿里云IoT、ThingsBoard、Sparkplug B、钡铼云等协议
    的头像 发表于 07-24 16:04 513次阅读
    PLC<b class='flag-5'>协议</b>、Modbus RTU  <b class='flag-5'>TCP</b> 、DL T645、IEC101-104、BACnet 转Modbus <b class='flag-5'>TCP</b> RTU、OPC UA、<b class='flag-5'>MQTT</b>、BACnet IP<b class='flag-5'>协议</b>网关

    Modbus RTU、Modbus TCPMQTT网关实现Modbus设备与云平台的无缝通信

    钡铼Modbus转MQTT网关,简而言之,就是通过将Modbus协议(包括Modbus RTU和Modbus TCP)的数据转换为MQTT协议
    的头像 发表于 07-23 16:58 2828次阅读
    Modbus RTU、Modbus <b class='flag-5'>TCP</b>转<b class='flag-5'>MQTT</b>网关实现Modbus设备与云平台的无缝通信

    为什么使用MQTT而不是HTTP

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

    mqtt协议tcp协议区别

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

    为什么使用MQTT而不是HTTP

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

    mqtt协议tcp协议区别

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

    MQTT协议网关解决方案设计与实施

    MQTT协议网关是一个中间件,负责接收来自不同MQTT客户端的消息,并将这些消息转发到MQTT服务器;同时,也能接收来自MQTT服务器的消息
    的头像 发表于 03-11 14:07 491次阅读

    mqtt协议http协议区别

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

    关于TCPHTTP的知识科普

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