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

SLAAC如何工作?

SLAAC如何工作?

IPv6无状态地址自动配置(SLAAC)-常见问题 - 苍然满关中 - 博客园

https://support.huawei.com/enterprise/zh/doc/EDOC1100323788?section=j00s
https://www.zhihu.com/question/6691553243/answer/57023796400

主机在启动或接口UP后,发送路由器祈求(Router Solicitation,RS),路由器收到此消息后,回复路由器宣告(Router Advertisement,RA)。此宣告可能是单播给主机的,也可能是多播的,取决于路由器当前的状态(见下文)。

路由器在RA中设置M位和O位,针对这两个标志位,解释如下:

M位:“Managed address configuration”标志。值为1时,表示地址可以通过DHCPv6方式获取。若M标识位置1,O标志位是冗余的,可以被忽略,因为DHCPv6可以提供所有的配置信息。

O位:“Other configuration”标志。值为1时,表示除地址外其它的配置信息可是通过DHCPv6方式获取。

若使用SLAAC,则RA中会设置M=0,O=1,指示主机通过SLAAC来配置地址,其它信息,如DNS服务器等,可以通过DHCPv6方式获取(也可以通过单个RA来一次性的获取前缀和DNS服务器信息,关于获取DNS的方式,请参考下文)。RA中同时会携带一个前缀信息选项(Prefix Information Option,PIO),指示主机应该使用的前缀。

主机收到RA后,解析消息,使用RA中指定的前缀(一般前缀长度为64位),与本地生成的64位接口ID组合,生成接口的128位IP地址。在经过重复地址检测(DAD)后,确认地址可用。至此,主机使用SLAAC来配置自身的过程已经完成,就可以使用IPv6地址进行通信了。

与IPv4类似,主机要想访问IPv6互联网,还需要知道默认路由器(网关)信息和DNS服务器信息。

获取默认路由器(网关)也是通过RA来完成的,详见下文。

IPv6 DNS服务器信息的重要性不高,没有此信息也不会影响主机使用IPv6访问互联网,原因是,主机一般是双栈的,可以使用IPv4来查询AAAA记录。

IPv6如何发现默认路由器(网关)?

主机收到有效的路由器宣告(RA)消息后,从消息中提取源地址并添加到自己的默认路由器列表中(参考RFC4861第6.3.4节)。

主机对路由器宣告(RA)消息进行如下有效性检查(参考RFC4861第6.1.2节):

  1. 源IP地址是链路本地地址。路由器必须使用其链路本地地址作为路由宣告和重定向消息的源地址,以便主机可以唯一识别路由器。
  2. IP头部的跳数限制字段值是255,报文不能是被其它路由器转发过的。
  3. ICMP头部的校验和有效。
  4. ICMP头部的代码(Code)字段值为0。
  5. ICMP报文的长度为16字节或更长。
  6. 携带的所有选项的长度字段值大于0。

路由器宣告(RA)消息中包含Router Lifetime字段,指示路由器的有效期,当收到此字段值为0的RA时,主机从默认路由器列表中删除该路由器。

主机会针对默认路由器的地址进行邻居发现来解析其MAC地址。

邻居发现的过程

邻居发现主要有3种用途:

  1. 地址解析;
  2. 可达性探测;
  3. 重复地址检测(DAD)

本节主要讲述第一种用途。

与IPv4类似,主机在与同网段其他主机或网关通信时,需要学习对端的MAC地址。在IPv4中,这是通过ARP来实现的,在IPv6中,这个过程叫邻居发现。

邻居发现包括2个报文,即邻居祈求(Neighbor Solicitation,RS)和邻居宣告(Neighbor Advertisement,NA)。类似IPv4中的ARP请求和应答。

主机首先发送NS,其中目的地址是“请求节点多播地址”,源地址是自身接口的地址。在Target Address字段中包含要解析的目标地址。必须携带源链路层地址(Source Link-layer Address)选项,包含自己的链路层地址。

思考:为什么NS的目的地址是“请求节点多播地址”,而不是直接使用目标地址?

“请求节点多播地址”的格式为“FF02:0:0:0:0:1:FFXX:XXXX”,其计算方式是取目标单播/任播地址的低24位,将其附加到前缀FF02:0:0:0:0:1:FF00::/104之后。

目标主机收到NS后,回复NA,携带目标链路层地址(Target link-layer address)选项,包含对应的链路层地址。

主机收到NA后,地址解析已完成。后续就可以向目标主机发送报文了。

什么是重复地址检测(DAD)?

主机在使用RA中宣告的前缀和自己生成的接口ID组合生成完整的IPv6地址之后,需要先对该地址进行重复地址检测,检测通过,确认无冲突后,才能使用该地址。在检测完成前,该地址被称为“临时地址”或“候选地址”(tentative address)。

使用邻居发现过程来进行重复地址检测。

主机发送NS,其中源地址为“未指定地址”(unspecified address),即全0的IPv6地址“::”。目的地址为使用临时地址生成的请求节点多播地址。Target Address中包含该临时地址。这种NS不携带源链路层地址选项(Source Link-layer Address)。

源地址使用“未指定地址”的原因是,此时接口还没有地址,在重复地址检查完成前,临时地址不会被分配给接口。

不携带源链路层地址选项的原因是,若存在冲突,其它节点在回复时,会将NA发往所有节点多播地址,不需要此信息。

主机预期此NS消息不会收到回复。若收到回复,则表面存在地址冲突。主机需要重新生成接口ID,进而生成新的IPv6地址,再次执行重复地址检测过程。

路由器使用单播还是多播发送RA?

路由器在收到RS后,会回复RA。路由器根据自身情况决定使用单播还是多播进行回复。

路由器本身会周期性的发送多播RA。邻居发现协议对RA做了限速。路由器在收到RS后,会计算一个时延。若下一个周期性RA的发送时间比当前时间加上时延更早,则按计划发送周期性的多播RA。否则,发送单播RA给主机。

主机获取DNS服务器信息的方法有哪些?

目前主机有3中方式获取DNS服务器信息:

  1. 使用DHCPv6从服务器获取;
  2. 从RA中获取,使用Recursive DNS Server选项;
  3. 使用知名任播地址,在系统内预设置;

这3种方式中,最常见的是第一种。

第二种方式出现的较晚,最开始在RFC5006中定义,后被RFC6106替代,最新的标准是RFC8106。这种方式使用的也不多。

第三种方式用到的最少。

如何撤销或修改前缀?

家庭宽带中,路由器或光猫在WAN侧到BRAS进行PPPOE拨号,通过IPCP获取IPv4地址,通过IPV6CP协商IPv6接口ID。后续通过RS/RA流程获取前缀信息,生成WAN口的全局IPv6地址。然后通过DHCPv6从BRAS获取IA_PD,即代理前缀。此代理前缀长度一般小于或等于64位。

路由器或光猫随后从代理前缀中划分出一个64位前缀,用于下挂终端的SLAAC配置。

在光猫WAN侧重播号导致获取的IA_PD前缀发生变化,或者WAN侧拨号失败等情况发生时,需要撤销之前宣告的前缀。

路由器发送RA消息,将前缀的Valid Lifetime设置为0。主机收到此类RA之后,会立即将前缀列表中对应的条目设置为超时(参考RFC4861第6.3.5节)。

在路由器断电重启的场景下,若重启前后从WAN侧获取的IA_PD不一致,路由器无法将重启前的前缀宣告为无效以撤销。这会造成终端上有多个IP地址。若终端在发起IPv6连接时选择了错误的地址,则可能造成通信失败。

这里的超时是将前缀列表中的条目设置为超时,而前缀列表的用途是进行同一链路(on-link)判定,即在发送报文时,根据目的IPv6地址和前缀列表中的信息来决定将报文直接发往目标主机还是网关。

在RFC4862(IPv6无状态地址自动配置)第5.5.3节(处理路由器宣告)第e)中,有如下规定:

针对地址的有效生命周期具体采取的行动取决于接收的宣告中的有效生命周期和之前自动配置的地址的有效生命周期的剩余时间。在下文的讨论中,我们将剩余的时间称为“RemainingLifetime”:

  1. 若接收的有效生命周期长于2小时或比RemainingLifetime长,则将地址的有效生命周期设置为被宣告的有效生命周期。
  2. 若RemainingLifetime小于或等于2小时,则忽略前缀信息选项中的有效生命周期,除非包含前缀信息选项的路由器宣告消息已被认证(例如,通过RFC3971中说明的安全的邻居发现)。若路由器宣告消息被认证通过,则地址的有效周期应该被设置为接收的前缀信息选项中携带的有效生命周期。
  3. 其它情况下,将地址的有效周期重置为2小时。

这些规则的初衷是为了避免拒绝服务攻击。根据这些规则,如果想撤销某个前缀,即使在RA报文中包含了有效生命周期为0的前缀信息选项,主机也会将地址保留至少2个小时。

为什么经常看到Windows电脑上有很多IPv6地址?

这主要有以下几个原因:

  1. Windows系统针对同一个前缀,至少生成2个地址,其中一个被称为“稳定地址”,用于从外部访问主机;一个被称为“临时地址”,用于本机发起到外部的连接。
  2. Windows默认启用了隐私扩展,生成的临时地址会有一个较短的生命周期。在临时地址的生命周期到期后,地址会变为废止状态,并生成新的临时地址。但此时若有应用程序仍在使用被废止的地址,则该地址不会被删除。

上述两个原因导致启用IPv6的Windows系统在运行一段时间后,会看到有很多IPv6地址。

Windows上禁用隐私扩展(即不自动生成临时地址)的方法:

使用管理员身份打开cmd命令行,执行下列命令

netsh interface ipv6 set privacy state=disabled

下图是禁用之前的效果,可以看到针对每个前缀,都至少有1个临时地址。

禁用过程(执行此命令后可能需要禁用再启用网卡):

下图是禁用之后的效果,可以看到,系统没有再生成IPv6临时地址:

为什么windows电脑上IPv6地址的后64位接口ID和MAC没有关系?

在使用SLAAC时,IPv6地址的后64位被称为接口标识符,也被简称为IID(Interface Identifier),由主机自己生成。

标准文档中介绍的生成接口ID的算法一般是根据48位的MAC地址来生成IEEE EUI-64标识。Windows系统出于安全考虑等因素,使用了随机的接口ID。这同时也是后续标准文档中推荐的做法。

生成接口标识符的方式有很多,包括但不限于以下的方式:

  • 基于IEEE标识符的IID,这是在RFC4291中定义的;
  • 静态/手工配置IID,即由用户自己指定;
  • 固定的,语义不透明的IID,这是Windows系统使用的方式,最新标准是RFC8981;
  • 加密生成的IID,也被称为CGA;
  • 稳定的,语义不透明的IID,这种方法由RFC7217指定;

...

在Windows下可以使用下列命令来关闭随机生成接口ID:

Netsh interface ipv6 set global randomizeidentifiers=disabled

关闭之后的效果如下:

可以看到,IPv6地址中的IID部分是由48位MAC地址生成的。

相关文章:

SLAAC如何工作?

SLAAC如何工作? IPv6无状态地址自动配置(SLAAC)-常见问题 - 苍然满关中 - 博客园 https://support.huawei.com/enterprise/zh/doc/EDOC1100323788?sectionj00shttps://www.zhihu.com/question/6691553243/answer/57023796400 主机在启动或接口UP后,发…...

微信小程序UI自动化测试实践 !

微信小程序UI自动化测试实践 引言: 随着微信小程序的快速发展,越来越多的企业和开发者开始开发小程序来满足用户的需求。而在开发小程序的过程中,UI自动化测试是一个必不可少的环节,可以帮助开发者减少人工测试的工作量&#xff…...

代码随想录-笔记-其七

我们来到了贪心算法的章节。 贪心算法和其他部分不太一样的是,他更多的是突出一种思路:通过求局部最优解来求全局最优解。因为只是一个大的思想逻辑,针对不同题型总是有不同的解决方案,所以贪心算法也不想其他算法那样有一个很经…...

react身份证回显

1. 处理身份证号的函数 function getAgeSexAndBirthdate(idCard: string): { sex: 男 | 女 | null; birthdate: Date | null } {if (idCard.length ! 18) {console.error(身份证号码必须是18位。);return { sex: null, birthdate: null };}// 提取出生年月日const year parse…...

Hibernate、JPA、Spring DATA JPA、Hibernate 代理和架构

大家好,今天,我们将讨论 Hibernate 和 JPA 架构。 在开始我们的文章之前,我想回答一个重要的问题:为什么我们需要使用 Hibernate、Eclipse Link、EF core 等 ORM 工具? 事实上,这是一个非常好的问题。我们…...

leetcode----mysql

1179. 重新格式化部门表 - 力扣(LeetCode) 表 Department: ------------------------ | Column Name | Type | ------------------------ | id | int | | revenue | int | | month | varchar | ----…...

盛元广通畜牧与水产品检验技术研究所LIMS系统

一、系统概述 盛元广通畜牧与水产品检验技术研究所LIMS系统集成了检测流程管理、样品管理、仪器设备管理、质量控制、数据记录与分析、合规性管理等功能于一体,能够帮助实验室实现全流程的数字化管理。在水产、畜牧产品的质检实验室中,LIMS系统通过引入…...

EXCEL文件解析

[Excel文件名].xlsx (解压后) │ ├── _rels │ └── .rels (定义关系文件) ├── docProps │ ├── app.xml (应用程序属性) │ └── core.xml (核心文档属性) ├── xl │ ├── _rels │ │ └── workbook.xml.rels (工作簿关系文件) │ ├── …...

【C++】- 掌握STL List类:带你探索双向链表的魅力

文章目录 前言:一.list的介绍及使用1. list的介绍2. list的使用2.1 list的构造2.2 list iterator的使用2.3 list capacity2.4 list element access2.5 list modifiers2.6 list的迭代器失效 二.list的模拟实现1. list的节点2. list的成员变量3.list迭代器相关问题3.1…...

开源 AI 智能名片 S2B2C 商城小程序中运营与产品的关系剖析

摘要:本文聚焦于开源 AI 智能名片 S2B2C 商城小程序,深入探讨其中运营与产品之间的关系。通过分析运营与产品的多种关系认知,阐述在该特定小程序情境下运营与产品相互依存、相互作用的机制,包括运营对产品的需求以及产品对运营的依…...

flask_socketio 以继承 Namespace方式实现一个网页聊天应用

点击进入上一篇,可作为参考 实验环境 python 用的是3.11.11 其他环境可以通过这种方式一键安装: pip install flask3.1.0 Flask-SocketIO5.4.1 gevent-websocket0.10.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple pip list 详情如下&am…...

DePIN潜力项目Spheron解读:激活闲置硬件,赋能Web3与AI

DePIN赛道作为今年加密资本关注的热点之一,不仅吸引了大量资金涌入,还凭借其灵活的资源调配、高效的运作方式和可靠的安全性能,逐渐渗透到多个领域和项目中。例如,Helium的无线网络协议、IoTeX的去中心化物联网、IO NET的去中心化…...

《Vue进阶教程》第十六课:深入完善响应式系统之单例模式

往期内容: 《Vue进阶教程》第五课:ref()函数详解(重点) 《Vue进阶教程》第六课:computed()函数详解(上) 《Vue进阶教程》第七课:computed()函数详解(下) 《Vue进阶教程》第八课:watch()函数的基本使用 《Vue进阶教…...

C++ —— const修饰指针

C —— const修饰指针 常量指针(实际开发中用的很多)指针常量(了解即可)常指针常量(了解即可) 常量指针(实际开发中用的很多) 语法:const 数据类型 *变量名; 不能通过解…...

【学习笔记】数据结构(八)

动态存储管理 文章目录 动态存储管理8.1 概述8.2 可利用空间表及分配方法8.3 边界标识法8.3.1 可利用空间表的结构8.3.2 分配算法8.3.3 回收算法 8.4 伙伴系统8.4.1 可利用空间表的结构8.4.2 分配算法8.4.3 回收算法 8.5 无用单元收集 - 垃圾回收机制8.6 存储紧缩 - 内存碎片化…...

maven-resources-production:ratel-fast: java.lang.IndexOutOfBoundsException

Maven生产环境中遇到java.lang.IndexOutOfBoundsException的问题,尝试了重启电脑、重启IDEA等常规方法无效,最终通过直接重建工程解决了问题。 Rebuild Project 再启动OK...

建投数据与腾讯云数据库TDSQL完成产品兼容性互认证

近日,经与腾讯云联合测试,建投数据自主研发的人力资源信息管理系统V3.0、招聘管理系统V3.0、绩效管理系统V2.0、培训管理系统V3.0通过腾讯云数据库TDSQL的技术认证,符合腾讯企业标准的要求,产品兼容性良好,性能卓越。 …...

后端-添加购物车和查看购物车

...

【HarmonyOS NEXT】Web 组件的基础用法以及 H5 侧与原生侧的双向数据通讯

关键词:鸿蒙、ArkTs、Web组件、通讯、数据 官方文档Web组件用法介绍:文档中心 Web 组件加载沙箱中页面可参考我的另一篇文章:【HarmonyOS NEXT】 如何将rawfile中文件复制到沙箱中_鸿蒙rawfile 复制到沙箱-CSDN博客 目录 如何在鸿蒙应用中加…...

7-2 排序

输入一批未排序的数据,数量不超过30个,请使用选择法或者冒泡法对其排序,并按照规定的要求输出。 输入格式: 先输入待排序的整形数的个数;然后输入所有的待排序的数据。 输出格式: 在一行中按照由大到小的顺序输出排序好的数据…...

Java通过反射破坏单例模式

有个第三方工具类,不支持多例模式。但是又不能直接改第三方工具类的代码,因此可以通过反射破坏第三方工具类的单例。 第三方工具类反编译如下 可以看到构造函数进行了私有化,不允许外部new,只能通过newInstance进行实例化。并且…...

FFmpeg第一话:FFmpeg 简介与环境搭建

FFmpeg 探索之旅 一、FFmpeg 简介与环境搭建 二、FFmpeg 解码详解 第一话:FFmpeg 简介与环境搭建 FFmpeg 探索之旅一、前言二、FFmpeg 是什么?三、简单介绍其历史背景四、为什么用 C学习 FFmpeg?(一)高性能优势&#…...

C++并发编程: std::atomic对指针进行操作

std::atomic 对指针进行运算的用途 std::atomic 提供了一种在多线程环境中安全地操作指针的方法。这对于实现线程安全的指针管理、动态内存分配、链表操作等场景非常有用。通过使用std::atomic对指针进行运算,可以确保指针操作的原子性和多线程安全性。 常见用途 …...

工业大数据分析算法实战-day08

文章目录 day08模型评价聚类算法基于距离的聚类基于层次的聚类基于密度的聚类基于分布的聚类聚类结果的评价 day08 今天是第8天,昨日阐述了概率图模型和集成学习的分类,主要讲解了有向图和无向图,生成式模型和判断式模型,以及集成…...

在 C# 中实现的目录基础操作

前言 在开发应用程序过程中,对操作系统上的文件夹存储文件和子文件夹操作是常见的需求。.NET中的Directory类提供了处理文件目录的功能。本文介绍如何读取文件夹的属性、获取文件夹的大小及文件个数、创建文件夹、遍历文件夹中的所有文件、移动文件夹和删除文件夹等…...

​Python 标识符是啥?​

Python 的标识符就是我们写代码时用来给变量、函数、类等取名字的东西。 你写的 my_variable 是个标识符, 定义的 add_numbers 函数名也是个标识符, 甚至你写的 Cat 类名,也是标识符。 一句话总结:标识符就是代码里给“东西”起…...

WEB开发: 全栈工程师起步 - Python Flask +SQLite的管理系统实现

一、前言 罗马不是一天建成的。 每个全栈工程师都是从HELLO WORLD 起步的。 之前我们分别用NODE.JS 、ASP.NET Core 这两个框架实现过基于WebServer的全栈工程师入门教程。 今天我们用更简单的来实现: Python。 我们将用Python来实现一个学生管理应用&#xff0…...

将 Matplotlib 图形转换为 PIL 图像并返回

将 Matplotlib 图形转换为 PIL 图像并返回 前言完整代码Matplotlib 中 fig 和 ax 的关系示例: 问题分析常见错误及解决方案总结 前言 Matplotlib 是 Python 里最流行的图表展示库,PIL (Python Imaging Library)则是一个强大的图像处理库。在开发过程中&…...

F5中获取客户端ip地址(client ip)

当F5设备对其原始设置上的所有IP地址使用NAT时,连接到poo成员(nodes、backend servers)的出站连接将是NAT IP地址。 pool 成员(nodes、backend servers)将无法看到真实的客户端 ip地址,因为看到的是F5上的…...

点焊机器人维修-ABB-KUKA-FANUC-YASKAWA

在正式启用点焊机器人之前,一项至关重要的预备步骤便是进行焊枪的全面设置操作。以FANUC机器人为例,其焊枪的设置流程涵盖了多个关键环节,如焊枪运动方向的精确规划、焊枪规格的选择以及零点标定的细致执行等。这些设置均须严格依据实际所采用…...

springboot448教学辅助系统(论文+源码)_kaic

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱,出错率高,信息安全性差&#x…...

网络地址转换(NAT)和端口映射

1. 网络地址转换(NAT) 1.1 NAT的应用场景 (1)应用场景:允许将私有IP地址映射到公网地址,以减缓IP地址空间的消耗 ①需要连接Internet,但主机没有公网IP地址 ②更换了一个新的ISP,需要重新组织网络时&…...

iClent3D for Cesium 实现无人机巡检飞行效果

作者:gaogy 1、背景 随着地理信息技术的发展,三维地球技术逐渐成为了许多领域中的核心工具,尤其是在城市规划、环境监测、航空航天以及军事领域。三维地图和场景的应用正在帮助人们更加直观地理解空间数据,提供更高效的决策支持。…...

后端- spring cache框架操作缓存数据(底层可以是redis,也可以是caffeine和ehcache)

...

低比特语言模型 是一种利用较少比特数进行语言建模的技术

Vanilla LLM: 基础的全精度语言模型,通常在较高比特数下运作 Vanilla LLM,或称为“基础的全精度语言模型”,是指使用标准的浮点数(通常是16位或32位)进行训练和推理的语言模型。这些模型依赖于经典的神经网络结构&…...

ES6中的map和set

Set ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set本身是一个构造函数,用来生成 Set 数据结构。 以下代码 const s new Set();[2, 3, 5, 4, 5, 2, 2].forEach(x > s.add(x));for (let i of s…...

【WRF安装】WRF编译错误总结1:HDF5库包安装

目录 1 HDF5库包安装有误:HDF5 not set in environment. Will configure WRF for use without.HDF5的重新编译 错误原因1:提示 overflow 错误1. 检查系统是否缺少依赖库或工具2. 检查和更新编译器版本3. 检查 ./configure 报错信息4. 检查系统环境变量5.…...

MyBatis常见面试题总结

#{} 和 ${} 的区别是什么? 注:这道题是面试官面试我同事的。 答: ${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于原样文本替换,可以替换任意内容,比如${driver}…...

Qt生成随机数的方法

后台接口要求传个流水单号,流水号的格式是:“设备序列号”“设备MAC地址”“20位的随机数”。 具体的是: “设备序列号”:就是烧录工具写入设备的序列编号,这就不多说了,读出来就行; “设备MAC地…...

深入探索Vue.js中的v-if指令:条件渲染的高级技巧

深入探索Vue.js中的v-if指令:条件渲染的高级技巧 引言 在现代Web开发中,根据条件动态地渲染或移除DOM元素是一个常见的需求。Vue.js提供了一种简洁而强大的方法来实现这一目标,即通过v-if指令来根据表达式的值来控制元素的渲染。本文将详细…...

【记录50】uniapp安装uview插件,样式引入失败分析及解决

SassError: Undefined variable: "$u-border-color". 表示样式变量$u-border-color没定义&#xff0c;实际是定义的 首先确保安装了scss/sass 其次&#xff0c;根目录下 app.vue中是否全局引入 <style lang"scss">import /uni_modules/uview-ui/in…...

NTLMv2 离线爆破

攻击者&#xff08;kali&#xff09;&#xff1a;192.168.72.162 受害者&#xff08;administrator&#xff09;&#xff1a;192.168.72.163 因为 NTLM 身份验证是通过计算正确的挑战值得出的&#xff0c;所以如果我们能获取域用户的 NTLM 认证某一服务的 Net-NTLM v2 Hash …...

LabVIEW实现RFID通信

目录 1、RFID通信原理 2、硬件环境部署 3、程序架构 4、前面板设计 5、程序框图设计 6、测试验证 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和常用模块实现物联网系…...

【Three.js基础学习】31.Lights Shading

前言 关于灯光如何在着色器中应用&#xff01; 下面将创建三个灯光 分别是点光源&#xff0c;环境光&#xff0c;方向光通过这几种光应用着色器显示对应阴影 学习灯光阴影&#xff0c;着色器的使用 添加三盏灯 点光&#xff0c;方向光&#xff0c;环境光 创建一个环境光 在现…...

Oracle Database 21c Express Edition数据库 和 Sqlplus客户端安装配置

目录 一. 前置条件二. Win10安装配置Oracle数据库2.1 数据库获取2.2 数据库安装2.3 数据库配置确认2.4 数据库访问 三. Win10配置Oracle数据库可对外访问3.1 打开文件和打印机共享3.2 开放1521端口 四. 端口与地址确认4.1 查看监听器的状态4.2 Win10查看1521端口是否被监听4.3 …...

IDEA搭建springboot demo

如下所示创建SpringBootTest18项目&#xff0c;我选的maven&#xff0c;创建完成项目后&#xff0c;maven会自动下载一些依赖库到maven的repository目录中。 创建的项目结构如下图所示 接下来在项目中加入Framework支持&#xff0c;右击项目&#xff0c;弹出的菜单如下图所示&a…...

SQLite Update 语句

SQLite Update 语句 SQLite 的 UPDATE 语句用于更新数据库表中的现有记录。使用 UPDATE 语句&#xff0c;您可以修改一个或多个列的值。本教程将详细介绍如何使用 SQLite UPDATE 语句&#xff0c;包括语法、示例以及一些最佳实践。 语法 SQLite UPDATE 语句的基本语法如下&a…...

node.js的简单示例

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;用于方便地构建快速、可扩展的网络应用。下面是一个简单的Node.js示例&#xff0c;它创建了一个简单的HTTP服务器&#xff0c;当访问服务器时&#xff0c;它会响应“Hello World” // 引入Node.js的HTTP模块…...

fpga系列 HDL:Quartus II 时序约束 静态时序分析 (STA) test.out.sdc的文件结构

test.out.sdc的文件结构 ## Generated SDC file "test.out.sdc"## Copyright (C) 1991-2013 Altera Corporation ## Your use of Altera Corporations design tools, logic functions ## and other software and tools, and its AMPP partner logic ## functions,…...

Restaurants WebAPI(一)—— clean architecture

文章目录 项目地址一、Restaurants.Domain 核心业务层1.1 Entities实体层1.2 Repositories 数据操作EF的接口二、Restaurants.Infrastructure 基础设施层2.1 Persistence 数据EF CORE配置2.2 Repositories 数据查询实现2.3 Extensions 服务注册三、Restaurants.Application用例…...