引言 本规范定义了IP版本6协议的寻址架构。它包括各种类型的IPv6地址(单播、任播和多播)的基本格式。
RFC 4291: IP Version 6 Addressing Architecture (rfc-editor.org)
RFC4291 中文翻译 中文RFC RFC文档 RFC翻译 RFC中文版 (rfc2cn.com)
IPv6 地址架构 本备忘录的状态 本文档为互联网社区指定了一个互联网标准路径协议,并请求对该协议的讨论和改进建议。请参阅“互联网官方协议标准”(STD 1)的当前版本,以了解该协议的标准状态和状况。本备忘录的分发不受限制。 版权声明 版权 © 互联网协会 (2006)。 摘要 本规范定义了 IP 版本 6 (IPv6) 协议的地址架构。文档包括 IPv6 地址模型、IPv6 地址的文本表示、IPv6 单播地址、任播地址以及多播地址的定义,还有 IPv6 节点所需地址。 本文档取代了 RFC 3513,“IP 版本 6 地址架构”。 |
IP Version 6 Addressing Architecture Status of This Memo This document specifies an Internet standards track protocol for the Copyright Notice Copyright (C) The Internet Society (2006). Abstract This specification defines the addressing architecture of the IP This document obsoletes RFC 3513, "IP Version 6 Addressing |
目录 引言 ....................................................2 |
Table of Contents 1. Introduction ....................................................2 1. Introduction This specification defines the addressing architecture of the IP 2. IPv6 Addressing IPv6 addresses are 128-bit identifiers for interfaces and sets of Unicast: An identifier for a single interface. A packet sent to a |
任播:一组接口的标识符(通常属于不同的节点)。发送到任播地址的数据包会被递送到由该地址标识的一个接口(根据路由协议的距离度量标准,通常是“最近”的一个)。 多播:一组接口的标识符(通常属于不同的节点)。发送到多播地址的数据包会被递送到所有由该地址标识的接口。 IPv6 中没有广播地址,其功能已被多播地址所取代。 在本文档中,地址中的字段被赋予了特定名称,例如,“子网”。当这个名称与“ID”(标识符)一起使用时(如“子网ID”),指的是命名字段的内容。当它与“前缀”一词一起使用时(如“子网前缀”),指的是从左边开始直到并包括该字段的所有地址部分。 在 IPv6 中,除非特别排除,否则所有零和全一都是任何字段的合法值。特别是,前缀可以包含或以零值字段结尾。 2.1 地址模型 所有类型的 IPv6 地址都被分配给接口而不是节点。IPv6 单播地址指向单个接口。由于每个接口都属于单一节点,因此该节点的任意一个接口的单播地址都可以用作该节点的标识符。 所有接口都需要至少有一个链路本地单播地址(参见第 2.8 节了解其他必需的地址)。单个接口也可以有多个类型(单播、任播和多播)或范围的 IPv6 地址。对于不作为非邻居之间的任何 IPv6 数据包的源或目的地的接口来说,不需要具有大于链路范围的单播地址。这对于点对点接口有时是方便的。此寻址模型有一个例外:
|
|
目前,IPv6 继续沿用了 IPv4 的模型,即一个子网前缀与一条链路相关联。可以将多个子网前缀分配给同一条链路。 2.2 地址的文本表示 IPv6 地址作为文本字符串有三种常用的表示形式:
|
Currently, IPv6 continues the IPv4 model in that a subnet prefix is 2.2. Text Representation of Addresses There are three conventional forms for representing IPv6 addresses as 1. The preferred form is x:x:x:x:x:x:x:x, where the 'x's are one to ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:DB8:0:0:8:800:200C:417A Note that it is not necessary to write the leading zeros in an 2. Due to some methods of allocating certain styles of IPv6 For example, the following addresses 2001:DB8:0:0:8:800:200C:417A a unicast address may be represented as 2001:DB8::8:800:200C:417A a unicast address 3. An alternative form that is sometimes more convenient when dealing |
地址中四个低位 8 位段的十进制值(标准 IPv4 表示法)。示例:
或者用压缩形式表示为:
2.3 地址前缀的文本表示 IPv6 地址前缀的文本表示类似于无类别域间路由 (CIDR) 记法 [CIDR] 中 IPv4 地址前缀的书写方式。一个 IPv6 地址前缀用以下记法表示:
其中
例如,以下是 60 位前缀 20010DB80000CD3(十六进制)的有效表示:
以下不是上述前缀的有效表示:
|
the decimal values of the four low-order 8-bit pieces of the 0:0:0:0:0:0:13.1.68.3 0:0:0:0:0:FFFF:129.144.52.38 or in compressed form: ::13.1.68.3 ::FFFF:129.144.52.38 2.3. Text Representation of Address Prefixes The text representation of IPv6 address prefixes is similar to the ipv6-address/prefix-length where ipv6-address is an IPv6 address in any of the notations listed prefix-length is a decimal value specifying how many of the For example, the following are legal representations of the 60-bit 2001:0DB8:0000:CD30:0000:0000:0000:0000/60 The following are NOT legal representations of the above prefix: 2001:0DB8:0:CD3/60 may drop leading zeros, but not trailing 2001:0DB8::CD30/60 address to left of "/" expands to 2001:0DB8::CD3/60 address to left of "/" expands to |
当同时写一个节点地址及其前缀(例如,该节点的子网前缀)时,可以将两者结合如下:
2.4 地址类型识别 IPv6 地址的类型由地址的高位比特来确定,具体如下:
任播地址是从单播地址空间(任何范围)中选取的,在语法上与单播地址无法区分。 全球单播地址的一般格式在第 2.5.4 节中描述。一些用于 IPv4-IPv6 互操作目的的嵌入了 IPv4 地址的特殊用途的全球单播子类型在第 2.5.5 节中描述。 未来规范可能会重新定义全球单播地址空间中的一个或多个子范围以供其他用途使用,但在这种情况发生之前,实现必须将所有不以以上列出的前缀开头的地址视为全球单播地址。 2.5 单播地址 IPv6 单播地址具有可聚合性,可以有任意长度的前缀,类似于无类别域间路由下的 IPv4 地址。 IPv6 中存在几种类型的单播地址,特别是全球单播、站点本地单播(已废弃,请参见第 2.5.7 节)、链路本地单播。还有一些特殊的全球单播子类型,如嵌入了 IPv4 地址的 IPv6 地址。将来还可以定义更多的地址类型或子类型。 |
When writing both a node address and a prefix of that node address the node address 2001:0DB8:0:CD30:123:4567:89AB:CDEF can be abbreviated as 2001:0DB8:0:CD30:123:4567:89AB:CDEF/60 2.4. Address Type Identification The type of an IPv6 address is identified by the high-order bits of Address type Binary prefix IPv6 notation Section Anycast addresses are taken from the unicast address spaces (of any The general format of Global Unicast addresses is described in Future specifications may redefine one or more sub-ranges of the 2.5. Unicast Addresses IPv6 unicast addresses are aggregatable with prefixes of arbitrary There are several types of unicast addresses in IPv6, in particular, |
IPv6 节点可能对其 IPv6 地址的内部结构有相当多的了解,也可能了解得很少,这取决于节点所扮演的角色(例如,主机与路由器)。最起码,一个节点可以认为单播地址(包括它自己的)没有内部结构: | 128 位 | 稍微复杂一点的主机(但仍然相对简单)可能会额外意识到其连接到的链路的子网前缀,不同的地址可能有不同的 n 值: | n 位 | 128-n 位 | 尽管非常简单的路由器可能对 IPv6 单播地址的内部结构一无所知,但路由器通常会知道用于路由协议操作的一个或多个层次边界。已知的边界将根据路由器在路由层次中所处的位置而有所不同。 除了上文讨论的子网边界的认知外,节点不应对接口标识符以外的 IPv6 地址结构做出任何假设。 2.5.1 接口标识符 IPv6 单播地址中的接口标识符用于识别链路上的接口。它们必须在子网前缀内是唯一的。建议不要在同一链路上的不同节点之间分配相同的接口标识符。在某些情况下,它们也可能在一个更广泛的范围内唯一。在某些情况下,接口的标识符将直接从该接口的链路层地址派生而来。只要这些接口连接到不同的子网,在同一节点上的多个接口可以使用相同的接口标识符。 需要注意的是,接口标识符的唯一性独立于 IPv6 地址的唯一性。例如,可以用本地范围的接口标识符创建一个全球单播地址,也可以用全局范围的接口标识符创建一个链路本地地址。 |
IPv6 nodes may have considerable or little knowledge of the internal | 128 bits | A slightly sophisticated host (but still rather simple) may | n bits | 128-n bits | Though a very simple router may have no knowledge of the internal Except for the knowledge of the subnet boundary discussed in the 2.5.1. Interface Identifiers Interface identifiers in IPv6 unicast addresses are used to identify Note that the uniqueness of interface identifiers is independent of |
对于所有单播地址,除了以二进制值 000 开头的地址外,接口标识符需要是 64 位长,并且必须按照修改后的 EUI-64 格式构建。 基于修改后的 EUI-64 格式的接口标识符可以具有全局范围,当它们从全局令牌(例如 IEEE 802 的 48 位 MAC 地址或 IEEE EUI-64 标识符 [EUI64])派生时;或者在没有全局令牌可用时(例如串行链路、隧道端点),或当全局令牌不受欢迎时(例如出于隐私考虑的临时令牌 [PRIV]),可以具有本地范围。 当从 IEEE EUI-64 标识符形成接口标识符时,修改后的 EUI-64 格式接口标识符通过反转 "u" 位(在 IEEE EUI-64 术语中为全局/本地位)来形成。在结果得到的修改后的 EUI-64 格式中,"u" 位设置为 1 表示全局范围,设置为 0 表示本地范围。IEEE EUI-64 标识符的前三个八位组的二进制形式如下:
以互联网标准比特顺序书写,其中 "u" 是全局/本地位,"g" 是个体/组位,"c" 是公司 ID 的比特。附录 A,“创建修改后的 EUI-64 格式接口标识符”,提供了关于创建基于修改后的 EUI-64 格式的接口标识符的例子。 反转 "u" 位来形成接口标识符的动机是为了在硬件令牌不可用时,让系统管理员能够轻松地手动配置非全局标识符。例如,这预计会在串行链路和隧道端点的情况下出现。另一种选择将是使用如 0200:0:0:1, 0200:0:0:2 等形式,而不是更简单的 0:0:0:1, 0:0:0:2 等形式。 IPv6 节点不需要验证使用设置了全局 "u" 位的修改后 EUI-64 令牌创建的接口标识符是否唯一。 在修改后的 EUI-64 格式标识符中使用全局/本地位是为了允许未来技术的发展,这些技术可以利用具有全局范围的接口标识符。 |
Modified EUI-64 format-based interface identifiers may have universal Modified EUI-64 format interface identifiers are formed by inverting 0 0 0 1 1 2 written in Internet standard bit-order, where "u" is the The motivation for inverting the "u" bit when forming an interface IPv6 nodes are not required to validate that interface identifiers The use of the universal/local bit in the Modified EUI-64 format |
形成接口标识符的细节在相应的“IPv6 over <链路>”规范中定义,例如“IPv6 over 以太网”[ETHER] 和“IPv6 over FDDI”[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 全球单播地址的一般格式如下: | n 位 | m 位 | 128-n-m 位 | 其中全球路由前缀是分配给站点(一组子网/链路)的(通常是分层结构的)值,子网 ID 是站点内链路的标识符,而接口标识符如第 2.5.1 节所定义。 |
The details of forming interface identifiers are defined in the 2.5.2. The Unspecified Address The address 0:0:0:0:0:0:0:0 is called the unspecified address. It The unspecified address must not be used as the destination address 2.5.3. The Loopback Address The unicast address 0:0:0:0:0:0:0:1 is called the loopback address. The loopback address must not be used as the source address in IPv6 2.5.4. Global Unicast Addresses The general format for IPv6 Global Unicast addresses is as follows: | n bits | m bits | 128-n-m bits | where the global routing prefix is a (typically hierarchically- |
除了以二进制 000 开头的地址外,所有全球单播地址都有一个 64 位的接口标识符字段(即 n + m = 64),其格式如第 2.5.1 节所述。以二进制 000 开头的全球单播地址对于接口标识符字段的大小或结构没有这样的限制。 以二进制 000 开头的全球单播地址的例子包括在第 2.5.5 节中描述的嵌入了 IPv4 地址的 IPv6 地址。从非 000 二进制值开始的全球地址(因此具有 64 位接口标识符字段)的一个例子可以在 [GLOBAL] 中找到。 2.5.5 嵌入了 IPv4 地址的 IPv6 地址 定义了两种类型的 IPv6 地址,它们在地址的低 32 位中携带了一个 IPv4 地址。这些是“IPv4 兼容的 IPv6 地址”和“IPv4 映射的 IPv6 地址”。 2.5.5.1 IPv4 兼容的 IPv6 地址 “IPv4 兼容的 IPv6 地址”是为了协助 IPv6 过渡而定义的。“IPv4 兼容的 IPv6 地址”的格式如下: | 80 位 | 16 | 32 位 | 注意:在“IPv4 兼容的 IPv6 地址”中使用的 IPv4 地址必须是一个全局唯一的 IPv4 单播地址。 “IPv4 兼容的 IPv6 地址”现已弃用,因为当前的 IPv6 过渡机制不再使用这些地址。新实现或更新的实现不需要支持这种地址类型。 2.5.5.2 IPv4 映射的 IPv6 地址 定义了另一种包含嵌入 IPv4 地址的 IPv6 地址类型。这种地址类型用于将 IPv4 节点的地址表示为 IPv6 地址。“IPv4 映射的 IPv6 地址”的格式如下: |
All Global Unicast addresses other than those that start with binary Examples of Global Unicast addresses that start with binary 000 are 2.5.5. IPv6 Addresses with Embedded IPv4 Addresses Two types of IPv6 addresses are defined that carry an IPv4 address in 2.5.5.1. IPv4-Compatible IPv6 Address The "IPv4-Compatible IPv6 address" was defined to assist in the IPv6 | 80 bits | 16 | 32 bits | Note: The IPv4 address used in the "IPv4-Compatible IPv6 address" The "IPv4-Compatible IPv6 address" is now deprecated because the 2.5.5.2. IPv4-Mapped IPv6 Address A second type of IPv6 address that holds an embedded IPv4 address is |