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这样的协议,通过减少开销和优化消息传输,实现高效的通信。
| 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详解 原文链接:【超详细】C vector 详解 例题,这一篇就够了-CSDN博客 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种…...
Base 社区见面会 | 新加坡站
活动信息 备受期待的 Base 社区见面会将于 Token2049 期间在新加坡举行,为 Base 爱好者和生态系统建设者提供一个独特的交流机会。本次活动由 DAOBase 组织,Base 和 Coinbase 提供支持,并得到了以下合作伙伴的大力支持: 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 进一步扩大其在汽车领域的领先地位 产品亮点 : 峰值性能比 Imagination 上一代汽车 GPU 提高了 50%,可扩展至 192GPixel/s、6 TFLOPS 和 24TOPS计算工作负载的性能提升多达十倍引入创新的分布式功能安全机制,以最小的…...
端口大全说明,HTTP,TCP,UDP常见端口对照表
HTTP,TCP,UDP常见端口对照表,下面罗列了包括在Linux 中的服务、守护进程、和程序所使用的最常见的通信端口小贴士:CtrlF 快速查找 Http端口号(点标题可收缩或展开) No1.最常用端口 端口号码/层名称注释1tcpmuxTCP端口服务多路复用5rje远程作…...
dplyr、tidyverse和ggplot2初探
dplyr、tidyverse 和 ggplot2 之间有紧密的联系,它们都是 R 语言中用于数据处理和可视化的工具,且都源于 Hadley Wickham 的工作。它们各自有不同的功能,但可以无缝协作,帮助用户完成从数据处理到数据可视化的工作流。以下是它们之…...
Qwen3-VL-4B-Instruct:多模态视觉语言模型的技术演进与实践指南
Qwen3-VL-4B-Instruct:多模态视觉语言模型的技术演进与实践指南 【免费下载链接】Qwen3-VL-4B-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/Qwen3-VL-4B-Instruct 技术突破:重新定义多模态交互范式 Qwen3-VL-4B-Instruct作为…...
PCB布局设计规范与工程实践要点
PCB布局设计思路与工程实践指南1. 布局设计基本原则1.1 结构约束优先原则在PCB布局初期,必须优先考虑机械结构约束条件:定位安装孔、连接器等结构件需严格按照外壳设计文件放置连接器1脚方向必须与结构设计匹配,避免装配错误元件高度不得超过…...
SpringBoot 拦截器(Interceptor)自定义实现登录鉴权
在 Web 项目中,登录鉴权是最核心的安全机制:接口必须校验用户是否登录、是否拥有权限,未登录则直接拦截,禁止访问。SpringBoot 提供的 HandlerInterceptor 拦截器,是实现登录校验、日志记录、接口限流最优雅的方案。本…...
EspSoftwareSerial:ESP系列高性能软件串口实现
1. 项目概述EspSoftwareSerial是专为 ESP 系列微控制器(ESP8266、ESP32、ESP32-S2、ESP32-S3、ESP32-C3)设计的软件串口实现库,其核心目标是提供与 Arduino AVR 平台SoftwareSerial库高度兼容的 API 接口,同时充分利用 ESP 架构特…...
别再只用SVG了!用Vue3 + Konva给你的后台管理系统加个流程图编辑器(附完整代码)
Vue3 Konva实战:打造高交互流程图编辑器的完整方案 在后台管理系统开发中,流程图编辑器是提升业务配置效率的利器。传统SVG方案在复杂交互场景下常遇到性能瓶颈,而基于Canvas的Konva库配合Vue3的响应式特性,能轻松实现流畅的拖拽…...
ViGEmBus虚拟游戏手柄驱动:重构Windows输入控制生态的核心引擎
ViGEmBus虚拟游戏手柄驱动:重构Windows输入控制生态的核心引擎 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 一、价值定位:虚拟设备…...
OpenClaw备份策略:Qwen3.5-9B重要数据自动同步到私有云盘
OpenClaw备份策略:Qwen3.5-9B重要数据自动同步到私有云盘 1. 为什么需要自动化备份方案 作为一个经常需要处理大量文档和代码的技术写作者,我经历过太多次因为系统崩溃或误操作导致工作成果丢失的惨痛教训。传统的备份方案要么需要手动操作(…...
RLT火了,但拧螺丝的真问题真是它解决的吗?
先说结论RLT的核心价值在于“分工”:让笨重但泛化好的VLA做感知和粗规划,让轻快但专精的小网络做在线微调,这是一种计算和样本成本的折中架构。它没有解决数据收集的根本成本,而是优化了“数据利用率”和“策略更新效率”…...
线性代数小白必看:孔祥仁网课笔记整理(附二阶到n阶行列式详解)
线性代数入门:从二阶行列式到n阶行列式的完整指南 第一次接触线性代数时,行列式这个概念就像一堵高墙挡在面前。记得我大一时,光是理解二阶行列式的几何意义就花了整整一周时间。直到后来遇到一位好老师,用简单的例子帮我打通了任…...
腾讯地图SDK隐私协议合规接入实战:你的App真的合法显示地图了吗?
腾讯地图SDK隐私合规实战:从法律条文到代码落地的全流程指南 当你的App因为地图功能被应用商店拒审时,当用户投诉你的应用"偷偷收集位置信息"时,当合规团队发来长达20页的整改清单时——这些场景正在成为移动开发者的日常。去年某社…...
