网络基础知识

本文介绍了网络基础知识,包括IP和端口的作用,路由器在解决公网IP不足、数据转发及安全防护中的关键作用,以及手机如何通过服务器访问开发板。重点讨论了MQTT在物联网中的传输数据方式,并提到了程序设计中的分层结构和国内开源库kawaii-mqtt。
摘要由CSDN通过智能技术生成

目录

1、网络基础知识

1.1 IP和端口的作用

1.2 路由器的作用

1.3 手机访问开发板方式

2、传输数据方式

2.1 通过服务器中转

2.1.1 硬件上

2.1.2 软件上

2.2 MQTT适合物联网

3.程序设计

3.1 分层

3.2 kawaii-mqtt


如图,一个是开发板,一个是手机,可以在开发板上插 一个WiFi模块,两者都可以连接到一个热点,甚至手机可以开启一个热点,两个互相连接后,手机可以跟开发板通信,开发板也可以直接跟手机通信,简单来说就是如果只是实现局域网内使用手机控制开发上的设备,只需要开发板和手机就可以:

要实现拿着手机在任何地方都可以控制家里的开发板,需要考虑更多:需要引入服务器。 

1、网络基础知识

1.1 IP和端口的作用

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

  • 自己:源IP、源端口
  • 目的:服务器IP、目的端口

  • 如左图所示,电脑打开两个浏览器,两个浏览器的源IP都是相同的(因为来自一个电脑),此时两个浏览器同时向http服务器发送数据(服务器IP、端口相同),那么服务器怎么识别数据是来自哪个浏览器的呢:此时就需要端口号进行区分。若想把一个程序发送出去,里面就包含有一个数据包,数据包当中包含IP和端口号,端口号就是一串数字,也就是int整型,http服务器通过识别源端口号来区别是哪个程序发送的数据
  • 如右图所示,电脑上有两个软件,ssh cilent和浏览器访问同一个网站,而ssh client想使用ssh服务,浏览器想使用ssh服务,此时服务器IP相同,那么两个不同的程序怎么声明自己需要什么服务呢:通过目的端口号区分,一般80端口是http服务;22端口是ssh服务

1.2 路由器的作用

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

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

如图,左边的电脑有n多个,其私网IP地址都是不一样的,但他们都是局域网内的IP。例如,公司里面有n多个电脑,那每一个电脑都需要申请一个公网IP吗?答案是不需要的,只需要一个路由器即可。路由器的服务商例如电信、移动和联通,会给路由器分配一个地址(公网IP),那么这个路由器就可以用这个地址(公网IP)去访问互联网,这是路由器实现访问互联网,那么电脑又要怎么才能访问互联网呢?

答案就是电脑需要以路由器为中介才能访问互联网(电脑不能直接访问互联网),假如现在源IP为182.168.0.2,端口号为1234的电脑A想要访问互联网发送数据,例如目的IP、端口号为qq.com,80,他的步骤如下:

  1. 将电脑A要访问qq.com的请求发送给路由器。
  2. 路由器记录下该请求。
  3. 路由器帮忙转发电脑A所要发送的数据。此时路由器会构造出一个新的数据包,该数据包里的源地址和端口发生改变,为路由器自身的IP地址和端口号(例如49.74.234.160,5678),目的IP为qq.com,目标端口例如80,既源IP端口改变,修改成路由器,但目的不变。
  4. qq.com的80端口号收到请求后返回数据。数据的源IP和端口号是qq.com,80。目标IP和端口号是路由器49.74.234.160.5678。
  5. 路由器接收到数据之后,将数据转发给电脑A(这里发送给电脑A是因为第2步中路由器记录了电脑A的请求),源IP、端口号是49.74.234.160,5678,目标IP、端口号是192.168.0.2,1234。

如果电脑A、B、C和D没有向路由器发送转发请求,现在有一个病毒,其源IP和端口号是病毒自身的,病毒想去访问电脑B,于是将数据包发送给路由器,源IP和端口号是病毒,目标IP和端口号是49.74.234.160,8888,当数据包到达路由器之后,路由器本身作用就是将数据包进行转发到局域网内的某一台电脑,但此时路由器会发现,该数据是不请自来的,路由器并没有把某个电脑的请求通过8888端口号转发出去,该端口并没有电脑发出传送数据请求,那么路由器就会自动屏蔽病毒发送的数据包

路由器有以下两个作用:

  • 解决公网IP不够用的现象:分配N个局域网地址
  • 起到保护作用:屏蔽病毒发送的数据包

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.3 手机访问开发板方式

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

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

中间要放入服务器:

  1. 开发板通过路由器连接服务器(可以与2互换顺序)
  2. 手机通过路由器连接服务器(可以与1呼唤顺序)
  3. 手机将数据发送给服务器
  4. 服务器将数据转发给开发板

2、传输数据方式

2.1 通过服务器中转

2.1.1 硬件上

2.1.2 软件上

有很多选择,对于MQTT,它更适合物联网

2.2 MQTT适合物联网

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

对于MQTT的深入解析,下一节进行说明。

3.程序设计

3.1 分层

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

3.2 kawaii-mqtt

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

kawaii 是 卡哇伊 的谐音。

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值