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

HCIP学习-IPv6

目录

前置学习内容

IPv6解决的一些IPv4的缺陷

无限的地址

层次化的地址结构

即插即用

简化报文头部

IPv4和IPv6报头比较

端到端的网络罗完整性

安全性增强

挣钱QoS特性

IPv6地址介绍

格式

首选格式

压缩格式

内嵌IPv4地址格式的IPv6地址格式

IPv6的网络前缀和接口标识

接口标识生成方法

手工配置

EUI-64自动生成

例子

系统设置随机IP

IPv6地址分类

任播地址

单播地址

GUA——全球单播地址

ULA——唯一本地地址

LLA——本地链路地址

作用

组播地址

被请求节点组播

特殊地址

ICMPV6

PMTUD

​编辑

解决问题

接口正式发送IPv6报文前,将经历的过程

地址配置

GUA地址的获取方法

手工配置

无状态自动配置(SLAAC --- NDP协议) 

路由器请求报文(RS)

路由器通告报文(RA)

有状态自动配置

DAD(冲突检测)和地址解析

邻居请求报文(NS)

邻居通告报文(NA)

请求报文ARP和NDP比较区别

应答报文

IPv6配置

静态配置

 IPv4到IPv6的一个过度技术

GRE隧道来实现IPV6网络的互通

IPv6网络不多情况

IPv6网络过多情况

当IPV6网络过多时,GRE面临的问题

6TO4隧道技术

例子

配置

双栈


前置学习内容

HCIA学习--TCP协议的一些简介,UDP协议、IP协议报头详解及TCP三次握手、四次挥手_两台主机中通信进程的端口号不能相同_板栗妖怪的博客-CSDN博客

IPv6和IPv4的工作过程其实差不多,只是IPv4的一个升级版本,就是为了解决IPv4地址不够的问题。

IPv6解决的一些IPv4的缺陷

无限的地址

ipv6由128位二进制构成,地址非常多

层次化的地址结构

IPv6在分配时更加合理,更便于进行汇总等操作

为了更好的汇总转发,IPv4在我国分配的就不是很好,然后汇总时不好汇总,转发效率高,这样网络就没有那么好。所以说我国现在很提倡IPv6。

即插即用

IPv4在进行地址分配时还需要一个DHCP服务器,但是IPv6只需要一个网关且网关存在IPv6地址就可以分配地址了,这个·IPv6这个不需要DHCP服务器就可以分配地址的技术叫做,SLAAC(无状态地址自动配置技术),这个技术相较于DHCP服务更加方便快捷

简化报文头部

简化报文头部不是报头长度小了,指的是里面的参数内容小了

IPv4和IPv6报头比较

(下图中左边是拓展头部,右边是IPv4和IPv6的报头比较)

首先来对比一下IPv4的ToS字段这个在IPv6中的字段是Traffic Class作用就是服务类型可以去将报文根据不同的服务类型分出不同的数据流,用来做策略

IPv6的Payload Length 字段是数据长度没有头部长度,那为啥IPv6没有首部长度(因为IPv6把选项字段删除了,这意味着IPv6头部长度不可变了,所以不需要头部长度了),这个改变是非常重要的一个改变,大大提升了转发速度,将IPv6头部长度改成定长查询时只查询这个长度的就可以,不像IPv4一样还得区分报头长度大大减少了查询时间。

IPv6的Next Header字段这个是在IPv4的Protocol字段,用于标识上层协议

IPv6的Hop Limit字段就是IPv4的TTL字段

IPv6的字段Flow Label这个字段就是用来标记不同流量,这个字段可以和Traffic Class字段一起使用,这样区分流量的字段就长了,这样流量可以区分的更仔细一些,IPv6在策略的控制上比IPv4上更强,但是该参数暂时保留并没有投入使用。

IPv6的校验和去掉了,这个去掉的原因是,在报头封装到三层以前其他的协议也会校验,若在三层报头再添加一个校验和这个校验的次数太多来了,所以可以有这个校验和但是没有必要。

IPv6中没有IPv4中第二行分片的字段,也没有可选字段,这样IPv6的设计是有问题的,去掉的那些字段可能会导致IPv6的功能有些不完整,上面说的去掉的字段只再IPv6的基本字段中删除,IPv6还设置了一些拓展头部,若是有需要就在基本报头后面添加相应的拓展头部,然后这个拓展头部是用Next Header来标识,在IPv4中是不管你需不需要这个字段他都会添加到报头中

端到端的网络罗完整性

你如果想要通过一台电脑去攻击互联网中另外一台电脑,它出去的时候需要经过地址转换最后是公网地址出去,然后如果被攻击的电脑想要找到攻击的这台电脑,就需要通过公网的IP去找到私网的IP,若边界路由器没有记录私网出去的行为,没有监管机制,这样就无法追踪(但是现在一般都有实名认证,一般都会找到),然后IPv6由于地址数量很多可以做到每台设备都有对应的IP地址,所以可以实现端到端的网络完整性。

安全性增强

IPv6为TCP/IP协议栈设计了一套安全保障传输体系(IPSEC:因特网协议安全协议),IPv4也可以使用(IPv4开始没有这个IPSEC是为了IPv6设计的)

挣钱QoS特性

头部新增了一个流标签字段Flow Label,更方便做QoS,但是该字段目前保留

IPv6地址介绍

(注:在IPV6中,接口支持多宿主,即一个接口可以配置多个不同网段的IPV6地址(就类似一个人有多个手机号,别人给那个手机号打电话都可以找到那个人),在IPv4中一些厂商的设备也是可以在一个接口配置多个IP地址,在华为设备上是不允许一个接口上配置同一个网段的多个IPv6地址)

注:上面这个特性与任播有关

格式

128位二进制

冒分十六进制(用冒号每四位分为一组)

首选格式

2001:0123:0000:4560:0000:0000:0000:001A(首选格式,不区分大小写)

压缩格式

由于首选格式还是有点长继续来简化一下

规则

每一段前导0可以省略,如果这一-段全是0, 则至少保留一个0,拖尾的0不能省略

来以上面的例子实现一下

首先前导0可以省略

那就成了2001:123:0000:4560:0000:0000:0000:1A

然后全零保留1个零

2001:123:0:4560:0:0:0:1A

规则

一个或多个连续的段位全0是可以用“::”标识,但是一个IPv6地址中只能出现一处“::”以

以上面化简过的来举个例子

2001:123:0:4560::1A

(经过规则简写过后的IP地址被称位压缩地址)

内嵌IPv4地址格式的IPv6地址格式

前96位地址是IPv6地址,后32位是IPv4地址

例子

::192.168.1.1

IPv6的网络前缀和接口标识

IPV6中也存在网络位和主机位。只不过,在IPV6中将网络位称为网络前缀,将主机位称为接口标识。

在IPV6地址中, 也需要用子网掩码来标识网络前缀的长度,但是,只有简写格式

例子
2001::1 /64

接口标识生成方法

手工配置

自己手工填写一个不会冲突的地址即可

EUI-64自动生成

首先IPv6地址默认64位,接口标识就剩64位

然后要利用MAC地址来标识IP地址,但是MAC只有48位2进制不足64位二进制,这是就要在48位的MAC地址中间(24位的位置),增加FFFE,添加16位,形成一个64位的二进制,在这个64位的二进制中,找到第7位取反。

例子

首先网络前缀2001::,MAC地址是00e0:fcFF:FEf6:1fc0

然后要借助MAC地址来搞首先在MAC地址中间添加FFFE,添加后中间变红的就是新添加的 00e0:fcFF:FEFF:FEf6:1fc0

然后在这个64位二进制中找到第7位取反,下面就是部分展开的二进制,找到第7位取反

0000 0000  e0:fcFF:FEFF:FEf6:1fc0

0000 0010  e0:fcFF:FEFF:FEf6:1fc0

最后的IPv6地址就是2001::02e0:fcFF:FEFF:FEf6:1fc0

系统设置随机IP

不同的系统中不同方式设置IP

IPv6地址分类

IPV6地址主要分为了三类:单播地址,组播地址,任播地址

任播地址

标识的是一组网络接口,发送一个目标IPV6地址为任播地址的数据包,其效果是发送到该组所有成员接口中距离本地最近的一 个接口。

单播地址

GUA——全球单播地址

 单播地址相当于IPV4中的公网IP地址,可以在全球范围内使用的单播地址。
目前使用的GUA地址范围为:
2000:: /3 ---这个地址段分配GUA地址
下面是展开后的范围(这个范围就已经比IPv4大了)
2000:0000:0000:0000:0000:0000:0000:0000--- 3FFF:FFFF:FFF:FFFF:FFFF:FFFF:FFFF:FFFF
目前商用的IPV6地址段: 2001:: /16
                                       2002:: /16 ----用于6to4隧道技术

ULA——唯一本地地址

相当于IPV4中的私网地址,但是,因为IPV6中不用NAT技术,所以,这一部分私网地址只是用于私网内实验使用,不允许出现在IPV6公网路由中。
范围

 FC00::/7

目前仅使用了FD00::/8

                      FC00::/8目前保留,后面拓展使用

LLA——本地链路地址

IPv4中也存在本地链路地址——169.254.0.0/16

在IPV6中,因为接口是支持多宿主的,所以,每一个接口,只要激活了IPV6,就会给自己配-一个LLA地址。

这个地址和IPv4一样也有固定格式FE80::/10,但是本地链路地址有个规定从第10位开始到64位固定是0,所以可以看作FE80::/64

接口标识将按照EUI-64的方法自动生成

作用

IPv6地址在同一接口可能配置了好多地址,所以动态路由协议,选择下一跳IP是,出于稳定性考虑,会优先选择LLA地址作为下一跳地址

组播地址

其目的是为了标识某个组播组,发送一个 目标IP地址为组播地址的数据包,则该报文将被发送至整个组播组中的所有成员。

IPV4中的本地链路组播:
RIPV2---224.0.0.9
OSPF---224.0.0.5,224.0.0.6
224.0.0.1---针对的是所有节点,配置了IP的节点
224.0.0.2---针对所有路由器

IPv6组播地址与IPv4的组播地址对应关系

224.0.0.1 --- FF02::1
224.0.0.2 --- FF02::2
224.0.0.9 --- FF02::9
224.0.0.5 --- FF02::5
224.0.0.6 --- FF02::6

组播地址会有一个对应的IPv6组播MAC地址,这个地址前16位是固定的(33:33)然后的剩下的32位就是对应的IPv6组播地址的后32位

224.0.0.1 --- FF02::1---33:33:00:00:00:01
224.0.0.2 --- FF02::2---33:33:00:00:00:02
224.0.0.9 --- FF02::9---33:33:00:00:00:09
224.0.0.5 --- FF02::5---33:33:00:00:00:05
224.0.0.6 --- FF02::6---33:33:00:00:00:06

被请求节点组播

当一个节点,貝备单播地址之后,将自动生成一个被请求节点组播地址。生成后,被请求节点就会加入到对应组播组中。实际工程中很难将不同的两个IP分到同一个对应组播组中(IPv6很长,然后后实际工程中一般是网络前缀用到120位然后只剩8位,这种情况想IPv6的后24位地址相同是很难的)
FF02::1:FF(前104位固定)
后24位为单播地址的后24位

例子
单播地址:2001:1
被请求 节点组播地址:FF02::1:FF00:1

特殊地址

1、::,128位全0地址,等同于IPv4中的0.0.0.0(可以代表没有地址,也可以代表所有地址写缺省的时候)

2、::1,前127位全0,相当于IPv4中的环回地址127.0.0.1

ICMPV6

互联网控制报文协议,这个协议在IPv6中很重要

IPv6没有ARP协议,取而代之的是NDP协议(邻居发现协议),NDP协议集成在ICMPV6协议中,相当于ICMV6协议的一个子协议,上面说那个即插即用是有一个SLAAC,这个基于NDP这个协议来实现,ICMPV6协议还具有path-MTU发现机制(PMTUD),因为ICMPV6集成很多功能,所以,不同功能的数据报会通过ICMPV6数据报中的type字段进行区分

PMTUD

这个东西可以用来解决IPv4中遗留的一个问题,下面来搭建一个场景来描述这个问题

首先现在有一个信息想要经过R1然后去往4.0网段然后R1和R2之商议的MTU值是1500(一段链路中的两个接口MTU值相同数据才可以转发)然后R2和R3之间不同R3和R4之间又是另外一个,这样就会在去往下一个链路的时候会分片,这个样就会浪费了很多资源,降低了效率,这个问题在IPv4中一直没有解决,然后IPv6中出现了PMTUD这个问题的得到了解决

解决问题

当IPv6得路由条目搭建好了,就以上面得图为例子,就假设是4.0网段然后写入了路由表中,路由表中生成了一条到达4.0网段得信息,生成这个信息后,R1会自动发送一个检测包,这个检测包是ICMPV6的一个功能,然后这个包检测到来了R1于R2相连的接口的MTU是1500,然后到了R2,这个数据包发现R2与R3的相连的接口MTU是1400,这个时候R2并不会帮你转发这个数据包,反而R2会回一个ICMPV6的数据包给R1这个数据包里就回携带一个MTU值是1400,这个意思就是告诉R1你要想过去就把MTU值改成1400否则我要分片,然后R1再发探测包,然后遇到R3,然后R3回ICMPV6数据包,再改发送MTU值,直至最终到达4.0网段

总结:就是通过ICMPV6这个数据包的一些功能找到去往某一网段的一个最小MTU值

接口正式发送IPv6报文前,将经历的过程

地址配置

GUA地址的获取方法

手工配置

无状态自动配置(SLAAC --- NDP协议) 

无状态自动配置---无需DHCP服务器,只要有网关,便可以让接入IPV6网络中的设备获得IPV6地
址,即插即用,无状态意思就是网关啥都不管,只下发一个网段,不管你配了一个啥地址,配了IP的主机到底在不在线,网关全不管。这个SLAAC需要利用ICMPV6中的两种报文

路由器请求报文(RS)

主机主动发送RS请求

路由器通告报文(RA)

网关回复RA报文,报文中包含网关的网络前缀,后面的接口标识需要设备自动生成。type类型135

还存在另一种形式,网关设备会周期性的主动发送RA报文,携带自己的网络前缀。(华为设备默认关闭自动发送功能。)

因为无状态地址配置无法下发DNS等其他参数信息,所以,一般多应用于物联网等终端较多,且不需要除地址外其他参数的场景。(比如说那些只能家具之类的东西)

有状态自动配置

就是用DHCP服务区进行自动配置

DAD(冲突检测)和地址解析

DAD和地址解析就是IPV4中ARP协议完成的任务,在IPV6中都由NDP协议来完成。
在NDP完成地址解析时需要使用两种报文

邻居请求报文(NS)

相当于ARP请求报文, type = 135

邻居通告报文(NA)

相当于ARP应答报文, type =136

请求报文ARP和NDP比较区别

在ARP中--- SIP:自己IP DIP: 请求的IP
在NDP中--- SIP:自己的IP DIP: 请求IP所对应的被请求节点组播地址。
在ARP中--- SM:自己MAC DM:全F
在NDP中--- SM:自己MAC DM: 被请求组播地址对应的组播MAC地址

总结:对于NDP来说,由于IPv6中组播组的地址很难在一个组播组中,这个样子就和单播有点像了

应答报文

在ARP和NDP均使用单播回复

IPv6配置

以下图作为例子来进行配置

R1和R2之间配置12::/64网段 R2和R3之间配置23::/64网段

R1上环回1::1 /64 R2上环回2::2/64 R3上环回3::3/64

静态配置

和IPv4相差不大,同理也可以汇总

[r1]ipv6 --- 让这台设备可以转发IPV6报文
[r1-GigabitEthernet0/0/0]ipv6 enable --- 让接口允许配置IPV6地
[r1-GigabitEthernet0/0/0]ipv6 address 12::1 64 ---- 配置IPV6地
[r1]ipv6 route-static 2:: 64 12::2 ---- 静态路由
[r1]ping ipv6 3::3
[r1]ipv6 route-static :: 0 12::2 --- 缺省路由

RIPNG配置 

1,启动进程
[r1]ripng 1
[r1-ripng-1]
2,宣告
[r1-GigabitEthernet0/0/0]ripng 1 enable
OSPFV3 (这个协议不弹日志的)
1,启动进程
[r1]ospfv3 1
[r1-ospfv3-1]router-id 1.1.1.1 这里rid用啥都可以只要可以区分开来就行
2,宣告
[r1-GigabitEthernet0/0/0]ospfv3 1 area 0 将接口宣告到不同的区域中
MP-BGP
这个和IPv4相差不大
[r1]bgp 1
[r1-bgp]router-id 1.1.1.1
[r1-bgp]peer 2::2 as 1
[r1-bgp]peer 2::2 connect-interface l0 红色的这部分只是在BGPv4中建立了还需要再MP-BGP中建立,就是下面的操作,然后剩下的和BGP里面配置的和邻居相关的都在 [r1-bgp-af-ipv6] 这个里面配置
[r1-bgp]ipv6-family
[r1-bgp-af-ipv6]peer 2::2 enable
[r1-bgp-af-ipv6]network 1:: 64
[r1-bgp-af-ipv6]

 IPv4到IPv6的一个过度技术

现如今整个大的网络还是IPv4网络,要想全面换成IPv6的网络还需要一些时间,然后现在已经有一些零星的IPv6网络,这些IPv6网络之间的通讯,就可以直接搞一个GRE隧道

GRE隧道来实现IPV6网络的互通

IPv6网络不多情况

配置就是和IPv4中配置相差不大,不过是把配置中IPv4的地址缓冲IPv6的罢了
(这个在IPv6中ICMPV6对应的协议号是58)

IPv6网络过多情况

当IPV6网络过多时,GRE面临的问题

1,需要知道对端的IP地址
2,添加到达对端的路由
IPv6的网络到处都是还很分散这样想满足上面两条内容不是很容易,这是就出现了一个技术 6TO4隧道技术

6TO4隧道技术

在IPV6地址中,还存在一种地址 ---- IPV4兼容地址,我们现在的情况时如果你拥有一个合法的IPV4地址,则将拥有一段IPV6地址,这些地址就是IPV4兼容地址。我们拉宽带然后现在走的是IPv4网络,那这样就会需要一个IPv4公网地址,然后若我们把这个IPv4的公网地址买来以后,我们就会自动生成一段IPv6地址,这个IPv6地址是根据你的公网地址转换过来的
例子
12.0.0.1
先转换位2进制
00001100 00000000 00000000 00000001 ---
在转化位16进制
0C00:0001
然后加上前缀
2002:0C00:1:: /48 ---- 这一段的IPV6地址就是IPV4兼容地址, 这一段IPv6地址都可配置使用

配置

[r1-Tunnel0/0/1]ipv6 address 2002:0c00:1:1::1 64
[r1-Tunnel0/0/1]tunnel-protocol ipv6-ipv4 6to4
[r1-Tunnel0/0/1]source 12.0.0.1

双栈

就是将服务器或者设备多配置一个IPv6的地址,然后运营商提供两种链路选择,一个走IPv6的线路,一个走IPv4的线路,然后我们呢会逐渐倾向于从IPv6访问,然后IPv4会逐渐关闭,就是逐渐的蚕食。

相关文章:

HCIP学习-IPv6

目录 前置学习内容 IPv6解决的一些IPv4的缺陷 无限的地址 层次化的地址结构 即插即用 简化报文头部 IPv4和IPv6报头比较 端到端的网络罗完整性 安全性增强 挣钱QoS特性 IPv6地址介绍 格式 首选格式 压缩格式 内嵌IPv4地址格式的IPv6地址格式 IPv6的网络前缀和接…...

golang高精度十进制数扩展包decimal用法

在Go语言中,没有内置的十进制数(decimal)类型或相关的标准库。然而,有一些第三方包可用于处理十进制数,其中比较常用的是decimal包。 decimal包提供了一个big.Float的子类型decimal.Decimal,可以用于表示和…...

STM32F4X RNG随机数发生器

STM32F4X RNG随机数发生器 随机数的作用STM32F4X 随机数发生器RNG控制寄存器RNG状态寄存器RNG数据寄存器RNG数据步骤RNG例程 随机数的作用 随机数顾名思义就是随机产生的数字,这种数字最大的特点就是其不确定性,你不知道它下一次产生的数字是什么。随机…...

5、QT中SQLite数据库的操作

一、QT中的SQLite数据库 1、添加头文件和模块 Header: #include <QSqlDatabase> qmake: QT sql//pro文件添加sql模块执行数据库操作的类&#xff1a; Header: #include <QSqlQuery> qmake: QT sql2、C语言中的SQLite增删减查 SQLite3的基础教程 3、SQLite的…...

git回退到某个提交

git是一个分布式版本控制软件&#xff0c;分布式版本库的做法使源代码的发布和交流都极为方便&#xff0c;因此有不少用户都在使用git。最近小编也正在学习git这款软件&#xff0c;发现要想熟练运用git&#xff0c;学会git中的一些命令是很重要的&#xff0c;如果我们要回滚到某…...

对可再生能源和微电网集成研究的新控制技术和保护算法进行基线和测试及静态、时域和频率分析研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Full authentication is required to access this resource解决办法

我们在使用postman调接口时候&#xff0c;有的时候需要权限才可以访问&#xff0c;否则可能会报下面这个错误 {"success": false,"message": "Full authentication is required to access this resource","code": 401,"result&q…...

Jetty:使用上下文文件部署离线瓦片.md

说明 介绍利用jetty在任意位置如桌面的资源进行发布。比如下载的离线瓦片数据&#xff0c;如果放到jetty的webapps目录下&#xff0c;则启动时间会比较久&#xff0c;可以通过本文的步骤进行配置&#xff0c;也免去了拷贝过程的耗时。 关键字&#xff1a;自定义路径、Jetty、…...

Docker实战:docker compose 搭建Rocketmq

1、配置文件准备 1.1、 新建目录&#xff1a;/home/docker/data/rocketmq/conf mkdir /home/docker/data/rocketmq/conf1.2、 在上面目录下新建文件broker.conf文件&#xff0c;内容如下 brokerClusterName DefaultCluster brokerName broker-a brokerId 0 deleteWhen 0…...

STL常用容器 (C++核心基础教程之STL容器详解)String的API

在C的标准模板库&#xff08;STL&#xff09;中&#xff0c;有多种容器可供使用。以下是一些常见的容器类型&#xff1a; 序列容器&#xff08;Sequential Containers&#xff09;&#xff1a; std::vector&#xff1a;动态数组&#xff0c;支持快速随机访问。 std::list&…...

《人生苦短,我学Python》——条件判断->(if-elif-else)多向选择 条件嵌套

今天&#xff0c;我们来学习多向选择&#xff01;if--elif--else if 后的语句是当 if 判断条件成立时&#xff0c;执行的操作。elif 后的语句是当 if 判断不成立时&#xff0c;再判断一次&#xff0c;如果成立&#xff0c;执行的操作。else 后的语句是当以上所有判断条件都不成…...

MongoDB 数据库性能优化技巧

原文&#xff1a;MongoDB 数据库性能优化技巧 (techdatafuture.com) MongoDB 是一款灵活且可扩展的NoSQL数据库&#xff0c;为了提高其性能&#xff0c;我们可以采取一些优化技巧。本文将介绍一些MongoDB性能优化的关键点&#xff0c;包括索引的使用、查询优化、数据模型设计和…...

网络安全人才缺口超百万,如今的就业情况怎样?

网络安全人才缺口超百万&#xff0c;如今的就业情况怎样&#xff1f; 2022年9月7日&#xff0c;国家网络安全宣传周准时开始。本次网络安全宣传周和以前一样&#xff0c;主要目的都是为了普及网络安全知识&#xff0c;提高网络安全的防护技能&#xff0c;提升对电信网络诈骗的…...

「MySQL」MySQL面试题全解析:常见问题与高级技巧详解

MySQL面试题全解析&#xff1a;常见问题与高级技巧详解 1. 什么是数据库&#xff1f;2. 什么是MySQL&#xff1f;3. 什么是SQL&#xff1f;4. 什么是主键&#xff1f;5. 什么是外键&#xff1f;6. 请解释索引是什么以及为什么使用索引&#xff1f;7. 什么是事务&#xff1f;8. …...

【USRP】产品型号、参数、架构全解析系列 6:N320 / N321

一、USRP 简介 通用软件无线电外设( USRP ) 是由 Ettus Research 及其母公司National Instruments设计和销售的一系列软件定义无线电。USRP 产品系列由Matt Ettus领导的团队开发&#xff0c;被研究实验室、大学和业余爱好者广泛使用。 大多数 USRP 通过以太网线连接到主机&am…...

Apifox 常用 JS 脚本

前置脚本常用 1、时间戳生成&#xff08;秒级&#xff09;&#xff1a; // 1、生成秒级时间戳到全局变量中 //let timestamp parseInt(new Date().getTime() / 1000) //pm.globals.set(timestamp, timestamp) // 2、生成秒级时间戳到全局变量中 pm.globals.set(timestamp, p…...

防止SQL注入的四种方案

一、什么是SQL注入&#xff1f; SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严&#xff0c;攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句&#xff0c;在管理员不知情的情况下实现非法操作&#xff0c;以此来实现欺骗数据库服…...

java单元测试

版本区别 特性Junit 4Junit 5在当前类的所有测试方法之前执行。注解在静态方法上。此方法可以包含一些初始化代码。BeforeClassBeforeAll在当前类中的所有测试方法之后执行。注解在静态方法上。此方法可以包含一些清理代码。AfterClassAfterAll在每个测试方法之前执行。注解在…...

【LeetCode】双指针求解和为s的两个数字

Problem: 剑指 Offer 57. 和为s的两个数字 文章目录 题目解析算法思路分析复杂度Code 题目解析 首先来讲解一下本题的思路 我们看到本题的意思很简单&#xff0c;就是去这个nums这个数组中进行寻找&#xff0c;如果找到了两个数相加之和为target的话&#xff0c;那构成一个结果…...

opencv识别一张图片的多个红框,并截取红框的内容

需求 需要获取图片的红框的内容&#xff0c;实体的图片我就不放了 获取红框 先截取获得图片的多个轮廓 import cv2 import numpy as np # 加载图像并转换为灰度图像 image cv2.imread(image6.jpg) gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 应用高斯模糊以减…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...