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

[物联网iot]对比WIFI、MQTT、TCP、UDP通信协议

第一步:先理解最基础的关系(类比快递)

假设你要给朋友寄快递:

  • Wi-Fi相当于“公路和卡车”,负责把包裹从你家运到快递站

  • TCP/UDP:相当于“快递公司的运输规则”。

    • TCP:顺丰快递(保证包裹不丢、按顺序送达,但速度可能慢)。

    • UDP:普通快递(可能丢件、顺序乱,但速度快)。

  • MQTT:相当于“快递单上的具体说明”(比如“货到付款”或“放门口”)。


第二步: 用“快递流程”理解完整通信过程

假设你有一个智能温湿度传感器,要通过 Wi-Fi 上报数据到手机 APP:

  1. 数据准备(应用层 - MQTT)

    • 传感器生成数据:温度25℃, 湿度60%

    • MQTT 负责包装这条数据:添加“快递单”(MQTT 头部),比如:

      • 主题(Topic):home/sensor/temperature(告诉 Broker 这是客厅温度数据)。

      • QoS 等级:1(至少送达一次)。

      • 消息ID:123(用于确认)。

  2. 运输规则(传输层 - TCP)

    • TCP 接手后,将 MQTT 数据包拆分成多个“小包裹”,每个包裹打上标签:

      • 源端口:随机端口(如 54321)。

      • 目标端口:1883(MQTT 默认端口)。

      • 序列号(保证顺序)。

      • 校验和(防数据损坏)。

  3. 地址定位(网络层 - IP)

    • IP 协议 给包裹贴上“大地址标签”:

      • 源 IP:传感器 IP(如 192.168.1.100)。

      • 目标 IP:MQTT Broker 的 IP(如 broker.emqx.io)。

      • 协议类型:TCP(告诉接收方这是 TCP 数据)。

  4. 物理搬运(数据链路层/物理层 - Wi-Fi)

    • Wi-Fi 将 IP 数据包封装成“无线信号”,通过路由器中转:

      • 转换为 Wi-Fi 帧(包含 MAC 地址:路由器的 MAC 是下一站)。

      • 通过无线电波传输到路由器。

      • 路由器再通过互联网将数据最终送达 Broker。

  5. 反向流程(手机 APP 接收数据)

    • Broker 将数据通过同样的流程反向传递到手机 APP(Wi-Fi → IP → TCP → MQTT → 展示数据)。


第三步:核心概念一句话总结

协议一句话总结典型场景
TCP可靠的快递员,不丢件不乱序网页、微信消息
UDP跑得快的快递员,可能丢件视频通话、游戏实时位置
MQTT为物联网设计的“快递单规则”智能家居设备上报数据
Wi-Fi无线版的“网线”手机、电脑无线联网

2. 关键协作要点

协议协作行为类比解释
Wi-Fi只关心“如何把数据从A点传到B点”卡车司机不关心货物内容,只管运输
TCP确保货物不丢失、按顺序到达快递员逐个包裹检查,丢件就重发
UDP一次性扔出所有包裹,不管是否到达快递员直接把包裹扔到客户家门口
MQTT定义包裹内容如何解读(主题、QoS等级)快递单上写明“易碎品”或“加急”


第四步:常见问题解答

Q1:MQTT必须基于TCP吗?
  • 是的,MQTT设计时基于TCP。但物联网中也有变种如MQTT-SN(基于UDP或其他协议)。

Q2:为什么我本地测试MQTT能通,真实项目连不上?
  • 可能原因:

    1. 防火墙拦截了端口(如1883)。

    2. 未配置MQTT Broker的用户名密码(公开测试Broker不需要,但私有环境需要)。

相关文章:

[物联网iot]对比WIFI、MQTT、TCP、UDP通信协议

第一步:先理解最基础的关系(类比快递) 假设你要给朋友寄快递: Wi-Fi:相当于“公路和卡车”,负责把包裹从你家运到快递站。 TCP/UDP:相当于“快递公司的运输规则”。 TCP:顺丰快递&…...

CSDN自动设置vip文章的解除办法

文章目录 CSDN真的会将“全部可见”文章偷偷自动设置为“VIP可读”最省事的途径:联系客服,预计1-2个工作日可以取消新版“内容管理”内手工操作 CSDN真的会将“全部可见”文章偷偷自动设置为“VIP可读” 今天无意中发现之前一些公开的文章变为仅VIP可读…...

P4305 [JLOI2011] 不重复数字

使用stl中的动态数组和unordered_map #include<iostream> #include<iostream> #include<vector> #include<unordered_map> using namespace std; int t; int main(){cin>>t;while(t--){//每次处理一组数据.int n;cin>>n;vector<int&…...

Joomla教程—Joomla 模块管理与Joomla 模块类型介绍

Joomla 模块管理 原文&#xff1a;Joomla 模块管理_w3cschool 模块管理&#xff0c;从文字意面上理解&#xff0c;可想而知&#xff0c;就是管理网站中所有的模块&#xff0c;模块的增、删、改、查都会在模块管理进行。这一节将简单介绍joomla后台的模块管理 1、模块管理的界…...

安装gvm后普通用户模式下无法使用cd切换目录

安装gvm后普通用户模式下无法使用cd切换目录 今天装完gvm后发现无法使用cd来切换目录了。。。 1.使用type cd命令发现cd命令被定义为了函数 usrusr-pc:~$ type cd cd 是函数 cd () { if __gvm_is_function __gvm_oldcd; then__gvm_oldcd $*;fi;local dot_go_version dot_go_…...

Pyspark学习二:快速入门基本数据结构

写在前面&#xff1a;实际工作中其实不需要自己安装和配置&#xff0c;更重要的是会用。所以就不研究怎么安装配置了。 前面介绍过&#xff1a;简单来说&#xff0c;Spark是一款分布式的计算框架&#xff0c;用于调度成百上千的服务器集群&#xff0c;计算TB、PB乃至EB级别的海…...

Vue中虚拟DOM创建到挂载的过程

Vue中虚拟DOM创建到挂载的过程 流程概括下来基本上就是&#xff1a;模板 → AST → render函数 → 虚拟节点 → 挂载 AST&#xff1a;抽象语法树&#xff0c;它用于记录原始代码中所有的关键信息&#xff0c;根据AST可以将代码从一种语言转化为另一种语言。 虚拟DOM创建到挂载…...

选择网上购物系统要看几方面?

随着电子商务的迅猛发展&#xff0c;选择一个合适的网上购物系统已成为许多企业成功的关键。无论是初创企业还是已经成熟的公司&#xff0c;选择合适的购物系统都能显著提升用户体验、提高销售额和优化运营效率。本文将从几个重要方面探讨选择网上购物系统时需要考虑的关键因素…...

C++进阶知识复习 31~38

目的 写这一系列文章的目的主要是为了秋招时候应对计算机基础问题能够流畅的回答出来 &#xff08;如果不整理下 磕磕绊绊的回答会被认为是不熟悉&#xff09; 本文章题目的主要来源来自于 面试鸭 部分面试鸭上没有而牛客网上有的博主会进行查缺补漏 题目编号按照面试鸭官网…...

定制开发开源AI智能名片S2B2C商城小程序:技术赋能商业价值实现路径研究

摘要 在数字经济与社交新零售蓬勃发展的背景下&#xff0c;本研究聚焦"定制开发开源AI智能名片S2B2C商城小程序"这一创新技术解决方案&#xff0c;通过解析其技术架构、功能模块及业务应用场景&#xff0c;探讨其如何支持企业目标达成、补充技术栈短板、实现数据整合…...

美关税加征下,Odoo免费开源ERP如何助企业破局?

近期&#xff0c;美国特朗普政府推行的关税政策对全球供应链和进出口企业造成巨大冲击&#xff0c;尤其是依赖中美贸易的企业面临成本激增、利润压缩和合规风险。在此背景下&#xff0c;如何通过数字化转型优化管理效率、降低运营成本成为企业生存的关键。本文以免费开源ERP系统…...

高级:高并发架构面试题深度解析

一、引言 在现代互联网应用开发中&#xff0c;高并发架构设计是确保系统在高负载下仍能稳定、高效运行的关键。面试官通过相关问题&#xff0c;考察候选人对高并发系统设计的理解、架构模式的掌握以及在实际项目中解决问题的能力。本文将深入剖析高并发系统的设计原则、常见的…...

Unity中 JobSystem使用整理

Unity 的JobSystem允许创建多线程代码&#xff0c;以便应用程序可以使用所有可用的 CPU 内核来执行代码&#xff0c;这提供了更高的性能&#xff0c;因为您的应用程序可以更高效地使用运行它的所有 CPU 内核的容量&#xff0c;而不是在一个 CPU 内核上运行所有代码。 可以单独使…...

洛谷 P1032 [NOIP 2002 提高组] 字串变换

【题目链接】 洛谷 P1032 [NOIP 2002 提高组] 字串变换 【题目考点】 1. 广搜 2. 双向广搜 【解题思路】 解空间树中每个结点包含的状态为一个字符串s&#xff0c;该结点的子结点中的字符串为字符串s通过变换规则可以变化而成的字符串。求从起始字符串变换为最终字符串的…...

Python Websockets库深度解析:构建高效的实时Web应用

引言 在现代Web开发中&#xff0c;实时通信已经成为许多应用的核心需求。无论是聊天应用、在线游戏、金融交易平台还是协作工具&#xff0c;都需要服务器和客户端之间建立持久、双向的通信通道。传统的HTTP协议由于其请求-响应模式&#xff0c;无法有效满足这些实时交互需求。…...

42.C++11-右值引用与移动语义/完美转发

⭐上篇文章&#xff1a;41.C哈希6&#xff08;哈希切割/分片/位图/布隆过滤器与海量数据处理场景&#xff09;-CSDN博客 ⭐本篇代码&#xff1a;c学习/22.C11新特性的使用 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) ⭐标⭐是比较重要的部分 目录 一. 右值引用…...

LeetCode题二:判断回文

查阅资料我得到的结果远没有大佬们的做法更省时间&#xff0c;而且还很麻烦 我的代码(完整)&#xff1a; class Solution:def isPalindrome(self, x: int) -> bool:# 若 x 为负数&#xff0c;由于负数不可能是回文数&#xff0c;直接返回 Falseif x < 0:return False# …...

[王阳明代数讲义]琴语言类型系统工程特性

琴语言类型系统工程特性 层展物理学组织实务与艺术与琴生生.物机.械科.技工.业研究.所软凝聚态物理开发工具包社会科学气质砥砺学人生意气场社群成员魅力场与心气微积分社会关系力学 意气实体过程图论信息编码&#xff0c;如来码导引 注意力机制道装Transformer架构的发展标度律…...

问题:tomcat下部署eureka双重路径

开发时在tomcat下启动eureka服务 客户端注册时需要地址需要注意 http://localhost:8761/eureka/eureka 后面一个eureka与tomcat context-path有关系按实际配置替换 如果不想要两个path可将tomcat context-path写为 / 建议使用 / 避免出现其他问题 如图...

JUC系列JMM学习之随笔

JUC: JUC 是 Java 并发编程的核心工具包,全称为 Java Util Concurrent,是 java.util.concurrent 包及其子包的简称。它提供了一套强大且高效的并发编程工具,用于简化多线程开发并提高性能。 CPU核心数和线程数的关系:1核处理1线程(同一时间单次) CPU内核结构: 工作内…...

React(九)React Hooks

初识Hook 我们到底为什么需要hook那? 函数组件类组件存在问题 函数组件存在的问题&#xff1a; import React, { PureComponent } from reactfunction HelloWorld2(props) {let message"Hello world"// 函数式组件存在的缺陷&#xff1a;// 1.修改message之后&a…...

PyTorch嵌入层(nn.Embedding)

在 PyTorch 中&#xff0c;nn.Embedding 层&#xff08;即 model.user_embedding&#xff09;除了 .weight 这个核心属性外&#xff0c;还有其他属性和方法。以下是完整的解析&#xff1a; 1. 主要属性 (1) weight&#xff08;核心参数&#xff09; 作用&#xff1a;存储所有…...

AIGC7——AIGC驱动的视听内容定制化革命:从Sora到商业化落地

引言&#xff1a;个性化视听时代的到来 2024年&#xff0c;OpenAI发布视频生成模型Sora&#xff0c;可生成60秒高清视频&#xff1b;中国团队推出的Vidu模型实现16秒镜头连贯生成。这些突破标志着AIGC正式进入高质量视听内容定制化阶段。据Gartner预测&#xff0c;到2027年&am…...

接上文,SpringBoot的线程池配置以及JVM监控

接上篇文章&#xff0c; 拿SpringBoot举个例 1.1 默认线程池的隐患 Spring Boot的Async默认使用SimpleAsyncTaskExecutor&#xff08;无复用线程&#xff09;&#xff0c;频繁创建/销毁线程易引发性能问题。 1.2 自定义线程池配置 Configuration EnableAsync public class A…...

《AI大模型应知应会100篇》加餐篇:LlamaIndex 与 LangChain 的无缝集成

加餐篇&#xff1a;LlamaIndex 与 LangChain 的无缝集成 问题背景&#xff1a;在实际应用中&#xff0c;开发者常常需要结合多个框架的优势。例如&#xff0c;使用 LangChain 管理复杂的业务逻辑链&#xff0c;同时利用 LlamaIndex 的高效索引和检索能力构建知识库。本文在基于…...

部署大模型实战:如何巧妙权衡效果、成本与延迟?

目录 部署大模型实战&#xff1a;如何巧妙权衡效果、成本与延迟&#xff1f; 一、为什么要进行权衡&#xff1f; 二、权衡的三个关键维度 三、如何进行有效权衡&#xff1f;&#xff08;实操策略&#xff09; &#xff08;一&#xff09;明确需求场景与优先级 &#xff08…...

元素三大等待

硬性等待&#xff08;强制等待&#xff09; 线程休眠&#xff0c;强制等待 Thread.sleep(long millis);这是最简单的等待方式&#xff0c;使用time.sleep()方法来实现。在代码中强制等待一定的时间&#xff0c;不论元素是否已经加载完成&#xff0c;都会等待指定的时间后才继…...

【DY】信息化集成化信号采集与处理系统;生物信号采集处理系统一体机

MD3000-C信息化一体机生物信号采集处理系统 实验平台技术指标 01、整机外形尺寸&#xff1a;1680mm(L)*750mm(w)*2260mm(H)&#xff1b; 02、实验台操作面积&#xff1a;750(w)*1340(L&#xff09;&#xff08;长*宽&#xff09;&#xff1b; 03、实验台面离地高度&#xf…...

康谋分享 | 仿真驱动、数据自造:巧用合成数据重构智能座舱

随着汽车向智能化、场景化加速演进&#xff0c;智能座舱已成为人车交互的核心承载。从驾驶员注意力监测到儿童遗留检测&#xff0c;从乘员识别到安全带状态判断&#xff0c;座舱内的每一次行为都蕴含着巨大的安全与体验价值。 然而&#xff0c;这些感知系统要在多样驾驶行为、…...

YOLO学习笔记 | 基于YOLOv5的车辆行人重识别算法研究(附matlab代码)

基于YOLOv5的车辆行人重识别算法研究 🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥 摘要 本文提出了一种基于YOLOv5的车辆行人重识别(ReID)算法,结合目标检测与特征匹配技术,实现高效的多目标跟踪与识别。通过引入注意力机制、优化损失函数和轻量化网络结构…...