曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4947|回复: 0
打印 上一主题 下一主题

IPv6 中的单点广播地址(Unicast地址)

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2013-8-9 21:06:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Unicast 地址用来代表单一网络接口,例如每一块网卡可以有一个 unicast 地址,当数据包目标是 unicast 地址时,该数据包将发到拥有此 unicast 地址的网络接口。IPv6 的 unicast 地址包含下面几种类型:

    Global unicast 地址


    Link-local 地址


    Site-local 地址


    特殊地址 (special IPv6 address)


    兼容地址 ( compatibility address)


Global unicast 地址 (全局单点广播地址)
IPv6 的 global unicast 地址相当于 IPv4 的 public IP 地址(公网 IP),它们可以被路由与连接到 Internet 。下面是 global unicast 地址结构图:


最左边 3 位固定为 001 。Global unicast 地址的前缀为 2000::/3 ,其中最左边的 2 的二进制为 0010,其左边的 3 位就是 001 。

Global Routing Prefix (全局路由前缀)
全局路由前缀是公司网络所在地(site, 以下将其称为站点)的路由前缀,它类似于 IPv4 的网络 ID (network ID)。 3 个固定的前缀,加上 45 位的 Global Routing Prefix ,一共 48 位被用来分配给公司的站点,Internet 网络上的 IPv6 路由器在收到前缀符合这 48 位格式的数据包时,就会将此数据包路由到拥有此前缀的站点。

Subnet ID (子网 ID)
子网 ID 用来区分站点内的子网,通过这 16 位的子网 ID,可以让公司在一个站点内创建最多 65535 个子网。

Interface ID (接口 ID)
网络接口 ID 用来表示子网内的一个网络接口(例如网卡),它相当于 IPv4 中的主机 ID (host ID)。Interface ID 通过以下两种方式中的一种来产生:

(1) 根据网卡的 MAC 地址生成 Interface ID (Extended Unique Identifier-64) 地址。我们知道,MAC 地址共 48 位,前 24 位是厂商代号,后 24 位是流水号;将其扩展 64 位 EUI 是先将 0xFF 和 0xFE 插入到两个 24 位之间,比如:


然后再修改此 EUI-64 地址,修改方法是,从这个 EUI-64 位地址的左边算起的第 7 位由 0 改为 1 (此位在标准的 IEEE 802 网卡中为 0),最后将此修改后的 EUI-64 地址当作 IPv6 的 Interface ID 。Windows Server 2003 和 Windows XP 自动配置的 IPv6 地址,默认就是用此方法生成的。

(2) 随机数生成 Interface ID :Windows Server 2008, Windows Server 2008 R2,Windows Vista, Windows 7 用此方法生成 Interface ID 来自动配置 IPv6 地址。

Link-local 地址 (本地链接地址)
拥有 link-local 地址的节点使用此地址与同一链接上的临近节点通信。那什么是节点呢?任何一个拥有 IP 地址的设备都可以称为节点,如计算机,打印机,路由器等。一个站点(site)内包含着一或多个子网,这些子网通过路由器等设备连接在一起。每一个子网内包含多个节点,这些节点通过网络接口 (network interface,例如网卡)连接在这个子网上,也就是说这些节点是在同一个链接(link) 上的。

IPv6 节点 (如 Windows Server 2008 R2 主机) 会自动配置 link-local 地址。link-local 地址相当于 IPv4 中利用 Automatic Private IP Addressing 机制获取的 IP 地址 169.254.0.0/16 。link-local 地址的使用范围是该节点所连接的本地链接 (local link) 之内,也就是利用此地址来与同一个链接内的节点通信。下图为 link-local 地址的结构图:


link-local 地址是以 FE80 开头的,其前缀为 FE80::/64 。IPv6 路由器在收到目的地为 link-local 地址的数据包时,绝对不会将其路由到本地链接之外的其他链接。
可以使用 netsh interface ipv6 show address 命令查看一下这个地址:


上图只是截取“本地连接”的这部分信息,由于本机上还有许多其他的接口,这里就不列出来。注意到这个地址的后面还有个 % 符号,后面跟着一个数字 19,这是网络接口索引 (interface index)。实际上,这个 % 后面的数字应该是 ZoneID 。若是 link-local 地址的话,此 ZoneID 就是网络接口索引;若是 site-local 地址的话,ZoneID 就是 site ID 。

为什么 link-local 与 site-local 地址需要 ZoneID 呢?因为它们的前缀可以重复使用,因为会造成使用上的混淆。以 link-local 地址来说 (Zone ID 为接口索引),若你的主机有两张网卡,分别连接到 A 与 B 链接,每块网卡都自动分配到一个 FE80:: 开头的 link-local 地址,假设有一台主机位于 B 链接,其 link-local 地址也是 FE80:: 开头,如果你的主机要与该主机通信的话,由于你的两张网卡地址都是 FE80:: 开头,此时该由那一块网卡发出数据包呢?所以,只要在 IP 地址后面加上网络接口索引,就可以知道是要通过拥有此接口的网卡发出。每一台主机各有自己的接口索引,并不一定会相同。

同理,每一台主机也可能有多块网卡分别连接到多个站点(site),因此也需要通过 ZoneID 来区分(此时它被称为 Site ID)。每一台主机各有自己的 Site ID,并不一定会相同。如果你的主机只连接到 1 个站点,那么 Site ID 为 1。也可以使用 ipconfig 或 ipconfig /all 获得一些 IPv6 的相关信息。

site-local 地址 (本地站点地址)
site-local 地址相当于 IPv4 中的 private IP 地址 (10.0.0.0/8 ,172.16.0.0/12 与 192.168.0.0/16),site-local 地址的使用范围是该节点所链接的站点(local site)之内,也就是用来与同一站点内的节点通信。路由器不会降使用 site-local 地址的数据包转发到其它的站点,因此一个站点内的节点无法使用 site-local 地址与其他站点内的节点通信。IPv6 节点不会自动配置 site-local 地址,而是通过路由器或 DHCPv6 服务器来配置。

下图为 site-local 地址的结构图。site-local 地址的前缀占用 10 位,其前缀为 FEC0::/10 。每一个站点可以通过占用 16 位的 Subnet ID 来划分子网。IPv6 路由器在收到目的地为 site-local 地址的数据包时,并不会将其路由到区域站点(local site)之外的站点。


注意,RFC 3879 已经不赞成在新搭建的 IPv6 网络内使用 site-local 地址,但是现有的 IPv6 环境继续使用 site-local 地址。

特殊地址
下面有 2 个特殊的 IPv6 地址:

(1) 未分配地址 (unspecified address) ,也就是 0:0:0:0:0:0:0:0:: ,它相当于 IPv4 的 0.0.0.0 ,它并不会被用来分配给网络接口,也不会被当作数据包的目的地址。当节点要确认其网络接口所获取的临时地址(tentative address) 是否唯一时,其所发出的确认数据包的来源地址就是使用未分配地址。

(2) 环回地址(loopback address):也就是 0:0:0:0:0:0:0:1 或 ::1 ,它相当于 IPv4 的 127.0.0.1 。我们可以通过环回地址来进行环回测试,以便检查网卡与驱动程序是否可以正常工作。发送到此地址的数据包并不会发送到链接( link )上。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 19:58 , Processed in 0.062801 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表