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

    文章

    531

    浏览量

    34838
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1417

    浏览量

    83003
  • MQTT
    +关注

    关注

    5

    文章

    720

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    为什么会有TCP/IP协议

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

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

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

    MQTT_协议中文资料

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

    GraniStudio :MQTT 协议的深度剖析

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

    什么是Modbus TCP协议

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

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

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

    MQTT为何成为物联网协议

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

    TCP协议的性能测试与评估方法

    在现代网络通信中,TCP协议的性能对用户体验至关重要。性能测试与评估可以帮助我们了解TCP协议在不同网络条件下的表现,从而优化网络配置和提高
    的头像 发表于 01-22 10:03 2202次阅读

    TCP协议的常见应用场景

    在现代通信网络中,TCP协议因其可靠性和稳定性而被广泛应用于各种场景。 1. 网页浏览 1.1 HTTP和HTTPS HTTP(超文本传输协议
    的头像 发表于 01-22 09:55 3294次阅读

    如何优化TCP协议的性能

    优化TCP协议的性能可以从多个方面入手,以下是一些关键的策略和方法: 一、调整TCP参数 TCP窗口大小 : 重要性 :TCP窗口大小是衡量
    的头像 发表于 01-22 09:52 1447次阅读

    基于MQTT协议的车云通信设计

    Queuing Telemetry Transport)是由OASIS发布的应用层协议,采用订阅/发布的通信模式,下层基于TCP/IP进行传输。该标准在工业物联网、车联网等领域有广泛应用。 MQTT主要有以下
    的头像 发表于 01-08 10:24 1713次阅读
    基于<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>的车云通信设计

    如何使用 cURL 测试 HTTP 协议

    cURL是一个强大的命令行工具,用于传输数据,支持多种协议,包括HTTP、HTTPS、FTP等。使用cURL测试HTTP协议可以帮助你理解HTTP
    的头像 发表于 12-30 09:26 2078次阅读

    HTTP 协议的工作原理

    HTTP协议的工作原理 1. HTTP协议概述 HTTP是一个应用层协议,它定义了客户端与服务器
    的头像 发表于 12-30 09:21 1587次阅读

    HTTP 协议的基本概念

    浏览器)和服务器之间请求和响应的格式。 1. HTTP协议概述 HTTP协议基于TCP/IP协议
    的头像 发表于 12-29 15:12 2224次阅读

    百问MQTT协议分析 - MQTT简述及协议报文格式组成

    16.1 mqtt协议介绍 16.1.1 概述 ​MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景
    发表于 12-13 09:29