数据通信网络之IPv6静态路由

news2024/11/28 20:37:13

文章及资源归档至公众号【AIShareLab】,回复 通信系统与网络 可获取。

文章目录

  • 一、目的
  • 二、拓扑
  • 三、需求
  • 四、步骤

一、目的

  1. 掌握路由器的 IPv6 基础配置。
  2. 掌握静态 IPv6 路由的基础配置。
  3. 理解 IPv6 数据报文的路由过程。

二、拓扑

如图 1 所示,三台路由器 R1、R2 和 R3 分别通过相应物理接口进行连接,其中,R1 及
R3 各自下联一个网段,简单起见,此处只体现了这些网段中的两台计算机 PC1 和 PC2,PC1与 PC2 分别使用 R1 及 R3 作为自己的默认网关。其中,路由器 R1、R2 和 R3 推荐使用AR2220 及以上设备。

在这里插入图片描述

图1 IPv6 静态路由基础实验拓扑图

三、需求

  1. 在 R1、R2 及 R3 上完成配置,使得这三台路由器之间能够相互通信。
  2. 在 R1、R2 及 R3 上完成配置,使得 PC1 与 PC2 所在网段能够相互通信。

四、步骤

(1)完成 R1、R2 及 R3 的基础配置
在 R1 上完成如下配置, 配置结果如图2所示:

<Huawei> system-view
[Huawei] sysname R1 
[R1] ipv6 
[R1] interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0] ipv6 enable 
[R1-GigabitEthernet0/0/0] ipv6 address fc00:12::1 64
[R1-GigabitEthernet0/0/0] quit 

在这里插入图片描述

图2 R1的IPv6基础配置
②在 R2 上完成如下配置,配置结果如图3所示:

<Huawei> system-view
[Huawei] sysname R2
[R2] ipv6 
[R2] interface GigabitEthernet 0/0/0
[R2-GigabitEthernet0/0/0] ipv6 enable 
[R2-GigabitEthernet0/0/0] ipv6 address fc00:12::2 64
[R2-GigabitEthernet0/0/0] quit 
[R2] interface GigabitEthernet 0/0/0
[R2-GigabitEthernet0/0/1] ipv6 enable 
[R2-GigabitEthernet0/0/1] ipv6 address fc00:23::2 64
[R2-GigabitEthernet0/0/1] quit 

在这里插入图片描述

图3 R2的IPv6基础配置

③在 R3 上完成如下配置, 配置结果如图4所示:

<Huawei> system-view
[Huawei] sysname R3
[R3] ipv6 
[R3] interface GigabitEthernet 0/0/0
[R3-GigabitEthernet0/0/0] ipv6 enable 
[R3-GigabitEthernet0/0/0] ipv6 address fc00:23::3 64
[R3-GigabitEthernet0/0/0] quit 

在这里插入图片描述
图4 R2的IPv6基础配置

(2)在 R1、R2 及 R3 上完成配置,使得这三台路由器之间能够相互通信

阶段性验证:
⑴ 在 R1 上 ping R2 GE0/0/0,具体命令格式为 ping ipv6 相应接口的 IPv6 地址,验证 R1 是否可与 R2 成功通信。
在这里插入图片描述

图5 R1 与 R2 成功通信
由图5可知,验证可知 R1 与 R2 成功通信。
⑵ 在 R2 上 ping R3 GE0/0/0,具体命令格式为 ping ipv6 相应接口的 IPv6 地址,验证 R2 是 否可与 R3 成功通信。

在这里插入图片描述

图6 R2 与 R3 成功通信
由图6可知,验证可知 R2 与 R3 成功通信。
⑶ 在 R1 上 ping R3 GE0/0/0,具体命令格式为 ping ipv6 相应接口的 IPv6 地址,验证 R1 是 否可与 R3 成功通信。

在这里插入图片描述

图7 R1 与 R3 无法通信
由图7可知,验证可知 R1 与 R3 无法通信。
⑷ 在 R1 系统视图下执行 display ipv6 routing-table 命令,查看当前的路由表并展示相应结 果,验证 R1 的路由表中目前是否包含到达 R3 GE0/0/0 接口的静态路由。

在这里插入图片描述

图8 R1路由表
由图8可验证 R1 的路由表中目前没有包含到达 R3 GE0/0/0 接口的静态路由.

备注:由阶段性验证结果可以发现,在上述配置完成后,R1 与R2、R2 与R3 能够相互通信。以R1 与R2 为例,设备之间存在直连的链路,对于R1 而言,当我们在设备上配置GE0/0/0接口的IPv6 地址后,设备会自动在其路由表中生成到达该接口所在网段的直连路由,因此它可以直接通过直连路由到达R2,无需人工干预路由信息。相反地,此时R1 无法与R3 相互访问,之所以出现这种现象,是因为R1 的路由表中并没有到达R3 GE0/0/0 接口(IPv6 地址为FC00:23::3)的路由信息。

① 为R1 配置到达FC00:23::/64 的路由:
[R1] ipv6 route-static FC00:23:: 64 FC00:12::2
备注:在华为路由器上ipv6 route-static 命令用来配置IPv6 静态路由,常用命令格式为ipv6 route-static dest-ipv6-address prefix-length nexthop-ipv6-address,其中,参数dest-ipv6-address 用来指定目的IPv6 地址,参数prefix-length 用来指定IPv6 前缀的长度,参数nexthop-ipv6-address 用来指定设备的下一跳IPv6 地址。

阶段性验证:
⑴ 在R1 系统视图下执行display ipv6 routing-table 命令,查看当前的路由表并展示相应结果,验证R1 的路由表中目前是否包含到达R3 GE0/0/0 接口的静态路由。

在这里插入图片描述

图9 R1路由表
由图9可验证 R1 的路由表中有包含到达 R3 GE0/0/0 接口的静态路由, 已成功添加到达FC00:23::/64 的路由.

⑵ 在R1 上ping R3 GE0/0/0,具体命令格式为ping ipv6 相应接口的IPv6 地址,验证R1 是
否可与R3 成功通信。

在这里插入图片描述

图10 R1无法与R3通信
由图10可验证 验证R1 还是不可与R3 通信。
备注:由阶段性验证结果可以发现,R1 的路由表中已成功添加到达FC00:23::/64 的路由,
但是,R1 依然无法ping 通R3。这是因为一个应用程序触发的数据交互过程往往是双向的,
此时R1 发往R3 的请求报文能够到达下一跳R2,而R2 又能根据直连路由将报文转发给
R3,但是R3 此时并无到达R1 GE0/0/0 接口(IPv6 地址为FC00:12::1)的路由信息,因此
R1 ping R3 的应答报文无法到达R1。

②在R3 上添加路由:
[R3] ipv6 route-static FC00:12:: 64 FC00:23::2

阶段性验证:
在R1 上ping R3 GE0/0/0,具体命令格式为ping ipv6 相应接口的IPv6 地址,验证R1 可与
R3 成功通信。

在这里插入图片描述

图11 R1与R3成功通信
由图11可验证R1与R3成功通信。

(3)在R1、R2、R3、PC1 及PC2 上完成配置,使得PC1 与PC2 所在网段能够相互通信
接下来,我们在R1 和R3 下面分别新增一个网段,用于连接用户终端设备,并使得这
些用户终端设备能够相互通信。

① R1 新增如下配置:

[R1] interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1] ipv6 enable
[R1-GigabitEthernet0/0/1] ipv6 address FC00:1::FFFF 64
[R1-GigabitEthernet0/0/1] quit

在这里插入图片描述

图12 R1新增配置

② R3 新增如下配置:

[R3] interface GigabitEthernet 0/0/1
[R3-GigabitEthernet0/0/1] ipv6 enable
[R3-GigabitEthernet0/0/1] ipv6 address FC00:2::FFFF 64
[R3-GigabitEthernet0/0/1] quit

在这里插入图片描述

图13 R3新增配置
③ 静态配置PC1 的IPv6 地址、前缀长度及网关信息,具体的参数如图14 所示。
在这里插入图片描述

图13 PC1 的IPv6 静态地址配置

④ 静态配置PC2 的IPv6 地址、前缀长度及网关信息,具体的参数如图14所示。

在这里插入图片描述

图14 PC2 的IPv6 静态地址配置
⑤ 在PC1 的Ethernet0/0/1 接口上单击鼠标右键,开始抓包,以试图捕获PC1 的Ethernet0/0/1 接口上的入向与出向数据包。

阶段性验证:
⑴在PC1 上ping PC2,具体命令格式为ping PC2 的IPv6 地址 -6(注意:通过ping 命令
测试与IPv6 目的地址联通性时,计算机和网络设备上的命令格式略有不同,此处参数“-6”
表示强制使用IPv6),验证PC1 是否可与PC2 成功通信。

在这里插入图片描述

图15 PC2与PC1无法正常通信
(2) 在Wireshark 界面中,查看前面开启抓包后所捕获的信息,验证当前PC1 发出ICMPv6
Echo Request 报文后能否收到对应的ICMPv6 Echo Reply 报文,与测试结果是否吻合?

在这里插入图片描述

图16 PC2与PC1无法正常通信
由图16可知, 当前PC1 发出ICMPv6Echo Request 报文后无法收到对应的ICMPv6 Echo Reply 报文.
备注:由阶段性验证结果可以发现,当PC1 Ping PC2 时,PC1 发出的ICMPv6 Echo Request
报文的源IPv6 地址是PC1 的地址FC00:1::1,目的地址则是PC2 的地址FC00:2::1,该报文
从PC1 发给了它的默认网关FC00:1::FFFF,也就是R1,然而R1 并没有到达目的网段的路
由,因此该报文被丢弃。

⑥ 为了让PC1 与PC2 能够相互通信,需要满足下列条件:
让R1 知道如何到达FC00:2::/64 网段;
让R2 知道如何到达FC00:1::/64 和FC00:2::/64 网段;
让R3 知道如何到达FC00:1::/64 网段。
因此,在R1 上新增如下配置:
[R1] ipv6 route-static FC00:2:: 64 FC00:12::2
在R2 上新增如下配置:
[R2] ipv6 route-static FC00:1:: 64 FC00:12::1
[R2] ipv6 route-static FC00:2:: 64 FC00:23::3

在R3 上新增如下配置:
[R3] ipv6 route-static FC00:1:: 64 FC00:23::2

(4)联通性测试
在PC1 上ping PC2,具体命令格式为ping PC2 的IPv6 地址 -6,验证PC1 是否可与PC2
成功通信。

在这里插入图片描述

图17 PC2与PC1成功通信
(5)抓包分析
①启动抓包。本实验中,可保持之前在PC1 的Ethernet0/0/1 接口上持续抓包,期间各种阶
段性测试命令及设备间状态更新均会触发多个数据包的产生和交互。另外,也可在前期阶段
性抓包分析后停止抓包,此处重新启动抓包。
②运行命令。
在PC1 上依次执行以下命令:ping fc00:2::1 -6;tracert fc00:2::1 -6,分别完成与PC2
的联通性测试,以及完成跟踪到PC2 的路由信息。

在这里插入图片描述

图18 PC1 依次执行命令

在这里插入图片描述

图19 PC1 捕获结果

备注:值得注意的,用来探测一个数据包从源点到目的地所经过的中间路由器的方式通常有 3 种方式,分别为:基于记录路由选项的路由探测、基于UDP 协议的路由探测和基于ICMP Echo Request 的路由探测。其中,基于记录路由选项的路由探测方式体现在借助命令“ping -r 目的节点地址”显示中间路由的过程中,基于UDP 协议和基于ICMP Echo Request 的路由探测方式体现在借助命令“Tracert”显示数据包到达目的主机所经过的路径的过程中。

如图5 所示,由PC 发起Tracert 命令为例,Tracert 的实现原理及过程如下(注意,图20 中采用基于IPv4 的网络拓扑,基于IPv6 网络中原理与此相似,ICMP 协议相应的变更为ICMPv6):

⑴PC 在发起Tracert 命令时,以本地IP 地址为源,以路由器地址为目的地址,封装ICMPEcho Request 报文。首先发出的ICMP 报文TTL=1,交换机收到以后,将TTL 减1。此时,TTL=0,交换机丢弃报文,并回送一个Time Exceeded 报文,源地址为交换机的地址。PC 收到报文以后,就知道了自己的下一跳地址。
⑵PC 再次发出Echo Request 报文,TTL=2。交换机收到以后,将TTL 减1,并转发给防火墙。防火墙再减1,TTL=0。防火墙丢弃报文,并回送一个Time Exceeded 报文,源地址为防火墙的地址,载荷为PC 发出的Echo Request 报文。PC 收到报文以后,就知道了第二跳的地址。
⑶PC 重复这个过程,直到Echo Request 报文到达真正的目的地址。此时,路由器回送EchoReply 报文给PC。

综上,Tracert 使用三种ICMP 报文:Echo Reply、Echo Request 和Time Exceeded。

需要说明的是,以上工作过程仅适用于Windows 系统下的Tracert。UNIX-like 操作系统中对应的工具是Traceroute。Traceroute 默认使用UDP 报文探测目的地址(具体的原理和示例请参考第二单元软件实验讲义抓包分析部分),并且故意选择33434~33534 之间的目的端口(通常首次探测使用33434,第二次使用33435,以此类推)。因为这些端口并不存在,目标主机收到报文以后会回送一个端口不可达的报文(Port Unreachable)。很多网络设备的处理方式与UNIX-like 操作系统类似,例如华为防火墙、交换机产品,即以UDP 报文发起探测。一些UNIX-like 操作系统的Traceroute 命令也提供了参数选项,可以使用ICMP Echo Request或者其他协议报文发起探测。

在这里插入图片描述

图20 基于ICMP Echo request 的Tracert 工作原理示例
③分析报文。
Ⅰ 分析ping 报文
在Wireshark 界面中,查看PC1 ping PC2 时(即执行相应的命令ping fc00:2::1 -6)所捕获的多对ICMPv6 Echo Request 和Echo Reply 报文,表明当前PC1 与PC2 已经联通。
回答下列问题:
a.此处分别出现多少个ICMPv6 Echo Request 和Echo Reply 报文?与测试命令显示的结果是否一致?
答:如图21所示, 此处分别出现5个ICMPv6 Echo Request 和Echo Reply 报文, 与测试命令显示的结果一致.

在这里插入图片描述

图21 PC1报文捕获结果

b.查看Echo Request 报文,ICMPv6 类型和代码号取值为多少?包含该报文的IPv6 数据报
源地址和目的地址分别是多少?包含该报文的以太网帧源地址和目的地址分别是多少?
答: 如图22所示,查看Echo Request 报文,ICMPv6 类型是Echo (ping) request (128) 和代码号取值为0,包含该报文的IPv6 数据报源地址是fc00:1: :1, 目的地址是fc00:2:1, 包含该报文的以太网帧源地址是HuaweiTe_49: 04:d1 (54:89:98:49:04:d1) 和目的地址是HuaweiTe_0d: 72:e0 (00:e0:fc:0d: 72:e0).

在这里插入图片描述

图22 Echo Request 报文相关信息

c.查看Echo Reply 报文,ICMPv6 类型和代码号取值为多少?包含该报文的IPv6 数据报源
地址和目的地址分别是多少?包含该报文的以太网帧源地址和目的地址分别是多少?
答: 如图23所示,查看Echo Request 报文,ICMPv6 类型是Echo (ping) reply (129) 和代码号取值为0,包含该报文的IPv6 数据报源地址是fc00:2: :1, 目的地址是fc00:1:1, 包含该报文的以太网帧源地址是HuaweiTe_0d: 72:e0 (00:e0:fc:0d: 72:e0)和目的地址是HuaweiTe_49: 04:d1 (54:89:98:49:04:d1).

在这里插入图片描述

图22 Echo Reply报文相关信息

Ⅱ 分析Tracert 报文
在Wireshark 界面中,查看PC1 tracert PC2 时(即执行相应的命令tracert fc00:2::1 -6)
所捕获的多个ICMPv6 Echo Request、ICMPv6 Echo Reply 和ICMPv6 Time Exceeded 报文,
如图23 所示。

在这里插入图片描述

图23 捕获的Tracert 报文
以实际捕获数据为准,回答下列问题:
a. 实际捕获结果中分别出现多少个ICMPv6 Echo Request、ICMPv6 Echo Reply 和ICMPv6
Time Exceeded?与测试命令显示的结果是否一致?
答:如图24所示, 此处分别出现12个ICMPv6 Echo Request 和 3个Echo Reply 报文, 9个ICMPv6 Time Exceeded , 与测试命令显示的结果一致.

在这里插入图片描述

图24 捕获的Tracert 报文

b. 选中一个ICMPv6 Echo Request 报文并查看,ICMPv6 类型和代码号取值为多少?包含该报文的IPv6 数据报源地址和目的地址分别是多少?包含该报文的以太网帧源地址和目的地址分别是多少?对比查看所有ICMPv6 Echo Request 报文,包含这些报文的不同IPv6 数据报中,Next Header 和Hop Limit 取值是否相同?

答: 如图25所示,查看Echo Request 报文,ICMPv6 类型是Echo (ping) request (128) 和代码号取值为0,包含该报文的IPv6 数据报源地址是fc00:1: :1, 目的地址是fc00:2:1, 包含该报文的以太网帧源地址是HuaweiTe_49: 04:d1 (54:89:98:49:04:d1) 和目的地址是HuaweiTe_0d: 72:e0 (00:e0:fc:0d: 72:e0). 对比查看所有ICMPv6 Echo Request 报文,包含这些报文的不同IPv6 数据报中,Next Header相同, Hop Limit 取值不同.

在这里插入图片描述

图25 Echo Request 报文相关信息

c. 选中一个ICMPv6 Time Exceeded 报文并查看,ICMPv6 类型和代码号取值为多少?对比查看所有ICMPv6 Time Exceeded 报文,包含这些报文的不同IPv6 数据报中,源地址和目的地址分别是多少,是否相同?
答: 如图26所示,选中一个ICMPv6 Time Exceeded 报文并查看,ICMPv6 类型是Time Exceeded (3)和代码号取值为0 (hop limit exceeded in transit),对比查看所有ICMPv6 Time Exceeded 报文,包含这些报文的不同IPv6 数据报中,源地址fc00:23: :3和目的地址fc00:1::1,源地址fc:1::ffff和目的地址fc00:1: :1, 源地址fc00:12: :2和目的地址fc00:1::1 源地址不相同, 目的地址相同.

在这里插入图片描述

图26 Time Exceeded 报文相关信息

d. 选中一个ICMPv6 Echo Reply 报文并查看,ICMPv6 类型和代码号取值为多少?包含该报文的IPv6 数据报源地址和目的地址分别是多少?包含该报文的以太网帧源地址和目的地址分别是多少?对比查看所有ICMPv6 Echo Reply 报文,包含这些报文的不同IPv6 数据报中,Next Header 和Hop Limit 取值分别是多少,是否相同?
答: 如图27所示,查看Echo Request 报文,ICMPv6 类型是Echo (ping) reply (129) 和代码号取值为0,包含该报文的IPv6 数据报源地址是fc00:2: :1, 目的地址是fc00:1:1, 包含该报文的以太网帧源地址是HuaweiTe_0d: 72:e0 (00:e0:fc:0d: 72:e0)和目的地址是HuaweiTe_49: 04:d1 (54:89:98:49:04:d1). 对比查看所有ICMPv6 Echo Reply 报文,包含这些报文的不同IPv6 数据报中,Next Header : ICMPv6 (58) , 和Hop Limit 取值是252,相同.

在这里插入图片描述
图27 Echo Reply 报文相关信息

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

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

相关文章

XL-LightHouse 与 Flink 和 ClickHouse 流式大数据统计系统

一个Flink任务只能并行处理一个或少数几个数据流&#xff0c;而XL-LightHouse一个任务可以并行处理数万个、几十万个数据流&#xff1b; 一个Flink任务只能实现一个或少数几个数据指标&#xff0c;而XL-LightHouse单个任务就能支撑大批量、数以万计的数据指标。 1、XL-LightHo…

005微信小程序云开发API数据库-查询记录-聚合-统计记录数量

文章目录 1.微信小程序云开发API数据库-查询记录案例代码 2.微信小程序云开发API数据库-聚合案例代码 3.微信小程序云开发API数据库-统计记录数量案例代码 1.微信小程序云开发API数据库-查询记录 微信小程序云开发API数据库是一个方便快捷的数据库解决方案&#xff0c;可以让开…

国庆节你会去哪玩? 立即领取国庆专属头像

点击上方蓝字关注我们 立即领取国庆头像 国庆节 国庆节是一个重要的假期&#xff0c;许多人都会选择外出旅游&#xff0c;放松心情&#xff0c;享受美好的时光。以下是一些建议&#xff0c;供您在国庆节期间选择旅游目的地。 迎祖国华诞 愿祖国风调雨顺&#xff0c;国泰民安 国…

进阶C语言-指针的进阶(上)

指针的进阶 &#x1f4d6;1.字符指针&#x1f4d6;2.指针数组&#x1f4d6;3.数组指针&#x1f388;3.1 数组指针的定义&#x1f388;3.2 &数组名VS数组名&#x1f388;3.3 数组指针的使用 &#x1f4d6;4.数组参数、指针参数&#x1f388;4.1一维数组传参&#x1f388;4.2…

[H5动画制作系列] Rectangle Demo 的三种方法

整体要求: 舞台背景为蓝色,大小为:400*400;左上角有一个红色正方形,大小为:200*200,中心点坐标为(0,0) 方法一: 启动Aninmate,用界面绘图工具,做一个单帧静态画面,然后采用Html Canvas发布。 方法二: 启动Aninmate,先做一个单帧,空白帧。然后在空白帧上,填写帧代码。 然…

yolov7简化yaml配置文件

yolov7代码结构简单&#xff0c;效果还好&#xff0c;但是动辄超过70几个模块的配置文件对于想要对网络进行魔改的朋友还是不怎么友好的&#xff0c;使用最小的tiny也有77个模块 代码的整体结构简单&#xff0c;直接将ELAN结构化写成一个类就能像yolov5一样仅仅只有20几个模块&…

优思学院|怎样定义质量?质量的八个维度是什么?

质量是一个广泛而关键的概念&#xff0c;它可以通过多种方式来描述和评估。在商业和制造领域&#xff0c;了解如何区分和评估产品质量的不同维度至关重要。在本文中&#xff0c;我们将讨论产品质量的多维度&#xff0c;并根据哈佛商学院 David A. Garvin&#xff08;1987&#…

PowerBI依据字段取一列从小到大的第三个值(没三个值取第二个,第二个没有取第一个)

大家在项目业务背景中总能遇到一些比较奇特的需求&#xff0c;我们尽力取解决&#xff0c;下面把这个过程提供出来&#xff0c;供大家参考。步步高升自己技术。PowerBI依据字段取一列从小到大的第三个值&#xff08;没三个值取第二个&#xff0c;第二个没有取第一个&#xff09…

【数据结构--顺序表】移除元素

题目描述&#xff1a; 代码实现&#xff1a; 1、指针实现 int removeElement(int* nums, int numsSize, int val) {int* dst nums, * src nums;int n1 0,n20;while (n1n2 < numsSize){if (*src ! val){*dst *src;dst;src;n1;//表示src走的步数}else{src;n2;//表示src走…

无涯教程-JavaScript - IMSECH函数

描述 IMSECH函数以x yi或x yj文本格式返回复数的双曲正割。复数的双曲正割被定义为双曲余弦的倒数,即 六(z) 1/cosh(z) 语法 IMSECH (inumber)争论 Argument描述Required/OptionalInumberA complex number for which you want the hyperbolic secant.Required Notes Ex…

我的创作纪念日——你知道这5年我是怎么过的吗?

机缘 第一篇博客记忆犹新&#xff0c;是与CSDN结下了第一缕缘分。 前期的博客都被打上“改进质量”的标签&#xff0c;到后来的高质量文字的撰写&#xff0c;见证了自己撰写能力的一步一步地提高&#xff0c;正可谓不积跬步无以至千里。 如下图所示&#xff1a; 这5年&#…

长城网络靶场第三题

关卡描述&#xff1a;1.oa服务器的内网ip是多少&#xff1f; 先进行ip统计&#xff0c;开始逐渐查看前面几个ip 基本上都是b/s&#xff0c;所以大概率是http&#xff0c;过滤一下ip 第一个ip好像和oa没啥关系 第二个ip一点开就是 oa&#xff0c;应该就是他了。 关卡描述&a…

80 # 图片防盗链

referer 来源&#xff0c;表示这个资源被谁引用过&#xff0c;可以用来做防盗链。 我们新建文件 no-referer.js const fs require("fs"); const path require("path"); const url require("url"); const http require("http");h…

MyBatis原理分析手写持久层框架

目录 1 JDBC操作数据库问题分析2 JDBC问题分析和解决思路3 自定义持久层框架_思路分析3.1 使用JDBC和使用持久层框架区别3.2 核心接口/类重点说明3.3 项目使用端3.4 自定义框架本身3.5 最终手写的持久层框架结构参考 4 自定义持久层框架_编码5 自定义持久层框架优化 1 JDBC操作…

SpotBugs检查java代码:在整数上进行没有起任何实际作用的位操作(INT_VACUOUS_BIT_OPERATION)

https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#int-vacuous-bit-mask-operation-on-integer-value-int-vacuous-bit-operation 在整数上进行无用的与、异或操作&#xff0c;实质上没有做任何有用的工作。 例如&#xff1a;v & 0xffffffff 再例如&…

企业移动培训考学系统

在这个知识爆炸的时代&#xff0c;无论是职场新人还是经验丰富的老手&#xff0c;不断提升自己的专业技能和知识水平是每个人的必修课。而在这个快节奏的社会&#xff0c;如何高效、轻松地学习成了一个亟待解决的问题。一指通移动培训考学平台&#xff0c;为每一个渴望进步的人…

202329读书笔记|《面纱》——我知道你愚蠢轻佻头脑空虚,然而我爱你。我知道你的企图、你的理想,你势利、庸俗,然而我爱你。

202329读书笔记|《面纱》——我知道你愚蠢轻佻头脑空虚&#xff0c;然而我爱你。我知道你的企图、你的理想&#xff0c;你势利、庸俗&#xff0c;然而我爱你。 因为一段话而读的一本书&#xff1a;【“我知道你愚蠢、轻佻、头脑空虚&#xff0c;然而我爱你。我知道你的企图、你…

测试开发【Mock平台】10基础:拦截器实现Mock功能(一)探索HandlerInterceptor

【Mock平台】为系列测试开发教程&#xff0c;从0到1编码带你一步步使用Spring Boot 和 Antd React框架完成搭建一个测试工具平台&#xff0c;希望作为一个实战项目对各位的测试开发学习之路有帮助&#xff0c;大奇一个专注测试技术干货原创与分享的家伙。 在本系列 Mock 平台开…

代码行统计工具---cloc(Count Lines of Code)

介绍 官网&#xff1a; https://github.com/AlDanial/cloc cloc&#xff08;Count Lines of Code&#xff09;是一个代码行统计工具&#xff0c;可以统计源码中的空白行、注释行、物理行&#xff0c;支持对多种语言的统计。 安装 windows下安装 例如&#xff0c;下载1.98版…

华为云云耀云服务器L实例评测|使用宝塔面板管理服务器,并搭建个人博客网站

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 前言 介绍&#xff1a; 一.购买使用华为云云耀服务器 …