IPv6 接口标识符 ip地址发展的趋势(转)

来源:百度文库 编辑:神马文学网 时间:2024/04/29 11:53:38
IPv6 接口标识符
单播 IPv6 地址的最后 64 位是接口标识符,该标识符对于 IPv6 地址的 64 位前缀来说是唯一的。IPv6 接口标识符有以下几种:
"
由扩展唯一标识符 (EUI)-64 地址派生而来的 64 位接口标识符。
"
随机生成的接口标识符,随时间而更改以提供一定的隐蔽性。
"
在有状态地址自动配置(例如,通过动态主机配置协议 IPv6 版 [DHCPv6])过程中分配的接口标识符。
基于 EUI-64 地址的接口标识符
RFC 3513 声明,所有使用 001 到 111 之间的前缀的单播地址还必须使用从 EUI-64 地址(由 IEEE 定义的一个 64 位地址)派生的一个 64 位接口标识符。EUI-64 地址可以是分配给网络适配器的地址,也可以是从 IEEE 802 地址派生的地址。
网络适配器的传统接口标识符使用一个叫做 IEEE 802 地址的 48 位地址。它包括一个 24 位的公司 ID(又称制造商 ID)和一个 24 位的扩展 ID(又称板 ID)。唯一地分配给各个网络适配器制造商的公司 ID 和在装配时唯一地分配给各个网络适配器的板 ID 的组合,便构成了一个全局唯一的 48 位地址。此 48 位地址又叫做物理、硬件或 MAC 地址。
图 3-12 描绘了 48 位 IEEE 802 地址的结构。

图 3-12  48 位 IEEE 802 地址的结构
查看大图
IEEE 802 地址内定义的位有:
"
统一/本地 (U/L)
第一个字节中的次低序位指示地址是统一管理的还是本地管理的。如果 U/L 位被设置为 0,则由 IEEE(通过指定的唯一公司 ID)管理该地址。如果 U/L 位被设置为 1,则该地址是本地管理的。网络管理员覆盖了制造商地址,并指定了一个不同的地址。U/L 位是由图 3-12 中的 u 指定的。
"
个体/组 (I/G)
第一个字节中的低序位指示该地址是个体地址(单播)还是组地址(多播)。当设置为 0 时,该地址是一个单播地址。当设置为 1 时,该地址是一个多播地址。I/G 位是由图 3-12 中的 g 指定的。
对于典型的 802 网络适配器地址来说,U/L 和 I/G 位均被设置为 0,对应于统一管理的单播 MAC 地址。
IEEE EUI-64 地址代表一种新的网络接口编址标准。公司 ID 仍旧是 24 位长,但是扩展 ID 为 40 位,这大大增加了为网络适配器制造商提供的地址空间。EUI-64 地址使用 U/L 和 I/G 位的方式与 IEEE 802 地址使用 U/L 和 I/G 位的方式相同。
图 3-13 描绘了 EUI-64 地址的结构。

图 3-13  EUI-64 地址的结构
查看大图
图 3-14 描绘了如何用 IEEE 802 地址创建 EUI-64 地址。您可以在 IEEE 802 地址中的公司 ID 和扩展 ID 之间插入 16 位 11111111 11111110 (0xFFFE)。

图 3-14  将 IEEE 802 地址转换成 EUI-64 地址
查看大图
要获得 IPv6 单播地址的 64 位接口标识符,必须对 EUI-64 地址中的 U/L 位取补码。(如果该位是 1,则将其设置为 0;如果该位是 0,则将其设置为 1。)图 3-15 描绘了对一个统一管理的单播 EUI-64 地址进行的转换。

图 3-15  将一个统一管理的单播 EUI-64 地址转换成 IPv6 接口标识符
查看大图
要从 IEEE 802 地址获得 IPv6 接口标识符,您必须先将 IEEE 802 地址映射为 EUI-64 地址,然后对 U/L 位取补码。图 3-16 描绘了对一个统一管理的单播 IEEE 802 地址进行的转换。

图 3-16  将一个统一管理的单播 IEEE 802 地址转换成 IPv6 接口标识符
查看大图
IEEE 802 地址转换示例
主机 A 的以太网 MAC 地址为 00-AA-00-3F-2A-1C。首先,通过在第三个和第四个字节之间插入 FF-FE 将其转换成 EUI-64 格式,生成 00-AA-00-FF-FE-3F-2A-1C。然后对 U/L 位(第一个字节中的第七位)取补码。第一个字节的二进制形式是 00000000。对第七位取补码后,它变成了 00000010 (0x02)。将最终结果 02-AA-00-FF-FE-3F-2A-1C 转换成冒号十六进制表示形式后,它就变成了接口标识符 2AA:FF:FE3F:2A1C。因此,对应于 MAC 地址为 00-AA-00-3F-2A-1C 的网络适配器的链路本地地址是 FE80::2AA:FF:FE3F:2A1C。
对 U/L 位取补码时,如果地址是统一管理的,请将 0x2 加到第一个字节;如果地址是本地管理的,则从第一个字节减去 0x2。
临时地址接口标识符
在当今基于 IPv4 的 Internet 中,Internet 用户通常连接到某个 Internet 服务提供商 (ISP) 并使用点对点协议 (PPP) 和 Internet 协议控制协议 (IPCP) 来获得一个 IPv4 地址。用户每次连接时,可能会获得一个不同的 IPv4 地址,这使得难以根据 IPv4 地址对拨号用户在 Internet 上的通信量进行跟踪。
对于基于 IPv6 的拨号连接来说,通过路由器发现和无状态地址自动配置建立连接后,用户被分配了一个 64 位前缀。如果接口标识符始终基于 EUI-64 地址(派生自静态 IEEE 802 地址),则无论前缀是什么,攻击者都能够识别出特定节点的通信量,这样就很容易跟踪特定的用户以及特定用户使用 Internet 的方式。为了解决这一问题和提供一定的隐蔽性,RFC 3041 描述了一种随机生成的、随时间更改的备用 IPv6 接口标识符。
初始接口标识符是通过使用随机数字生成的。对于不能为生成未来接口标识符值而存储任何历史信息的 IPv6 系统来说,每次 IPv6 协议初始化时都会生成一个新的随机接口标识符。具有存储能力的 IPv6 系统会存储历史信息值,且 IPv6 协议初始化时通过以下过程创建一个不同的接口标识符:
1.
从存储中检索历史信息值,并根据适配器的 EUI-64 地址来附加该接口标识符。
2.
根据步骤 1 中的数量计算消息摘要 5 (MD5) 哈希算法。哈希会根据输入生成一个固定大小的数学结果。哈希是很容易计算的;但是,很难通过计算来从哈希结果确定输入。
3.
将步骤 2 中计算出的 MD5 哈希的最后 64 位保存为历史信息值,用于下一次接口标识符计算。
4.
取出步骤 2 中计算出的 MD5 哈希的前 64 位,并将第七位设为 0。第七位对应于 U/L 位,该位设置为 0 时表示一个本地管理的 IPv6 接口标识符。得到的结果就是 IPv6 接口标识符。
基于此随机接口标识符生成的 IPv6 地址称为临时地址。临时地址是为那些使用无状态地址自动配置的公用地址前缀生成的。