当前位置: 首页 > news >正文

TCP和MQTT通信协议

协议分层

网络分层                                            协议
应用层       Co AP        MQTT        HTTP
传输层                UDP        TCP
网络层                                        IP
链路层                                     Enternet

网络分层中最常见的几种协议

应用层:应用程序负责将数据以相应规则(协议)进行包装,发给传输层

  • MQTT:消息队列遥测传输
  • CoAP:受限应用协议
  • HTTP:超文本传输协议

传输层:负责将应用层传输过来的数组进行分组,为确保终端接收数据的顺序和完整性,会对每个分组进行标记,交给网络层

  • TCP:传输控制协议
  • UDP:用户数据协议

网络层:负责将传输层发过来的数据分组发送到目标终端

  • IP:网际协议

链路层:为网络层发送和接收数据单元

  • Ethernet:以太网传输协议

简要介绍MQTT协议和TCP协议

MQTT

        MQTT(Message Queuing Telemetry Transport)协议是一种轻量级的发布/订阅消息传输协议。它专门设计用于在低带宽和不稳定的网络环境下传输消息。

        其采用发布/订阅模式,其中客户端可以发布消息到主题(Topic),而其他客户端可以订阅这个主题来接收消息。这种模式使得MQTT非常适用于物联网设备之间的通信,因为它可以提供高效的消息传递和降低网络流量。

        它非常轻量,以至于可以在低功耗和资源受限的设备上运行。它使用TCP/IP协议进行传输,但是与传统的TCP协议相比,MQTT减少了许多开销,使得它可以在网络带宽较低的情况下实现快速的消息传递。

TCP 

        TCP(Transmission Control Protocol)协议是一种面向连接的网络传输协议。它是互联网协议簇中的一个核心协议,负责在不同设备之间建立可靠的连接。

        它通过三次握手来建立连接,确保数据的可靠传输。它提供了流量控制、拥塞控制和错误恢复的机制,以保证数据的完整性和可靠性。因此,TCP适用于对数据传输速度和可靠性有严格要求的场景,例如文件传输和网页浏览。

        然而,TCP协议的开销相对较大,需要较高的带宽和资源,对于一些低功耗和资源受限的设备来说可能不太适合。在这种情况下,可以使用类似MQTT这样的协议,通过减少开销和优化消息传输,实现高效的通信。

MQTT协议和TCP协议的对比

                    TCP                        MQTT
网络分层传输层应用层
协议定位面向连接的、可靠的、基于字节流的传输层通信协议

低带宽、高延迟不可靠的网络下进行数据相对可靠传输

设计初衷分组交换简单并适应loT物联网
传输定位数据包消息
技术挑战异构环境网络下的网络拥塞、丢包、乱序、重复包等多种问题资源有限的硬件和不可靠的网络下,数据相对可靠运输
服务质量通过ACK确认和重传机制,发送和接收的报文完全一致,并且保序

提供QoS为0、1、2三种可选的消息服务等级,消息传输不保序

1.协议层次与定位:
① TCP/IP:是一个协议族,是互联网的基础协议套件,它定义了电子设备如何在网络上进行通信。TCP/IP协议由多个层次组成,包括网络层(IP协议)和传输层(TCP协议)等。
② MQTT:是一个基于发布/订阅模式的消息传输协议,工作在应用层,通常用于物联网(IoT)设备之间的通信。MQTT依赖于TCP/IP协议族中的TCP协议来提供网络连接。
2.设计目的与适用场景:
① TCP/IP:设计用于广泛的网络环境和应用场合,提供稳定且可靠的连接。它适用于需要可靠传输的应用场景,如Web浏览、电子邮件和文件传输等。
② MQTT:设计用于连接带宽有限、延迟较高、网络不稳定的环境,特别是物联网(IoT)应用。它非常适合设备间的低功耗、小数据量通信。
3.消息传输模式:
① TCP/IP:基于连接的方式,通过三次握手建立连接,并使用序列号和确认应答机制保证数据的可靠传输。
② MQTT:基于发布/订阅模式,提供一对多的消息发布,解除应用程序耦合。它允许客户端订阅或发布特定的主题,服务器则负责消息的分发。
4.性能与开销:
① TCP/IP:提供了高可靠的数据传输服务,但协议栈较为复杂,需要消耗更多的计算资源。
② MQTT:设计简洁,开销小,传输效率高。它使用小型的控制包和变长的包头设计,极大程度地减少了数据传输过程中的冗余和带宽消耗。
5.服务质量(QoS):
① TCP/IP:传输层中的TCP协议提供了流量控制和拥塞控制等机制,确保数据的可靠传输。
② MQTT:支持三种服务质量(QoS)等级,允许根据消息的重要性设置不同的服务质量等级,确保消息的投递可靠性与时效性。
6.网络拓扑结构:
① TCP/IP:基于IP协议,具有路由功能,能够识别不同的网络和主机,并为数据包选择路由和路径。
② MQTT:基于发布/订阅模式,客户端可以订阅一个或多个主题,接收来自这些主题的消息。消息通过MQTT Broker(代理服务器)进行分发,客户端与Broker之间建立连接。
7.适用场景与设备:
① TCP/IP:适用于各种网络环境和应用场合,包括传统互联网、局域网、广域网等。
② MQTT:特别适用于物联网(IoT)设备之间的通信,如智能家居、工业自动化、环境监测等领域。MQTT适用于资源受限的设备,如低功耗嵌入式设备等。
 

相关文章:

TCP和MQTT通信协议

协议分层 网络分层 协议应用层 Co AP MQTT HTTP传输层 UDP TCP网络层 IP链路层 Enternet 网络分层中最…...

Python Pickle 与 JSON 序列化详解:存储、反序列化与对比

Python Pickle 与 JSON 序列化详解:存储、反序列化与对比 文章目录 Python Pickle 与 JSON 序列化详解:存储、反序列化与对比一 功能总览二 Pickle1 应用2 序列化3 反序列化4 系统资源对象1)不能被序列化的系统资源对象2)强行序列…...

第二百三十二节 JPA教程 - JPA教程 - JPA ID自动生成器示例、JPA ID生成策略示例

JPA教程 - JPA ID自动生成器示例 我们可以将id字段标记为自动生成的主键列。 数据库将在插入时自动为id字段生成一个值数据到表。 例子 下面的代码来自Person.java。 package cn.w3cschool.common;import javax.persistence.Entity; import javax.persistence.GeneratedValu…...

计算机网络 ---- 计算机网络的体系结构【计算机网络的分层结构】

一、以快递网络来引入分层思想 1.1 “分层” 的设计思想【将庞大而复杂的问题,转化为若干较小的局部问题】 从我们最熟悉的快递网络出发,在你家附近会有一个快递终点站A,在其他的城市,也会有这种快递终点站,比如说快递…...

Vite + Electron 时,Electron 渲染空白,静态资源加载错误等问题解决

问题 如果在 electron 里直接引入 vite 打包后的东西,那么有些资源是请求不到的 这是我的引入方式 根据报错,我们来到 vite 打包后的路径看一看 ,修改一下 dist 里的文件路径试了一试 修改后的样子,发现是可以的了 原因分析 …...

ZAB协议(算法)

一、ZAB(ZooKeeper Atomic Broadcast)介绍 ZAB 即 ZooKeeper Atomic Broadcast,是 ZooKeeper 实现分布式数据一致性的核心算法。它是一种原子广播协议,用于确保在分布式环境中,多个 ZooKeeper 服务器之间的数据一致性。…...

多个音频怎么合并?把多个音频合并在一起的方法推荐

多个音频怎么合并?无论是制作连贯的播客节目还是将音乐片段整合成专辑,音频合并已成为许多创作者的常见需求。通过有效合并音频,可以显著提升项目的整体质量,确保内容的连续性和一致性。然而,合并后的文件通常比原始单…...

【Django】Django Class-Based Views (CBV) 与 DRF APIView 的区别解析

Django Class-Based Views (CBV) 与 DRF APIView 的区别解析 在 Django 开发中,基于类的视图(Class-Based Views, CBV)是实现可重用性和代码结构化的利器。而 Django REST Framework (DRF) 提供的 APIView 是针对 API 开发的扩展。 一、CBV …...

如何增加Google收录量?

想增加Google收录量,首先自然是你的页面数量就要多,但这些页面的内容也绝对不能敷衍,你的网站都没多少页面,谷歌哪怕想收录都没办法,当然,这是一个过程,持续缓慢的增加页面,增加网站…...

leetcode练习 格雷编码

n 位格雷码序列 是一个由 2n 个整数组成的序列,其中: 每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1)第一个整数是 0一个整数在序列中出现 不超过一次每对 相邻 整数的二进制表示 恰好一位不同 ,且第一个 和 最后一…...

【LLM:Gemini】文本摘要、信息提取、验证和纠错、重新排列图表、视频理解、图像理解、模态组合

开始使用Gemini 目录 开始使用Gemini Gemini简介 Gemini实验结果 Gemini的多模态推理能力 文本摘要 信息提取 验证和纠错 重新排列图表 视频理解 图像理解 模态组合 Gemini多面手编程助理 库的使用 引用 本文概述了Gemini模型和如何有效地提示和使用这些模型。本…...

CMS之Wordpress建设

下载 https://cn.wordpress.org/ 宝塔安装Wordpress 创建网站 上传文件、并解压、剪切文件到项目根目录 安装 -> 数据库信息 -> 标题信息 http://wordpress.xxxxx.com 登录 http://wordpress.xxxxxxxxx.com/wp-admin/ 1. 主题(模板) wordpress-基本使用-02-在主题…...

使用Neo4j存储聊天记录的简单教程

引言 在当今的数据驱动世界中,关系型数据库有时难以处理复杂的、相互关联的数据集。Neo4j作为一款开源图数据库,以其高效管理高连接数据的能力而广受欢迎。本篇文章将详细介绍如何使用Neo4j来存储聊天信息历史,引导您在实际项目中利用其强大…...

前端面试常考算法

快速排序 #include<iostream> #include<cstdio> using namespace std; const int N 100005; int a[N];void quick_sort(int a[], int l, int r) {if (l > r) return;int x a[l r >> 1];int i l - 1, j r 1;while (i < j) {while (a[i] < x);…...

【机试准备】常用容器与函数

Vector详解 原文链接&#xff1a;【超详细】C vector 详解 例题&#xff0c;这一篇就够了-CSDN博客 向量&#xff08;Vector&#xff09;是一个封装了动态大小数组的顺序容器&#xff08;Sequence Container&#xff09;。跟任意其它类型容器一样&#xff0c;它能够存放各种…...

Base 社区见面会 | 新加坡站

活动信息 备受期待的 Base 社区见面会将于 Token2049 期间在新加坡举行&#xff0c;为 Base 爱好者和生态系统建设者提供一个独特的交流机会。本次活动由 DAOBase 组织&#xff0c;Base 和 Coinbase 提供支持&#xff0c;并得到了以下合作伙伴的大力支持&#xff1a; The Sand…...

麒麟操作系统搭建Nacos集群

Nacos 集群搭建 2.4.2 环境介绍 操作系统Kylin Linux Advanced Server V10 (Lance)Kylin Linux Advanced Server V10 (Lance)Kylin Linux Advanced Server V10 (Lance)内核版本Linux 4.19.90-52.22.v2207.ky10.aarch64Linux 4.19.90-52.22.v2207.ky10.aarch64Linux 4.19.90-52…...

Imagination推出性能最高且具有高等级功能安全性的汽车GPU IP

Imagination DXS GPU 进一步扩大其在汽车领域的领先地位 产品亮点 &#xff1a; 峰值性能比 Imagination 上一代汽车 GPU 提高了 50%&#xff0c;可扩展至 192GPixel/s、6 TFLOPS 和 24TOPS计算工作负载的性能提升多达十倍引入创新的分布式功能安全机制&#xff0c;以最小的…...

端口大全说明,HTTP,TCP,UDP常见端口对照表

HTTP,TCP,UDP常见端口对照表,下面罗列了包括在Linux 中的服务、守护进程、和程序所使用的最常见的通信端口小贴士&#xff1a;CtrlF 快速查找 Http端口号&#xff08;点标题可收缩或展开&#xff09; No1.最常用端口 端口号码/层名称注释1tcpmuxTCP端口服务多路复用5rje远程作…...

dplyr、tidyverse和ggplot2初探

dplyr、tidyverse 和 ggplot2 之间有紧密的联系&#xff0c;它们都是 R 语言中用于数据处理和可视化的工具&#xff0c;且都源于 Hadley Wickham 的工作。它们各自有不同的功能&#xff0c;但可以无缝协作&#xff0c;帮助用户完成从数据处理到数据可视化的工作流。以下是它们之…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...