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

计算机网络:网络层 —— 移动 IP 技术

文章目录

      • IPv6
        • IPv6 的诞生背景
        • 主要优势
          • IPv6引进的主要变化
        • IPv6数据报的基本首部
          • IPv6数据报首部与IPv4数据报首部的对比
        • IPv6数据报的拓展首部
        • IPv6地址
          • IPv6地址空间大小
          • IPv6地址的表示方法
        • IPv6地址的分类
        • 从IPv4向IPv6过渡
          • 使用双协议栈
          • 使用隧道技术
        • 网际控制报文协议 ICMPv6
          • ICMPv6报文的封装
          • ICMPv6报文的分类

IPv6

IPv6 的诞生背景

IPv4 是在20世纪70年代末期设计的,其IPv4地址的设计存在以下缺陷:

  • IPv4 的设计者最初并没有想到该协议会在全球范围内广泛使用因此将IPv4地址的长度规定为他们认为足够长的32比特

  • IPv4 地址早期的编址方法(分类的IPv4地址划分子网的IPv4地址)也不够合理,造成 IPv4 地址资源的浪费。

主要优势

如果没有 网络地址转换 NAT 技术 的广泛应用,IPv4 早已停止发展。然而,NAT 仅仅是为了延长 IPv4 使用寿命而采取的权宜之计,解决 IPv4 地址耗尽的根本措施就是采用具有更大地址空间(IP地址的长度为128比特)的新版本IP,即IPv6。但到目前为止,IPv6还只是草案标准阶段 [RFC2460,RFC4862,RFC4443]

IPv6引进的主要变化

IPv6(Internet Protocol version 6)是互联网上的下一代 IP 协议,用于解决 IPv4 地址空间有限的问题。

  • 更大的地址空间:相比 IPv4 的 32 位地址,IPv6 采用了 128位地址空间,提供了大量可用的 IP 地址。在采用合理编址方法的情况下,在可预见的未来是不会用完的。

  • 扩展的地址层次结构:可划分为更多的层次,这样可以更好地反映出因特网的拓扑结构,使得对寻址和路由层次的设计更具有灵活性。

  • 灵活的首部格式:与IPv4首部并不兼容。IPv6定义了许多可选的的扩展首部,不仅可提供比IPv4更多的功能,还可以提高路由器的处理效率,因为路由器对逐跳扩展首部外的其他扪展首部都不进行处理。

  • 改进的选项:IPv6允许分组包含有选项的控制信息,因而可以包含一些新的选项。然而IPv4规定的选项却是固定不变的。

  • 允许协议继续扩充:这一点很重要,因为技术总是在不断地发展,而新的应用也会层出不固定不变的。

  • 支持即插即用(即自动配置):IPv6支持主机或路由器自动配置IPv6地址及其他网络配置参数。因此IPv6不需要使用DHCP

  • 支持资源的预分配:IPv6能为实时音视频等要求保证一定带宽和时延的应用,提供更好的服务质量保证

IPv6数据报的基本首部

![[IPv6数据报的基本首部.png]]

  • 所有的扩展首部并不属于IPv6数据报的首部,它们与其后面的数据部分合起来构成有效载荷(payload,也称为净负荷)

  • 通信量类字段:长度为8比特,该字段用来区分不同的IPv6数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。

  • 流标号字段:长度为20比特。IPv6提出了的抽象概念。

    “流”就是因特网上从特定源点到特定终点(单播或多播)的一系列IPv6数据报(如实时音视频数据的传送),而在这个“流”所经过的路径上的所有路由器都保证指明的服务质量

    所有属于同一个流的IPv6数据报都具有同样的流标号。换句话说,流标号用于资源分配

    流标号对于实时音视频数据的传送特别有用,但对于传统的非实时数据,流标号则没有用处,把流标号字段的值置为0即可。

  • 有效载荷长度字段:长度为16比特,它指明IPv6数据报基本首部后面的有效载荷(包括扩展首部和数据部分)的字节数量。该字段以字节为单位,最大取值为 65535,IPv6数据报基本首部后面的有效载荷的最大长度为 65535 字节

  • 下一个首部字段:长度为8比特。该字段相当于IPv4数据报首部中的协议字段或可选字段。

    当IPv6数据报没有扩展首部时,该字段的作用与IPv4的协议字段一样,它的值指出了IPv6数据报基本首部后面的数据是何种协议数据单元PDU。如取值为 6 时,则数据载荷部分是 TCP 报文段;取值为 17,则有效载荷部分是 UDP 用户数据报。

    当 IPv6 数据报基本首部后面带有扩展首部时,该字段的值就标识后面第一个扩展首部的类型

    ![[下一个首部字段.png]]

  • 跳数限制字段:长度为8比特。该字段用来防止IPv6数据报在因特网中永久兜圈。

    源点在每个 IPv6 数据报发出时即设定某个跳数限制(最大255跳)每个路由器在转发 IPv6 数据报时,要先把跳数限制字段中的值减1。当跳数限制的值为 0 时,就把这个 IPv6 数据报丢弃(即不转发)。

    该字段的作用与IPv4数据报首部中的生存时间TTL字段完全一样。IPv6将名称改为跳数限制后可使名称与作用更加一致。

  • 源地址字段和目的地址字段:长度都为128比特。分别用来填写IPv6数据报的发送端的IPv6地址和接收端的IPv6地址。

IPv6数据报首部与IPv4数据报首部的对比
  • IPv6将IPv4数据报首部中不必要的功能取消了,这使得IPv6数据报基本首部中的字段数量减少到只有8个

  • 由于IPv6地址的长度扩展到了128比特,因此使得IPv6数据报基本首部的长度反而增大到了40字节,比IPv4数据报首部固定部分的长度(20字节)增大了20字节。

  • 取消了首部长度字段,IPv6数据报的首部长度是固定的40字节。

  • 取消了区分服务(服务类型)字段,IPv6数据报首部中的通信量类流标号字段实现了区分服务字段的功能。

  • 取消了总长度字段,改用有效载荷长度字段。IPv6数据报的首部长度是固定的40字节,只有其后面的有效载荷长度是可变的。

  • 取消了标识、标志和片偏移字段,这些功能已包含在IPv6数据报的分片扩展首部中

  • 把生存时间TTL字段改称为跳数限制字段,这样名称与作用更加一致。

  • 取消了协议字段,改用下一个首部字段。

  • 取消了首部检验和字段,这样可以加快路由器处理IPv6数据报的速度。

  • 取消了选项字段,改用扩展首部来实现选项功能。

IPv6数据报的拓展首部

IPv4数据报如果在其首部中使用了选项字段,则在数据报的整个传送路径中的全部路由器,都要对选项字段进行检查,这就降低了路由器处理数据报的速度

实际上,在路径中的路由器对很多选项是不需要检查的。因此,为了提高路由器对数据报的处理效率IPv6把原来IPv4首部中的选项字段都放在了扩展首部中,由路径两端的源点和终点的主机来处理,而数据报传送路径中的所有路由器都不处理这些扩展首部(除逐跳选项扩展首部)。

[RFC 2460] 中定义了以下六种扩展首部:

  1. 逐跳选项

  2. 路由选择

  3. 分片

  4. 鉴别

  5. 封装安全有效载荷

  6. 目的站选项

每一个扩展首部都由若干个字段组成,它们的长度也各不相同。所有扩展首部中的第一个字段,都是8比特的下一个首部字段。该字段的值指出在该扩展首部后面是何种扩展首部。当使用多个扩展首部时,应按以上的先后顺序出现

IPv6地址
IPv6地址空间大小

在IPv6中,每个地址占128个比特。IPv6地址空间大小为 2 128 ( 大于 3.4 × 1 0 38 ) 2^{128} (大于 3.4 \times 10^{38}) 2128(大于3.4×1038)

如果整个地球表面(包括陆地和水面)都覆盖着需要IPv6地址的通信设备,那么IPv6允许每平方米拥有 7 × 1 0 23 7\times10^{23} 7×1023 个IPv6地址。

如果IPv6地址分配速率是每微秒分配100万个IPv6地址,则需要 1 0 19 10^{19} 1019年的时间才能将所有可能的地址分配完毕。

很显然,这样巨大的地址空间在采用合理编址方法的情况下,在可预见的未来是不会用完的

IPv6地址的表示方法


IPv6 地址的表示形式是将每16比特分为1组,以 8组16进制数 表示,每组使用冒号(:)分隔(冒号十六进制记法),例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334不区分大小写)。

为了简化地址表示,IPv6还引入了一些缩写规则,如 “左侧零”省略“连续零”压缩

  • 左侧零省略:指两个冒号间的十六进制数中最前面的一串0可以省略不写

  • 连续零压缩:指一连串连续的 0 可以用一对冒号取代,即连续的 0 组简写为“::”,例如 2001:db8::1

  • 在一个IPv6地址中只能使用一次“连续零”压缩,否则会导致歧义。

使用多次“连续零”压缩:

在这里插入图片描述
只使用一次“连续零”压缩,并使用“左侧零”省略:

在这里插入图片描述

冒号十六进制记法还可结合点分十进制的后缀。在IPv4向IPv6过渡阶段非常有用:

![[冒号十六进制记法还可结合点分十进制的后缀.png]]

CIDR的斜线表示法在IPv6中仍然可用

![[CIDR的斜线表示法在IPv6中仍然可用.png]]

IPv6地址的分类

IPv6数据报的目的地址有三种基本类型:

  • 单播(unicast):传统的点对点通信

  • 多播(multicast):一点对多点的通信。数据报发送到一组计算机中的每一个。IPv6没有采用广播的术语,而将广播看作多播的一个特例。

  • 任播(anycast):这是IPv6新增的一种类型。任播的终点是一组计算机,但数据报只交付其中的一个,通常是按照路由算法得出的距离最近的一个

[RFC 4291] 对IPv6地址进行了分类:

  • 未指明地址

    • 128个比特为“全0”的地址,可缩写为两个冒号 “::

    • 该地址不能用作目的地址,只能用于还有配置到一个标准IPv6地址的主机用作源地址

    • 未指明地址仅有一个

  • 环回地址

    • 最低比特为1,其余127个比特为“全0”,即 0:0:0:0:0:0:0:1,可缩写为 ::1

    • 该地址的作用与IPv4的环回地址相同。

    • IPv6的环回地址只有一个

  • 多播地址

    • 最高8比特为“全1”的地址,可记为 FF00::/8 .

    • IPv6多播地址的功能与IPv4多播地址相同。

    • 这类地址占IPv6地址空间的1/256

  • 本地链路单播地址

    • 最高 10 比特为 1111111010 的地址,可记为 FE80::/10

    • 连接在这种网络上的主机即使用户网络没有连接到因特网,但仍然可以使用TCP/IP协议。都可以使用本地链路单播地址进行通信,但不能和因特网上的其他主机通信

    • 这类地址占IPv6地址空间的1/1024

  • 全球单播地址

    • 全球单播地址是使用得最多的一类地址。

    • IPv6全球单播地址采用三级结构,这是为了使路由器可以更快地查找路由。

    ![[三级结构的IPV6全球单播地址.png]]

从IPv4向IPv6过渡

因特网上使用IPv4的路由器的数量太大,要让所有路由器都改用IPv6并不能一蹴而就。因此,从IPv4转变到IPv6只能采用逐步演进的办法

另外,新部署的IPv6系统必须能够向后兼容,也就是IPv6系统必须能够接收和转发IPv4数据报,并且能够为IPv4数据报选择路由

有两种由IPv4向IPv6过渡的策略:使用双协议栈、使用隧道技术
相关文档为 [RFC2473,RFC2529,RFC 2893,RFC 3056,RFC 4038,RFC 4213]

使用双协议栈

双协议栈(Dual Stack)是指在完全过渡到IPv6之前,使一部分主机或路由器装有IPv4和IPv6两套协议栈

双协议栈主机或路由器既可以和IPv6系统通信,又可以和IPv4系统通信

  • 双协议栈主机或路由器记为 IPv6/IPv4,表明它具有一个IPv6地址和一个IPv4地址

  • 双协议栈主机在与IPv6主机通信时采用IPv6地址,而与IPv4主机通信时采用IPv4地址。

双协议栈主机通过域名系统DNS查询目的主机采用的IP地址

  • DNS 返回的是 IPv4 地址,则双协议栈的源主机就使用 IPv4 地址

  • DNS 返回的是 IPv6 地址,则双协议栈的源主机就使用 IPv6 地址

![[双协议栈主机.png]]

IPv6数据报中的流标号字段无法转换为IPv4数据报中的内容,IPv4数据报转换为IPv6数据报时也无法将流标号恢复,这种信息的损失是使用首部转换方法所不能避免的。

使用隧道技术

隧道技术(Tunneling)的核心思想是:

  1. 当IPv6数据报要进入IPv4网络时,将IPv6数据报重新封装成IPv4数据报,即整个IPv6数据报成为IPv4数据报的数据载荷

  2. 封装有IPv6数据报的IPv4数据报在IPv4网络中传输。

  3. 当IPv4数据报要离开IPv4网络时,再将其数据载荷(即原来的IPv6数据报)取出并转发到IPv6网络。

要使双协议栈路由器 R4 知道 IPv4 数据报的数据载荷是 IPv6 数据报,则IPv4数据报首部中协议字段的值必须设置为41.

![[隧道技术.png]]

使用隧道技术就好像在路由器 R1 和 R4 之间,为 IPv6 数据报的传送打通了一条专用的隧道。

网际控制报文协议 ICMPv6

由于IPv6与IPv4一样,都不确保数据报的可靠交付,因此IPv6也需要使用 网际控制报文协议ICMP 来向发送IPv6数据报的源主机反馈一些差错信息,相应的 ICMP 版本为 ICMPv6

ICMPv6ICMPv4 要复杂得多,它 合并了原来的地址解析协议ARP 和 网际控制报文协议ICMP 的功能。因此与 IPv6 配套使用的网际层协议就只有 ICMPv6 这一个协议。

![[网际控制报文协议ICMPv6.png]]

ICMPv6报文的封装

ICMPv6 报文需要封装成 IPv6 数据报进行发送

![[ICMPv6报文.png]]

IPv6 数据报的有效载荷中,包含有扩展首部,在扩展首部之后封装的是ICMPV6报文,则在ICMPv6 报文前面的那个扩展首部中的下一个首部字段的值必须设置为58,表明该扩展首部后面是 ICMPv6 报文

![[IPV6数据报扩展首部.png]]

ICMPv6报文的分类

ICMPv6 报文可被用来报告差错获取信息探测邻站管理多播通信

在对 ICMPv6 报文进行分类时,不同的 RFC 文档使用了不同的策略:

[RFC 2463] 中定义了六种类型的 ICMPv6 报文
[RFC 2461] 中定义了五种类型的 ICMPv6 报文
[RFC 2710] 中定义了三种类型的 ICMPv6 报文

![[ICMPv6报文的分类.png]]

相关文章:

计算机网络:网络层 —— 移动 IP 技术

文章目录 IPv6IPv6 的诞生背景主要优势IPv6引进的主要变化 IPv6数据报的基本首部IPv6数据报首部与IPv4数据报首部的对比 IPv6数据报的拓展首部IPv6地址IPv6地址空间大小IPv6地址的表示方法 IPv6地址的分类从IPv4向IPv6过渡使用双协议栈使用隧道技术 网际控制报文协议 ICMPv6ICM…...

useCrudSchemas

摘要: useCrudSchemas 不是一个标准的JavaScript或数据库操作库函数,也不是一个广泛认知的术语。它可能是某个特定项目或应用程序中定义的一个自定义函数或方法,用于简化CRUD(创建、读取、更新、删除)操作。 在Web开发…...

SpringBoot3集成Junit5

目录 1. 确保项目中包含相关依赖2. 配置JUnit 53. 编写测试类4、Junit5 新增特性4.1 注解4.2 断言4.3 嵌套测试4.4 总结 在Spring Boot 3中集成JUnit 5的步骤相对简单。以下是你可以按照的步骤: 1. 确保项目中包含相关依赖 首先,确保你的pom.xml文件中…...

【EMNLP2024】阿里云人工智能平台 PAI 多篇论文入选 EMNLP2024

近期,阿里云人工智能平台 PAI 的多篇论文在 EMNLP2024 上入选。论文成果是阿里云与华南理工大学金连文教授团队、复旦大学王鹏教授团队共同研发。EMNLP 是人工智能自然语言处理领域的顶级国际会议,聚焦于自然语言处理技术在各个应用场景的学术研究&#…...

Spark的Shuffle过程

一、Shuffle 的作用是什么? Shuffle 操作可以理解为将集群中各个节点上的数据进行重新整理和分类的过程。这一概念源自 Hadoop 的 MapReduce 模型,Shuffle 是连接 Map 阶段和 Reduce 阶段的关键环节。在分布式计算中,每个计算节点通常只处理任…...

Java+Swing可视化图像处理软件

JavaSwing可视化图像处理软件 一、系统介绍二、功能展示1.图片裁剪2.图片缩放3.图片旋转4.图像灰度处理5.图像变形6.图像扭曲7.图像移动 三、系统实现1.ImageProcessing.java 四、其它1.其他系统实现2.获取源码 一、系统介绍 该系统实现了图片裁剪、缩放、旋转、图像灰度处理、…...

RDD转换算子:【mapValues、mapPartitions】

文章目录 1、mapValues算子功能语法举例 2、mapPartitions算子功能语法举例 1、mapValues算子 功能 针对二元组KV类型的RDD,对RDD中每个元素的Value进行map处理,结果放入一个新的RDD中 语法 def mapValues(self: RDD[Tuple[K,V]], f: (V) -> U) -…...

数组和指针的复杂关系

C语言中指针和数组的关系似乎很“纠结”,让人爱恨交织。本文试图帮助读者理清它们之间的复杂关系! 数组名的理解 数组元素在内存中是连续存放的,在C语言中,数组名有特殊的含义,它表示数组首元素的地址。因此&#xf…...

Linux系统I/O调优实例

文章目录 一 、资源限制二、测试硬盘速度: 一 、资源限制 限制用户资源配置文件:/etc/security/limits.conf [rootxuegod63 ~]# vim /etc/security/limits.conf 每行的格式: 用户名/用户组名 类型(软限制/硬限制) 选项 值 通常我们在服务器…...

记录Ubuntu OS的异常

PS: 参加过408改卷的ZJU ghsongzju.edu.cn 开启嘲讽: 你们知道408有多简单吗,操作系统真实水平自己知道就行~~ dmesg dmesg 是一个用于显示内核环形缓冲区消息的命令,主要用于查看系统启动时的消息、驱动程序加载信息、硬件错误…...

Vue 3 单元测试与E2E测试

在Vue 3应用的开发过程中,测试是一个至关重要的环节。它不仅能够确保代码的正确性,还能在后续的代码重构和升级过程中提供安全保障。本文将深入探讨Vue 3的单元测试(Unit Testing)和端到端测试(End-to-End Testing, E2…...

猫用空气净化器哪个牌子好?求除毛好、噪音小的宠物空气净化器!

换毛季家里孩子不省心,疯狂掉落的猫毛和空气中乱飞的浮毛可把我折磨死了。每天下班都要抽出时间来清理,不然这个家就不能要了。猫毛靠我自己可以打扫,浮毛还得借助宠物空气净化器这种专业工具。所以我最近着手做功课,打算入手一台…...

第十九课 Vue组件中的方法

Vue组件中的方法 组件中的方法拓展与实例对象中的方法拓展类似 <div id"app"><test></test> </div> <script>Vue.component(test, {template: <input type"button" value"这是个按钮组件" click"fun()…...

【JavaScript】V8,Nodejs 与浏览器

V8 V8 是一个 JavaScript engine&#xff0c;负责编译并执行 JavaScript 源代码&#xff0c;处理对象的内存分配&#xff0c;并对不再需要的对象进行垃圾收集。 V8 包含两个主要组件&#xff1a; Memory Heap&#xff1a;负责存储分配。 Call Stack&#xff1a;代码执行时&am…...

内存马浅析

之前在jianshu上写了很多博客&#xff0c;但是安全相关的最近很多都被锁了。所以准备陆陆续续转到csdn来。内存马前几年一直是个很热门的漏洞攻击手段&#xff0c;因为相对于落地的木马&#xff0c;无文件攻击的内存马隐蔽性、持久性更强&#xff0c;适用的漏洞场景也更多。 J…...

聊一聊Elasticsearch的基本原理与形成机制

1、搜索引擎的基本原理 通常搜索引擎包括&#xff1a;数据采集、文本分析、索引存储、搜索等模块&#xff0c;它们之间的协作流程如下图&#xff1a; 数据采集模块负责采集需要搜索的数据源。 文本分析模块是将结构化数据中的长文本切分成有实际意义的词&#xff0c;这样用户…...

应急救援无人车:用科技守护安全!

一、核心功能 快速进入危险区域&#xff1a; 救援无人车能够迅速进入地震、火灾、洪水等自然灾害或重大事故的现场&#xff0c;这些区域往往对人类救援人员构成极大威胁。 通过自主导航和环境感知技术&#xff0c;无人车能够避开危险区域&#xff0c;确保自身安全的同时&…...

详解Java之Spring MVC篇二

目录 获取Cookie/Session 理解Cookie 理解Session Cookie和Session的区别 获取Cookie 获取Session 获取Header 获取User-Agent 获取Cookie/Session 理解Cookie HTTP协议自身是“无状态”协议&#xff0c;但是在实际开发中&#xff0c;我们很多时候是需要知道请求之间的…...

flutter鸿蒙next 使用 InheritedWidget 实现跨 Widget 传递状态

在 Flutter 中&#xff0c;状态管理是开发过程中一个至关重要的部分。Flutter 提供了多种方式来实现组件间的状态传递&#xff0c;其中一种比较底层的方式是使用 InheritedWidget。虽然 InheritedWidget 主要用于将数据传递给其子树中的小部件&#xff0c;但它也是许多更高级状…...

计算机的错误计算(一百四十六)

摘要 探讨 MATLAB 中正切函数 tan(x)、余切函数 cot(x) 关于 附近数的计算精度问题。 例1. 已知 计算 直接贴图吧&#xff1a; 另外&#xff0c;16位的正确值分别为 -0.7837941516239115e10、-0.1275845192169577e-9、0.4782331334117711e7 与 0.2091030357653982e-…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...