基于MQTT的智能家居程序框架day4

本文介绍了网络基础知识,包括IP和端口的作用,公网IP不足时如何通过路由器访问公网,以及公网如何无法直接访问局域网。重点讨论了MQTT协议在物联网中的应用,解释了其工作原理,如订阅和发布的概念,并推荐了一个国内开源的MQTT客户端kawaii-mqtt。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这节课韦老师讲解了一些网络基础知识,收获甚多。结合韦东山老师的笔记,我对视频内容也做了一些总结与理解。

1. 网络基础知识

1.1 IP和端口的作用

先讲讲网络传输时,怎么表示“自己”、“对方”:

  • IP
  • 端口

在这里插入图片描述

在网络中如何表示自己的目的(IP,port)

源(IP,port)<-------> 目的(IP,port),ip和端口的作用是用来表示源和目的。

1.2 公网IP不够用

IP和端口都很重要,但是IP不够用:

  • 在家里,在公司里,只有路由器才有公网IP
  • 其他电脑都只是局域网IP,比如192.168.x.x
  • 你家里的电脑,公司的电脑,IP都是192.168.0.100,但是它们并没有冲突:因为它们处于不用的局域网
  • 局域网里的电脑要访问公网(物联网),怎么办?要路由器帮忙!

在这里插入图片描述

假设我要去访问源信息qq.com的80端口:

1.我的源是192.168.0.2 :1234 数据包,这个数据包发给路由器(我的电脑没有能力去访问外网的设备,需要路由器帮忙);2.路由器接收到请求后就会去修改这个数据包——>源被替换成49.74.234.160(公网IP),端口改成1278。也就源被改了,但是目的没有被改;3.这个数据包就会被放入互联网到达目标;4.qq.com的80端口也会构造出一个包:49.74.234.160,端口1278,把这个包返回给路由器;5.路由器接收到这个包之后就会查表看一下,之前是谁发给我这个包的,源和端口被替换成192.168.0.2 :1234 作为目的;6.最后你收到了信息。

1.3 对外访问时,路由器来帮忙

IP和端口都很重要,但是IP不够用:

  • 主机A的局域网IP是10.1.1.100,它使用端口1025,去访问公网211.100.7.34
  • 但是它没有公网IP,跟路由器说:哥们,帮帮忙
  • 路由器就把数据包里的(10.1.1.100:1025)改成自己的IP和端口(162.105.176.65:16384),发出伪造的数据包
  • 服务器收到后,返回数据给(162.105.176.65:16384),这是路由器
  • 路由器收到数据后查表:
    • 这是主机A要我取的数据,
    • 于是把数据包里的目的(162.105.176.65:16384)改为(10.1.1.100:1025),
    • 并发给主机A
  • 主机A收到数据

在这里插入图片描述

从这个过程可以知道:

  • 局域网的电脑,借助路由器,可以访问公网
  • 需要局域网内的电脑主动发起网络连接
  • 公网无法主动访问局域网内的电脑
    • 你访问谁呢?在路由器里都没有记录,丢掉
    • 这可以保护局域网内的电脑,比如前两年爆发的勒索病毒
    • 但是也造成了:我在家里无法访问公司的电脑,公司的摄像头

1.4 对外访问时,访问谁?

下图中:手机怎么才能访问到开发板?

  • 手机不知道开发板的IP,即使知道也没有意义:开发板的IP是私网IP
  • 手机怎么访问开发板?

在这里插入图片描述

中间要放入服务器:

在这里插入图片描述

主动访问服务器,如果有人发给我信息,传给我。如果手机传输 data,服务器会保存data,当其他设备查表,会把data传输给他。

2. 双方怎么传输数据

2.1 通过服务器中转

2.1.1 硬件上(要有一个服务器)

在这里插入图片描述

2.1.2 协议上(一个APP)

有很多选择,对于MQTT,它更适合物联网。
在这里插入图片描述

服务器程序:matt_serser.exe

发布者(开发板):matt_client.exe

订阅者(手机):matt_client.exe

2.2 MQTT适合物联网

类似:订阅电视台某个频道。

MQTT的数据传输是怎么一回事呢:以CCTV为例,CCTV有很多记者,记者1体育,记者2财经,他们会把消息传给CCTV,后面会有很多观众,观众1可能更关注体育新闻,于是观众1就告诉CCTV我要订阅体育新闻,观众2可能更关注财经新闻,于是观众2就告诉CCTV我要订阅财经新闻,(第一步:订阅一些主题topic)。当记者来发布体育’主题‘的信息(第二步:发布),给CCTV,CCTV发现有人订阅,就把信息给这个观众(第三步:转发 )。

这就是MQTT的工作流程。
在这里插入图片描述

3. 程序如何设计

在这里插入图片描述

3.1 分层

  • 网络设备层:负责设备初始化、数据收发
  • MQTT协议层:负责数据的解析、打包
  • 应用层:根据数据控制设备

3.2 kawaii-mqtt

这是国内开源的一个MQTT客户端:https://github.com/jiejieTop/mqttclient

kawaii 是 卡哇伊 的谐音。

3.2 kawaii-mqtt

这是国内开源的一个MQTT客户端:https://github.com/jiejieTop/mqttclient

kawaii 是 卡哇伊 的谐音。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值