用esp8266连网的一些互联网知识

news2024/11/26 4:42:48

参考太极创客的课程资料添加链接描述

TCP/IP协议簇

在网络系统中,为了保证通信设备之间能正确地进行通信,必须使用一种双方都能够理解的语言,这种语言被称为“协议”。

TCP/IP协议簇是Internet的基础,也是当今最流行的组网形式。TCP/IP是一组协议的代名词。
TCP/IP协议被划分为4层,分别是:请添加图片描述

ESP8266三种工作模式(链路层)

链路层的主要作用是实现设备之间的物理链接。举例来说,我们日常使用的WiFi就是链路层的一种。

模式1 – 无线终端模式(Wireless Station)

如下图所示,ESP8266可通过WiFi连接无线路由器。这与用您的手机通过WiFi连接无线路由器的模式相同。

模式2 – 接入点模式(Access Point, 也称 AP)

ESP8266也可以建立WiFi网络供其它设备连接。当ESP8266以此模式运行时,我们可以使用手机搜索ESP8266所发出的WiFi网络并进行连接。

模式3 – 混合模式(Wireless Station + AP)

所谓混合模式即以上两种模式的混合。

网络层

IP地址

举例来说,我们有一个手机,一台电脑和一个NodeMCU开发板。如下图所示,现在我们将这三台设备同时连接到家中的WiFi路由器。家中的WiFi路由器会通过它内置的DHCP服务器功能为这三台设备分配一个独立的IP地址。假设我们的NodeMCU IP地址是192.168.0.2,手机是192.168.0.3,电脑是192.168.0.4。到这里,我们的手机,电脑和NodeMCU就可以使用各自的IP地址彼此收发数据了。请添加图片描述

子网掩码(Subnet Mask)

与网络设备相同,网络本身也有自己的地址。
怎么看一个IP地址的子网地址是多少呢,要看其子网掩码对应为1的部分,例如IP地址为192.168.0.2,子网掩码为255.255.255.0,转为二进制数为11111111.11111111.11111111.00000000,可以看到子网掩码二进制数对应为1的部分属于子网地址,所以结合ip地址和子网掩码,可以得出,这个ip地址的子网地址为192.168.0,2是设备序号。

MAC地址和ARP协议

网络设备间要想实现通讯,设备之间不光要知道彼此的IP地址,还要知道设备的MAC地址(也叫MAC码)。

esp8266要发送数据给网络中的手机,不仅要知道ip地址,还要知道mac地址,刚连入wifi,手机和esp8266互相是不知道对方的mac地址的,所以,一开始esp8266给手机发送数据时,esp8266会向网络中的所有设备发送广播,这条广播信息的内容大概是这样的。“各位网络中的兄弟姐妹,我是住在IP地址192.168.0.2的设备。我的MAC码是AB-CD。我现在要发送数据给住在IP地址192.168.0.3的设备。请192.168.0.3地址的设备告知你的MAC码。” (注意:现实中的MAC码肯定不是AB-CD这 4个字母构成的。这里为了便于您的理解而将MAC地址进行了简化。)

如果手机听到了这条广播就会回复一条信息给ESP8266,大概的信息是这样的:“你好!我是住在192.168.0.3的设备。我的MAC码是EF-GH。”发送这条信息的同时,手机也会把ESP8266所拥有的IP地址以及MAC码记录下来,以备后用。

到这里,ESP8266和手机就彼此知道了对方的IP地址和MAC码了。接下来他们就可以愉快的网络通(Liao)讯(Tian)了。这种让两台完全不认识彼此的设备获取到对方IP和MAC地址的协议就是ARP了。

具体可以看看这篇文章:添加链接描述

传输层

TCP协议

TCP协议可以更好的保证数据传输的准确性,但是传输速度比UDP协议而言要慢一些。TCP协议的特点是可以保证所有数据都能被接收端接收,数据的传输顺序也不会被打乱,而且如有数据损坏则重发受损数据。基于以上功能特点,TCP通常用于电子邮件及文件上传等。

UDP协议

UDP协议并不能保证所有数据都被接收端所接受。一旦出现数据受损的情况,UDP协议将会抛弃受损的数据。这些数据一旦被抛弃将会永久性的消失,发送端不会因为数据受损而重新发送。因此UDP协议远不如TCP协议可靠。但是既然是这样,为何还有人会选择UDP协议呢?这是因为UDP比TCP速度快。因此UDP协议通常用于网络游戏以及语音聊天或视频聊天应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/598758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构学习记录——树习题-Complete Binary Search Tree(题目描述、输入输出示例、数据结构的选择、核心算法、计算左子树的规模)

目录 题目描述 输入示例 输出示例 数据结构的选择 核心算法 计算左子树的规模 思路 总结 题目描述 现给定一系列不同的非负整数键,如果要求构造出一颗完全二叉树,则可以构造唯一的二叉搜索树。输出此二叉搜索树的层序遍历序列。 完全二叉树 有n…

复习之linux系统中的权限管理

1.权限的查看及读取 (1)权限的查看 # ls -l file : 查看文件的权限 # ls -ld dir :查看目录权限 (2)权限的读取 文件的属性叫做文件的元数据。 元数据(Metadata),又称中介数据、中继…

chatgpt赋能python:Python为什么运行不出来?

Python为什么运行不出来? Python是一门高级编程语言,被广泛应用于科学计算、机器学习、Web开发等领域。但是,有时候我们在编写Python程序的过程中会遇到各种各样的问题,其中之一就是程序无法运行。那么,Python为什么会…

网页投票系统怎么做如何制作网页投票链接如何投票链接

用户在使用微信投票的时候,需要功能齐全,又快捷方便的投票小程序。 而“活动星投票”这款软件使用非常的方便,用户可以随时使用手机微信小程序获得线上投票服务,很多用户都很喜欢“活动星投票”这款软件。 “活动星投票”小程序在…

mysql版本升级导致的时区问题

背景 公司各个项目组用的mysql 版本不一样,有的是5.x稳定守旧版,有的最近喜欢用8.x高级迎新版,结果出了问题。 现象,数据库中保存的时间与java读取的时间字段不一样。 最开始数据库mysql版本为5.7.28,驱动为5.1 反正…

【C++】queue和priority_queue的用法及模拟实现

目录 一、queue的简介及其使用1、queue的简介2、queue的使用2、queue的模拟实现 二、priority_queue的简介及其使用1、priority_queue的简介2、priority_queue的使用3、priority_queue的模拟实现 一、queue的简介及其使用 1、queue的简介 queue是一种容器适配器,专…

SpringBoot 学习笔记之 “异常处理”

🍏🍐🍊🍑🍒🍓🫐🥑🍋🍉🥝 异常处理 文章目录 🍏 错误处理1、默认规则2、定制错误处理逻辑3、异常处理自动配置原理4、异常处…

用Python发送通知到企业微信,实现消息推送

Hi,大家好,今天就介绍如何实现自动推送消息到企业微信,适合告警类型通知,非常方便。 在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!_哔哩哔哩_bilibili在华为工作了10年的大佬出的Web自…

C++服务器框架开发6——日志系统LogFormatter/size_t学习

该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。 其教学视频见:[C高级教程]从零开始开发服务器框架(sylar) 上一篇:C服务器框架开发5——日志系统LogAppender/IO类“3种stream”/双感叹号 C服务器框架开发6——日志系统logFormatter/size_t学…

【Python】深度理解Class类、Object类、Type元类;

详解Class类、Object类、Type元类 1.Class类、Object类、Type元类的表面关系2.Class、Object、Type解释1.1关系详解 2.Object类的默认方法作用详解2.2.1 init2.2.2 new2.2.3 repr2.2.4 提要:作为普通的Python开发者来讲,深入理解object、type不是必要的&…

ESP32设备驱动-MSA301加速计传感器驱动

MSA301加速计传感器驱动 文章目录 MSA301加速计传感器驱动1、MSA301介绍2、硬件准备3、软件准备4、驱动实现1、MSA301介绍 MSA301 是一款具有 I2C 数字输出的三轴低 g 加速度计,适用于消费类应用。 它具有 2g/4g/8g/16g 的动态用户可选满量程范围,并允许在 1Hz 至 500Hz 的…

Lombok 的正确使用姿势

文章目录 1.Lombok 是什么2.安装 Lombok3.Spring Boot 集成 Lombok4.使用 Lombok4.1 注解一览表4.2 部分使用介绍Getter(lazytrue)ValueBuilderSuperBuilderSneakyThrowsSlf4jCleanupNonNullWithSynchronizedval 在 Java 开发领域中,Lombok 插件已经成为一个非常流行…

OpenGL蓝宝书第八章学习笔记:基元处理之几何着色器

前言 本篇在讲什么 OpenGL蓝宝书第八章学习笔记之几何着色器 本篇适合什么 适合初学OpenGL的小白 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文教学 重实践&#xff0c…

使用scikit-learn和pandas学习线性回归

对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了。 1. 获取数据,定义问题 没有数据,当然没法研究机器学习啦。这里我们用…

buuctf re入门题目解析

目录 1.easyre 2.reverse1 3.reverse2 4.内涵的软件 1.easyre 将exe文件放入ida,在主函数main中找到flag,此题结束 2.reverse1 打开主函数main,发现有一个跳转函数,双击打开 这句命令是将str1和str2的内容比较,当…

「C/C++」C/C++空指针void*

✨博客主页:何曾参静谧的博客 📌文章专栏:「C/C」C/C程序设计 相关术语 void指针:是一种通用指针类型,可以指向任何类型的数据或对象。它不关心指向的数据或对象的类型,只关心指针本身的地址。因此&#xf…

性能测试—— 基础概念

目录 一、性能测试和功能测试的区别 二、性能测试衡量指标以及名称解释 1、并发用户数、系统用户数、在线用户数 2、响应时间、平均响应时间、请求响应时间 3、事务 4、点击率 5、吞吐量 6、思考时间 7、资源利用率 三、性能测试分类 1、一般性能测试 2、负载测试 …

【Python】函数 ③ ( 函数返回值定义语法 | 函数返回多个返回值 | 代码示例 )

文章目录 一、函数返回值定义语法二、函数返回多个返回值三、函数返回值代码示例 一、函数返回值定义语法 在 Python 函数中 , 通过 return 关键字 , 可以返回一个结果给调用者 , 这个返回结果就是 函数返回值 ; def 函数名(函数参数):"""函数文档字符串&#…

【C++】---模板初阶(超详练气篇)

个人主页:平行线也会相交💪 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C之路】💌 本专栏旨在记录C的学习路线,望对大家有所帮助🙇‍ 希望我们一起努力、成长&…

几种神经网络整定PID参数原理剖析及simulink案例仿真

目录 前言 1 基于单神经元自适应PID Simulink仿真分析 1.1 原理简介 1.1.1 无监督的Hebb学习 ​1.1.2 有监督的Delta学习 1.1.3 有监督的Hebb学习 1.1.4 改进的有监督Hebb学习 1.1.5 总结 1.2 simulink仿真分析 1.2.1 将权值作为状态变量仿真分析 1.2.2 利用局部变量…