RFC4291-IPv6地址架构

RFC4291-IPv6地址架构

RFC4291 IP Version 6 Addressing Architecture

Author:Once Day Date:2025年6月15日

本文翻译自RFC 4291 - IP Version 6 Addressing Architecture

这篇文章总结了IPv6的基础概念,属于IPv6协议入门内容。

文章目录

1. 概述
1.1 本备忘录状态

本文档为互联网社区指定了一种互联网标准轨道协议,并征求有关改进的讨论和建议。有关本协议的标准化状态和状况,请参考当前版本的《互联网官方协议标准》(STD 1)。本备忘录的分发不受限制。

1.2 版权声明

版权所有(C)互联网协会(2006)。

1.3 摘要

本规范定义了 IPv6(互联网协议第 6 版)的编址架构。文档内容包括 IPv6 编址模型、IPv6 地址的文本表示、IPv6 单播地址、任播地址和多播地址的定义,以及 IPv6 节点的必备地址。

本文档替代了 RFC 3513《IPv6 编址架构》。

2. IPv6 编址

IPv6 地址是用于标识接口及接口集合的 128 位标识符(“接口” 的定义参见 [IPV6] 第 2 节)。地址分为三种类型:

单播(Unicast)

  • 标识单个接口。发往单播地址的数据包将被交付至该地址标识的接口。

任播(Anycast)

  • 标识一组接口(通常属于不同节点)。发往任播地址的数据包将被交付至该地址标识的其中一个接口(根据路由协议的距离度量,选择 “最近” 的接口)。

多播(Multicast)

  • 标识一组接口(通常属于不同节点)。发往多播地址的数据包将被交付至该地址标识的所有接口。

IPv6 中不存在广播地址,其功能已被多播地址取代。

本文档中,地址字段被赋予特定名称(如 “子网”)。当名称后接 “ID”(如 “子网 ID”)时,指该命名字段的内容;当接 “前缀”(如 “子网前缀”)时,指从地址左侧开始直至该字段(含)的全部内容。

在 IPv6 中,除非特别排除,任何字段的合法值均可为全零或全一。具体而言,前缀可包含以零值字段结尾的情况。

2.1 地址模型

所有类型的 IPv6 地址均分配给接口,而非节点。IPv6 单播地址标识单个接口,由于每个接口属于唯一节点,该节点任意接口的单播地址均可作为节点标识符。

所有接口必须至少拥有一个链路本地单播地址(其他必备地址见 2.8 节)。单个接口可同时拥有多个任意类型(单播、任播、多播)或作用域的 IPv6 地址。对于不用于与非邻居节点收发 IPv6 数据包的接口,无需配置作用域大于链路范围的单播地址 —— 这对点到点接口尤为便利。该编址模型存在一个例外情况:

若实现将多个物理接口在网络层视为单个接口,则可向这些接口分配单个或一组单播地址。此特性适用于通过多物理接口实现负载分担的场景。

当前 IPv6 沿用 IPv4 模型,即子网前缀与一条链路关联,同一链路可分配多个子网前缀。

即使接口仅用于本地通信,也必须配置链路本地地址(如 FE80::/10 前缀地址),以确保链路层通信的基础可达性。

2.2 地址的文本表示

IPv6 地址以文本字符串表示时存在三种常规形式:

(1)首选格式

格式为 x:x:x:x:x:x:x:x,其中每个 x 为地址中 8 个 16 位段的 1~4 位十六进制数字。示例:

  • ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
  • 2001:DB8:0:0:8:800:200C:417A

注意:单个字段中的前导零无需书写,但每个字段至少保留一位数字(除非符合第 2 点描述的情况)。

(2)零压缩语法

由于部分 IPv6 地址分配方式会产生长串零位,为简化书写,可用特殊语法压缩连续零段:

  • :: 表示一个或多个 16 位零组,且每个地址中 :: 只能出现一次,可用于压缩地址中的前导或 trailing 零。
原始地址压缩后地址类型说明
2001:DB8:0:0:8:800:200C:417A2001:DB8::8:800:200C:417A单播地址
FF01:0:0:0:0:0:0:101FF01::101多播地址
0:0:0:0:0:0:0:1::1回环地址
0:0:0:0:0:0:0:0::未指定地址

(3)IPv4 - 兼容混合格式

在 IPv4/IPv6 混合环境中,可用 x:x:x:x:x:x:d.d.d.d 格式。前 6 个 x 为地址高 6 个 16 位段的十六进制值,后 4 个 d 为低 4 个 8 位段的十进制值(标准 IPv4 表示法)。示例:

  • 完整格式:0:0:0:0:0:0:13.1.68.30:0:0:0:0:FFFF:129.144.52.38
  • 压缩格式:::13.1.68.3::FFFF:129.144.52.38
2.3 地址前缀的文本表示

IPv6 地址前缀的文本表示方式类似于无类别域间路由(CIDR)记法中 IPv4 地址前缀的写法。IPv6 地址前缀的表示格式为:

ipv6-address/prefix-length 

其中:

  • ipv6-address:采用 2.2 节中任意一种记法表示的 IPv6 地址。
  • prefix-length:一个十进制数值,表示地址中左侧连续多少位构成前缀。

合法与非法表示示例:

前缀描述合法表示示例非法表示示例
60 位前缀 20010DB80000CD32001:0DB8:0000:CD30:0:0:0:0/602001:0DB8::CD30:0:0:0:0/602001:0DB8:0:CD30::/602001:0DB8:0:CD3/602001:0DB8::CD30/602001:0DB8::CD3/60

错误原因:

  1. 压缩后的段必须保持 16 位对齐。
  2. :: 扩展后前缀长度不足 60 位。
  3. 压缩导致非末尾段的零被移除。

当同时表示节点地址及其子网前缀时,可采用以下简化方式:

  • 节点地址:2001:0DB8:0:CD30:123:4567:89AB:CDEF
  • 子网前缀:2001:0DB8:0:CD30::/60

组合缩写:

2001:0DB8:0:CD30:123:4567:89AB:CDEF/60 
2.4 地址类型标识符

IPv6 地址的类型通过地址的高位比特进行标识,如下所示:

地址类型二进制前缀IPv6 表示法章节
未指定地址全 0(128 位)::/1282.5.2
回环地址00…1(128 位)::1/1282.5.3
多播地址11111111FF00::/82.7
链路本地单播地址1111111010FE80::/102.5.6
全球单播地址(其他所有情况)--

任播地址取自单播地址空间(任意作用域),且在语法上与单播地址无区别。

全球单播地址的通用格式在 2.5.4 节描述。部分包含嵌入式 IPv4 地址的全球单播地址子类型(用于 IPv4-IPv6 互操作)在 2.5.5 节说明。

未来规范可能会将全球单播地址空间的一个或多个子范围重新定义为其他用途,但在此之前,实现必须将所有不以上述前缀开头的地址视为全球单播地址。

2.5 单播地址

IPv6 单播地址可使用任意比特长度的前缀进行聚合,这与无类别域间路由(CIDR)体系下的 IPv4 地址类似。

IPv6 中存在多种单播地址类型,特别是全球单播地址站点本地单播地址(已弃用,参见 2.5.7 节)链路本地单播地址。此外,全球单播地址还包含一些特殊用途的子类型(如嵌入 IPv4 地址的 IPv6 地址)。未来可能会定义更多地址类型或子类型。

根据节点角色(如主机与路由器)的不同,IPv6 节点对 IPv6 地址内部结构的认知程度可能存在差异。至少,节点可认为单播地址(包括其自身地址)不具备内部结构:128 位的节点地址。

略复杂的主机(但仍属于简单类型)可能额外知晓其连接链路的子网前缀(不同地址的 n 值可能不同):

n 位子网前缀 + 128-n 位接口标识符 

尽管非常简单的路由器可能不了解 IPv6 单播地址的内部结构,但通常情况下,路由器会知晓一个或多个用于路由协议运行的层次化边界。具体知晓的边界因路由器在路由层次中的位置而异。

除上述关于子网边界的认知外,节点不应对 IPv6 地址的结构做任何假设。

2.5.1 接口标识符

IPv6 单播地址中的接口标识符用于标识链路上的接口,要求在子网前缀内唯一。建议同一链路上不同节点不分配相同的接口标识符,其也可在更广泛范围内唯一。在某些情况下,接口标识符可直接从该接口的链路层地址派生。单个节点的多个接口若连接至不同子网,可使用相同的接口标识符。

需注意,接口标识符的唯一性与 IPv6 地址的唯一性无关。例如,可使用本地范围接口标识符创建全球单播地址,或使用全局范围接口标识符创建链路本地地址。

除二进制值以 000 开头的单播地址外,所有单播地址的接口标识符必须为 64 位长,并采用修改的 EUI-64 格式构造。

基于修改的 EUI-64 格式的接口标识符,若派生自全局令牌(如 IEEE 802 48 位 MAC 或 IEEE EUI-64 标识符 [EUI64])则具有全局范围;若缺乏全局令牌(如串行链路、隧道端点)或无需全局令牌(如隐私保护临时令牌 [PRIV]),则具有本地范围。

从 IEEE EUI-64 标识符构造接口标识符时,需翻转 “u” 位(IEEE EUI-64 术语中的全局 / 本地位)。在修改的 EUI-64 格式中:

  • “u” 位设为 1 表示全局范围;
  • 设为 0 表示本地范围。

IEEE EUI-64 标识符的前三个八位组二进制结构如下(按互联网标准位序):

 0 0 0 1 1 2 |0 7 8 5 6 3| +----+----+----+----+----+----+ |cccc|ccug|cccc|cccc|cccc|cccc| +----+----+----+----+----+----+ 

其中:

  • “u” 为全局 / 本地位;
  • “g” 为个体 / 组位;
  • “c” 为公司标识符位。

翻转 “u” 位的设计初衷是便于系统管理员在缺乏硬件令牌时手动配置非全局标识符(如串行链路、隧道端点场景)。若不翻转该位,标识符可能需表示为0200:0:0:10200:0:0:2等形式,而翻转后可简化为0:0:0:10:0:0:2

IPv6 节点无需验证 “u” 位设为全局的修改 EUI-64 令牌所创建接口标识符的唯一性。修改的 EUI-64 格式标识符中全局 / 本地位的设计,为未来利用全局范围接口标识符的技术发展预留空间。

接口标识符的具体构造细节在相应的 “<链路> 上的 IPv6” 规范中定义,如《以太网承载 IPv6》[ETHER] 和《FDDI 承载 IPv6》[FDDI]。

2.5.2 未指定地址

地址0:0:0:0:0:0:0:0称为未指定地址,绝不可分配给任何节点。它表示地址缺失,典型用途如初始化主机在获取自身地址前发送的 IPv6 数据包的源地址字段。

未指定地址不得作为 IPv6 数据包的目的地址或出现在 IPv6 路由报头中。源地址为未指定地址的 IPv6 数据包,IPv6 路由器必须不进行转发

2.5.3 回环地址

单播地址0:0:0:0:0:0:0:1称为回环地址,节点可用其向自身发送 IPv6 数据包,但绝不可分配给任何物理接口。该地址被视为具有链路本地作用域,可理解为虚拟接口(通常称为 “回环接口”)连接到虚构链路的链路本地单播地址。

回环地址不得作为节点外发 IPv6 数据包的源地址。目的地址为回环地址的 IPv6 数据包,绝不可发送到节点外部,且 IPv6 路由器必须不进行转发。接口接收到目的地址为回环地址的数据包时,必须丢弃

2.5.4 全局单播地址

IPv6 全球单播地址用于在全球范围内唯一标识网络中的设备,其一般格式如下3:

n 位m 位128 - n - m 位
全球路由前缀子网 ID接口 ID

其中,全球路由前缀是分配给一个站点(子网 / 链路集群)的值,通常采用分层结构;子网 ID 用于标识站点内的链路;接口 ID 如 2.5.1 节中所定义。

除了以二进制 000 开头的地址外,所有全球单播地址都有一个 64 位的接口 ID 字段(即 n + m = 64),其格式如 2.5.1 节所述。以二进制 000 开头的全球单播地址,对接口 ID 字段的大小或结构没有此限制。例如,以二进制 000 开头的全球单播地址有 2.5.5 节中描述的内嵌 IPv4 地址的 IPv6 地址;而以非 000 二进制值开头(因此具有 64 位接口 ID 字段)的全球地址示例可以是2001:1111:2222:ABCD::1/64,其中全球路由前缀为2001:1111:2222,子网 ID 为ABCD,接口 ID 为::13。

2.5.5 嵌入 IPv4 地址的 IPv6 地址

定义了两种在地址低 32 位携带 IPv4 地址的 IPv6 地址类型:IPv4 兼容的 IPv6 地址IPv4 映射的 IPv6 地址

(1)IPv4 兼容的 IPv6 地址,该地址用于辅助 IPv6 过渡,格式如下:

80 位16 位32 位
0000…0000(全 0)0000IPv4 地址

说明

  • 其中的 IPv4 地址必须是全局唯一的 IPv4 单播地址。
  • 该地址类型现已弃用,因当前 IPv6 过渡机制不再使用,新实现无需支持。

(2)IPv4 映射的 IPv6 地址,用于将 IPv4 节点地址表示为 IPv6 地址,格式如下:

80 位16 位32 位
0000…0000(全 0)FFFFIPv4 地址

使用背景参见 [RFC4038]。

2.5.6 链路本地 IPv6 单播地址

链路本地地址仅用于单一链路,格式如下:

10 位54 位64 位
11111110100接口标识符

用途

  • 单一链路内的自动地址配置、邻居发现,或无路由器场景。
  • 路由器禁止转发源或目的地址为链路本地地址的数据包到其他链路。
2.5.7 站点本地 IPv6 单播地址

该地址原设计用于站点内部寻址,无需全局前缀,现已按 [SLDEP] 弃用。格式如下:

10 位54 位64 位
1111111011子网标识符接口标识符

说明

  • 新实现不再支持[RFC3513] 中定义的该前缀特殊行为(需将其视为全球单播地址)。
  • 现有实现和部署可继续使用该前缀。
2.6. 任播地址

IPv6 任播地址是分配给多个接口(通常属于不同节点)的地址,其特性是:根据路由协议的距离度量,发往任播地址的数据包将被路由至拥有该地址的 “最近” 接口。

任播地址从单播地址空间中分配,使用任意已定义的单播地址格式。因此,任播地址在语法上与单播地址无法区分。当单播地址被分配给多个接口(即转换为任播地址)时,必须显式配置地址所属节点,使其知晓该地址为任播地址。

对于任何已分配的任播地址,存在一个最长前缀 P,该前缀标识所有属于该任播地址的接口所在的拓扑区域。在 P 标识的区域内,任播地址必须作为路由系统中的独立条目(通常称为 “主机路由”)维护;在 P 标识的区域外,任播地址可聚合到前缀 P 的路由条目中。

需注意,在最坏情况下,任播地址集合的前缀 P 可能是空前缀(即集合成员无拓扑局部性)。此时,任播地址必须在整个互联网中作为独立路由条目维护,这将对支持此类 “全局” 任播集合的数量构成严重的扩展性限制。因此,全局任播集合的支持可能不可用或受到严格限制。

任播地址的典型用途之一是标识提供互联网服务的组织所属的路由器集合。此类地址可作为 IPv6 路由报头中的中间地址,使数据包通过特定服务提供商或服务提供商序列传输。

其他可能用途包括:标识连接到特定子网的路由器集合,或标识提供进入特定路由域入口的路由器集合。

2.6.1. 必备任播地址

子网路由器任播地址已预先定义,其格式如下:

n 位128-n 位
子网前缀00000000000000(全 0)

任播地址中的 “子网前缀” 用于标识特定链路,该任播地址在语法上与链路中接口标识符全为零的单播地址相同。

发往子网路由器任播地址的数据包将被交付至子网中的某一台路由器。所有路由器必须支持其接口所连接子网的子网路由器任播地址。

该地址旨在用于节点需要与路由器集合中任意一台通信的场景。

2.7. 多播地址

IPv6 多播地址是一组接口(通常位于不同节点)的标识符。一个接口可属于任意数量的多播组。多播地址的格式如下:

8 位4 位4 位112 位
11111111flgsscopgroup ID

(1)地址开头的二进制11111111标识该地址为多播地址。

(2)flgs(4 位标志位)

+-+-+-+-+ |0|R|P|T| +-+-+-+-+ 
  • 最高位保留,必须初始化为 0。
  • T=0:表示永久分配的 “知名” 多播地址,由互联网数字分配机构(IANA)分配。
  • T=1:表示非永久分配的 “临时” 或动态分配的多播地址。
  • P 标志的定义和用法见 [RFC3306]。
  • R 标志的定义和用法见 [RFC3956]。

(3)scop(4 位多播作用域值)

用于限制多播组的作用域,取值如下:

描述
0保留
1接口本地作用域
2链路本地作用域
3保留
4管理本地作用域
5站点本地作用域
6-7未分配
8组织本地作用域
9-A未分配
B-D未分配
E全局作用域
F保留
  • 接口本地作用域:仅覆盖节点上的单个接口,仅用于多播环回传输。
  • 链路本地作用域:与对应单播地址的拓扑区域一致。
  • 管理本地作用域:需管理员手动配置的最小作用域(非自动基于物理连接推导)。
  • 站点本地作用域:覆盖单个站点。
  • 组织本地作用域:覆盖同一组织的多个站点。
  • 未分配值:可供管理员定义额外多播区域。

(4)group ID,在给定作用域内标识多播组(永久或临时),其结构定义见 [RFC3306]。

多播地址的作用域与组标识:

  • 永久多播地址的含义与作用域无关。例如:
    • FF01::101:与发送方同接口(同一节点)的所有 NTP 服务器。
    • FF02::101:与发送方同链路的所有 NTP 服务器。
    • FF05::101:与发送方同站点的所有 NTP 服务器。
    • FF0E::101:互联网中的所有 NTP 服务器。
  • 临时多播地址仅在给定作用域内有效。例如:
    • 某站点的临时站点本地地址FF15::101与其他站点的同地址组无关联,也与不同作用域或永久组的同 ID 组无关。

多播地址使用规则

  1. 禁止作为源地址:多播地址不得作为 IPv6 数据包的源地址,也不出现在路由报头中。
  2. 作用域转发限制:路由器不得将多播数据包转发至超过目的地址 scop 字段指定的作用域。
  3. 保留值处理:
    • 节点不得向 scop=0 的多播地址发送数据包,若接收此类数据包需静默丢弃。
    • 节点应避免向 scop=F 的多播地址发送数据包,若发送或接收,按全局(scop=E)多播地址处理。
2.7.1. 预定义多播地址

以下为预定义的知名多播地址,本节定义的组 ID(group ID)仅适用于显式作用域值。禁止将这些组 ID 与其他作用域值结合使用(且 T 标志位必须为 0)。

(1)保留多播地址:

FF00:0:0:0:0:0:0:0 FF01:0:0:0:0:0:0:0 FF02:0:0:0:0:0:0:0 FF03:0:0:0:0:0:0:0 FF04:0:0:0:0:0:0:0 FF05:0:0:0:0:0:0:0 FF06:0:0:0:0:0:0:0 FF07:0:0:0:0:0:0:0 FF08:0:0:0:0:0:0:0 FF09:0:0:0:0:0:0:0 FF0A:0:0:0:0:0:0:0 FF0B:0:0:0:0:0:0:0 FF0C:0:0:0:0:0:0:0 FF0D:0:0:0:0:0:0:0 FF0E:0:0:0:0:0:0:0 FF0F:0:0:0:0:0:0:0 

上述多播地址为保留地址,不得分配给任何多播组。

(2)所有节点地址

FF01:0:0:0:0:0:0:1 (作用域1:接口本地) FF02:0:0:0:0:0:0:1 (作用域2:链路本地) 

上述地址标识对应作用域内的所有 IPv6 节点。

(3)所有路由器地址

FF01:0:0:0:0:0:0:2 (作用域1:接口本地) FF02:0:0:0:0:0:0:2 (作用域2:链路本地) FF05:0:0:0:0:0:0:2 (作用域5:站点本地) 

上述地址标识对应作用域内的所有 IPv6 路由器。

(4)被请求节点地址

格式:FF02:0:0:0:0:1:FFXX:XXXX

生成规则:被请求节点多播地址由节点的单播 / 任播地址计算得到:取地址的低 24 位,附加到前缀FF02:0:0:0:0:1:FF00::/104后,范围为FF02:0:0:0:0:1:FF00:0000FF02:0:0:0:0:1:FFFF:FFFF

示例:IPv6 地址4037::01:800:200E:8C6C对应的被请求节点地址为FF02::1:FF0E:8C6C

特性:仅高位不同的 IPv6 地址(如因不同聚合前缀导致)会映射到同一被请求节点地址,从而减少节点需加入的多播组数量。

实现要求:节点必须为其接口配置的所有单播 / 任播地址(手动 / 自动配置)计算并加入(在对应接口上)关联的被请求节点多播地址。

2.8. 节点的必备地址

主机必须识别以下标识自身的地址

  • 每个接口的链路本地地址(必备)。
  • 为节点接口配置的所有额外单播 / 任播地址(手动或自动配置)。
  • 回环地址(::1)
  • 2.7.1 节定义的所有节点多播地址(如链路本地作用域的 FF02::1)。
  • 每个单播 / 任播地址对应的被请求节点多播地址(如 FF02::1:FFXX:XXXX)。
  • 节点所属的所有其他多播组的地址。

路由器必备地址,路由器除需识别主机的所有必备地址外,还需额外识别:

  • 所有配置为路由器接口的子网路由器任播地址(格式为子网前缀 + 全 0 接口 ID)。
  • 路由器已配置的所有其他任播地址。
  • 2.7.1 节定义的所有路由器多播地址(如链路本地作用域的 FF02::2)。
地址类型主机需求路由器额外需求
链路本地地址每个接口必须配置同上
任播地址可选(若配置)必须支持子网路由器任播地址
多播地址加入所有节点组和被请求节点组额外加入所有路由器组
回环地址必须识别同上

示例场景

  • 主机启动时自动生成链路本地地址(如 FE80::/10),并加入 FF02::1 多播组以接收链路内广播消息。
  • 路由器在接口配置子网前缀 2001:db8:1234::/64 后,自动生成任播地址 2001:db8:1234::/64(接口 ID 全 0),并响应发往该地址的数据包。
3. 安全考虑

IPv6 寻址相关文档对互联网基础设施安全没有直接影响。IPv6 数据包的认证机制在 [AUTH] 中定义。

4. IANA 注意事项

IPv4 兼容的 IPv6 地址,已被本文档弃用。IANA 应继续将包含这些地址的地址块在:http://www.iana.org/assignments/ipv6-address-space 中标记为 “IETF 保留”,且不得重新分配作其他用途。例如:

  • 0000::/8:IETF 保留(参考 [RFC3513])。

IANA 为该地址块添加了以下注释和链接:

  • [5] 0000::/96 此前被定义为 “IPv4 兼容 IPv6 地址” 前缀,该定义已被 RFC 4291 弃用。

IANA 已相应更新 IANA 注册表中 IPv6 地址架构的引用信息。

Read more

Cursor完全卸载与重装指南:go-cursor-help辅助工具

Cursor完全卸载与重装指南:go-cursor-help辅助工具 【免费下载链接】go-cursor-help解决Cursor在免费订阅期间出现以下提示的问题: You've reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro. We have this limit in place to prevent abuse. Please let us know if you believe this is a mistake. 项目地址: https://gitcode.com/GitHub_

By Ne0inhk
2025年PostgreSQL 详细安装教程(windows)

2025年PostgreSQL 详细安装教程(windows)

前言 PostgreSQL 是一个功能强大的开源关系型数据库管理系统(ORDBMS),以下是对它的全面介绍: 基本概况 * 名称:通常简称为 "Postgres" * 类型:对象-关系型数据库管理系统 * 许可:开源,采用类MIT许可证 * 首次发布:1996年(起源于1986年的POSTGRES项目) * 最新版本:PostgreSQL 16(截至2023年9月发布) 核心特性 1. 标准兼容性 * 完全符合ACID(原子性、一致性、隔离性、持久性) * 高度兼容SQL标准 2. 高级功能 * 复杂查询 * 外键 * 触发器 * 可更新视图 * 事务完整性 * 多版本并发控制(MVCC) 3. 扩展性 * 支持自定义数据类型 * 自定义函数 * 使用不同编程语言编写代码(如PL/pgSQL, PL/Python,

By Ne0inhk
在vsCode中使用node.js调试js代码时报错3221225477

在vsCode中使用node.js调试js代码时报错3221225477

我们在第一次使用node.js时,可能会遇到版本不兼容的问题,在使用时就会报错。推荐下载nodejs使用nvm下载 Nvm下载  选择nvm-setup.zip进行下载,下载好了后,打卡按照步骤点击下载(环境变量会自动配置,包括后面nodejs配置环境),下载完成后按win+r输入cmd 在命令行界面输入 nvm list available 查看可下载的nodejs版本 推荐下载18.20.4版本的,大部分都兼容,在命令行界面输入 nvm install 18.20.4  同样你可以在nvm中下载更多版本的 nvm use 18.20.4 使用use后面跟上你想切换的版本就可以切换使用的nodejs版本了 这样就解决了在使用vscode中nodejs会报3221225477错的问题了

By Ne0inhk
小白必看:MoE 架构详解(大模型入门指南),一篇搞定!

小白必看:MoE 架构详解(大模型入门指南),一篇搞定!

一、概念解读 MoE,即混合专家模型(Mixture of Experts),它的核心概念可以用 “术业有专攻” 来简单概括。想象一下,你要解决一系列复杂的问题,有一个全能型的智者,他什么都懂,但当问题数量众多且繁杂时,他处理起来可能会有些吃力,效率也不高。而 MoE 架构就像是组建了一个专家团队,每个专家都擅长某一特定领域,当问题出现时,能够迅速找到对应的专家来解决,大大提高了解决问题的效率。 MoE并非把整个网络应用于每一个输入,而是去学习一种计算成本较低的映射函数,通过这个函数来判断网络中的哪些部分(也就是哪些专家)能够最高效地处理给定的输入。此外,MoE模型中还配备了一个路由器,它的作用是有选择地激活完成给定任务所需要的特定专家,而不是针对每一项任务都激活整个神经网络。 混合专家(MoE)模型的专家(Expert)是什么?专家(Expert)是训练好的子网络(神经网络或层),通常是一个独立的前馈神经网络(FFNN),也可以是更复杂的网络结构。 MoE模型将一个复杂的任务拆分成多个子任务,每个子任务都交给一个专门的“专家”来处理。这些专家各自拥有独特的专长,

By Ne0inhk