IPV6地址分类

主要分为三类: Unicast、Multicast、Anycast

1、Multicast和Anycast都将一个IP地址分配给多个接口,Multicast中所有接口都能收到发往这个IP的包,Anycast只有路由算法计算最近的接口可以收到。

2、Anycast和Unicast共用一个地址空间,从地址表现上一样。

一、Unicast地址

Unicast地址译为"单播地址",可以理解为"点对点"的网络通信,维基中的解释为"每次只有两个实体相互通信,发送端和接收端都是唯一确定的"。一个Unicast地址通常代表一个网络接口(网卡)。

1、自动获取Interface ID的方法

1.1 根据网卡的MAC地址生成Interface ID

Windows XP, Windows Server 2003及大多数Linux发行版都采用这种方式生成Interface ID。
MAC地址共48位,前24位表示厂商代号,后24位为网卡编号。要转成IPv6 Interface ID,首先将这两个24位断开,插入0xFF, 0xFE两个字节,这样也就转成EUI-64地址,然后将EUI-64地址的第7bit换成1(具体步骤请参看下图)。这是因为由于在标准的IEEE 802网卡中,如果该位为0,则表示该地址受IEEE管辖。

EUI-64 Interface ID from MAC address
        |           24 bits          |           24 bits          |
        +----------------------------+----------------------------+
 Mac    |   Organization Unique ID   |        NIC Specific        |
        +----------------------------+----------------------------+
 Mac    | xxxxxx00 xxxxxxxx xxxxxxxx | xxxxxxxx xxxxxxxx xxxxxxxx |
        +----------------------------+----------------------------+
        /                            /\                            \
       /                            /  \                            \
      /                            /    \                            \
     /                            /      \                            \
    /                            /        \                            \
   /                            /          \                            \
  /                            /            \                            \
 /                            /              \                            \
/                            /                \                            \
|                            |    0xFF 0xFE    |                            |
+----------------------------+-----------------+----------------------------+
|          24 bits           |     16 bits     |           24 bits          |
+----------------------------+-----------------+----------------------------+
| xxxxxx00 xxxxxxxx xxxxxxxx |11111111 11111110| xxxxxxxx xxxxxxxx xxxxxxxx |
+-------|--------------------+-----------------+----------------------------+
        ↓ (bit7 to 1)
| xxxxxx10 xxxxxxxx xxxxxxxx |11111111 11111110| xxxxxxxx xxxxxxxx xxxxxxxx |
+----------------------------+-----------------+----------------------------+

例如,假设有一网卡MAC地址为00-15-C5-52-CA-9E,现将其转换成Interface ID:

Example: EUI-64 Interface ID from MAC address
         |           24 bits          |           24 bits          |
         +----------------------------+----------------------------+
 Mac     |   Organization Unique ID   |        NIC Specific        |
         +----------------------------+----------------------------+
 Mac     | 00000000 00010101 11000101 | 01010010 11001010 10011110 |
         +----------------------------+----------------------------+
         /                            /\                            \
        /                            /  \                            \
       /                            /    \                            \
      /                            /      \                            \
     /                            /        \                            \
    /                            /          \                            \
   /                            /            \                            \
  /                            /              \                            \
 /                            /                \                            \
|                            |    0xFF 0xFE    |                            |
+----------------------------+-----------------+----------------------------+
|          24 bits           |     16 bits     |           24 bits          |
+----------------------------+-----------------+----------------------------+
| 00000000 00010101 11000101 |11111111 11111110| 01010010 11001010 10011110 |
+-------|--------------------+-----------------+----------------------------+
        ↓ (bit7 to 1)
| 00000010 00010101 11000101 |11111111 11111110| 01010010 11001010 10011110 |
+----------------------------+-----------------+----------------------------+

IPv6 Interface ID Hex String: 0215:C5FF:FE52:CA9E

1.2 随机生成Interface ID(temporary address)

出于安全考虑,Windows Vista及之后的Windows系统都默认采用随机生成方式产生Interface ID,而不是用EUI-64,可以通过以下命令禁用随机数生成Interface ID:

netsh interface ipv6 set global randomizeidentifiers=disabled

你还可以通过以下命令查看当前系统是以何方式生成的:

netsh interface ipv6 show global

由于Global unicast地址、Link-local地址、Site-local地址以及Unique-local地址这四种类型的IPv6地址由Interface ID决定地址的唯一性,首先讨论这三类IPv6地址

2、Unicast地址(单播地址)的分类

单播地址由前缀(Prefix)和Interface ID组成,如下图:

Unicast address
|            64 bits            |             64 bits            |
+-------------------------------+--------------------------------+
|             Prefix            |          Interface ID          |
+-------------------------------+--------------------------------+

前缀决定了不同类型的单播地址,主要有五种类型:

  • Global unicast地址(全局单点广播地址)
  • Link-local地址(FE80::/64)
  • Site-local地址(FEC0::/10)【已弃用】
  • Unique-local地址(FC00::/7)
  • 特殊地址(Special IPv6 Address)
  • 兼容地址(Compatibility Address)

这些类型的地址在Interface ID确定的情况下就被唯一确定,对应地,它们唯一确定一个网络接口或者主机(但是有时候可以让几块网卡得到相同的IPv6地址)。

2.1 Global unicast地址(全局单点广播地址)

Global unicast address
|       48 bits         |  16 bits  |          64 bits           |
+---+-------------------+-----------+----------------------------+
| 3 |     45 bits       |  16 bits  |          64 bits           |
+---+-------------------+-----------+----------------------------+
|001| Global Routing ID | Subnet ID |        Interface ID        |
+---+-------------------+-----------+----------------------------+
  • Global unicast地址相当于IPv4的Public IP
  • Global unicast地址可以接入Internet,并可以被路由
  • Global unicast地址具有4个字段:
    • 001:Global unicast地址的前缀(2000::/3)
    • Global Routing ID:站点(Site)路由前缀(相当于IPv4的Network ID),站点可以是一个网络公司
    • Subnet ID:表示站点内的子网,最多可以有2^16=65536个子网
    • Interface ID:表示子网内的网络接口(相当于IPv4的Host ID)

2.Link-local地址(FE80::/64)

Link local address
|  10 bits   |     54 bits      |             64 bits            |
+------------+------------------+--------------------------------+
|1111 1110 10|   000 ... 000    |          Interface ID          |
+------------+------------------+--------------------------------+
  • 拥有Link-local地址的节点可以与同一链路(link)上的相邻节点通信
  • Link-local地址以FE80开头,前缀为FE80::/64
  • Link-local地址只能在本地链路使用,不能在子网间路由
  • IPv6协议下,每个网络接口都需要分配一个Link-local地址,即使该接口已经分配了可路由的IPv6地址

3.Site-local地址(FEC0::/10)【已弃用】

2004年9月的RFC 3879已经不建议在新建的IPv6网络中使用Site-local地址,但是现有的IPv6环境仍可继续使用。Site-local由Unique-local地址取代,见下一节。

Site local address
|  10 bits   | 38  bits |  16 bits  |           64 bits          |
+------------+----------+-----------+----------------------------+
|1111 1110 11| 00 .. 00 | Subnet ID |        Interface ID        |
+------------+----------+-----------+----------------------------+

  • Link-local地址以FEC0开头,前缀为FEC0::/10
  • Site-local地址(相当于IPv4的Private IP)
  • Site-local地址用于与同一站点内的其他节点进行通信
  • IPv6路由器根据Subnet ID判断如何处理数据包
  • 含有Site-local地址的数据包不能在站点间路由,仅能在子网间路由
  • Site-local地址必须由DHCPv6服务器进行配置

4. Unique-local地址(FC00::/7)

2005年10月,RFC 4193发布,保留地址块fc00::/7用作IPv6专用网络(Private Network),并定义其为unique local addresses(唯一区域地址, ULA)。fc00::/7被划分为两个/8组:

Unique local address: fd00::/8 group
|  8  bits  |   40 bits   |  16 bits  |         64 bits          |
+-----------+-------------+-----------+--------------------------+
| 1111 1101 | Random bits | Subnet ID |       Interface ID       |
+-----------+-------------+-----------+--------------------------+
|  48-bit routing prefix  |   65536   |
  • fc00::/8 – 尚未定义
  • fd00::/8 
    • 地址格式 fd00::/8
    • 特点:随机生成40位随机二进制,与fd00::/8组合成fd??:????:????::/48

5.特殊地址(Special IPv6 Address)

在Unicast单播框架下,有以下两个特殊地址:

  • 未分配地址(Unspecified address)
    • 地址格式 ::或者0:0:0:0:0:0:0:0
    • 特点:Interface ID全为0
  • 环回地址(Loopback Address)
    • 地址格式 ::1或者0:0:0:0:0:0:0:1
    • 特点:Interface ID为1

6.兼容地址(Compatibility Address)

为了从IPv4时代向IPv6时代过渡,产生了很多IPv6向IPv4网络兼容的过渡地址。这些地址也符合Unicast的特性,即可以确定唯一网卡或主机。

为使现有网络能从IPv4平滑过渡到IPv6,需要用到一些IPv6转换机制。如下是一些较为流行的一些IPv6兼容地址,这些地址能够在特定转化机制下,在IPv4网络中使用:

  a) IPv4-mapped IPv6 addresses

  • 地址格式 ::ffff:w.x.y.z

  b) ISATAP(Intra-Site Automatic Tunnel Addressing Protocal)地址

  • 地址格式 ::0:5EFE:w.x.y.z

  • 任何一个可以用在unicast地址的64位前缀,都可以用作ISATAP地址的前缀

  • 例如Link-local地址(FE80::/64),则有Link-local ISATAP地址FE80::5EFE:w.x.y.z

  • 实现:Windows XP, Windows Vista, Windows 7, Windows Mobile, Linux

  c) 6over4地址

  • 地址格式 ::wwxx:yyzz 其中ww,xx,yy,zz都是十六进制

  • 任何一个可以用在unicast地址的64位前缀,都可以用作6over4地址的前缀

  • 例如Link-local地址(FE80::/64),则有Link-local 6over4地址FE80::wwxx.yyzz

  • 局限:6over4需要IPv4多播支持

  d)Teredo地址

  • 地址格式 2001::/32

  • Teredo地址属于Global Unicast地址

  • Teredo协议将IPv6数据包封装成IPv4 UDP包,这些数据包被转发到Teredo中继上

  • Teredo中继(连接到IPv6网络的Teredo节点)接收、解封这些数据包,并发送到IPv6网络上

  • 局限:Teredo对NAT支持不佳

  e)6to4地址

  • 地址格式 2002:wwxx:yyzz::/48 其中ww,xx,yy,zz都是十六进制

  • 6to4地址属于Global Unicast地址

  • IPv4地址包含在IPv6地址前缀中

  • 和Teredo类似,6to4需要中继服务器

    地址转换示例:

         IPv4 dec:  192 . 0 . 2 . 4

         IPv4 hex:   C0 . 0 . 2 . 4

         IPv4 hex:     C000 0204

         IPv6 pre:2002:C000:0204::/48

  f) IPv4-compatible地址【已弃用】

  • 地址格式 ::w.x.y.z

 

二、Multicast地址(多播/组播地址)

Multicast address
| 8  bits | 4  bits | 4  bits |            112 bits              |
+---------+---------+---------+----------------------------------+
|1111 1111|  Flags  |  Scope  |            Group ID              |
+---------+---------+---------+----------------------------------+

Multicast地址的具有以下特征:

  • 多个节点可以加入到同一Multicast组内
  • 这些节点可以通过共同的Multicast地址监听Multicast请求
  • 一个节点也可以加入多个Multicast组
  • 一个节点可以同时通过多个Multicast地址监听Multicast请求

Multicast地址的结构:

  • Multicast地址前缀为FF00::/8
  • Flags目前有以下两个值:
    • 0000:表示该Multicast地址由IANA组织固定分配,是Well-known Multicast地址(见下节)
    • 0001:表示该Multicast地址尚未被IANA固定分配,是临时Multicast地址
  • Scope表示路由范围:
    • 1 – Interface-local Scope
    • 2 – Link-local Scope
    • 5 – Site-local Scope
  • Group ID用来标识此组的唯一标识

1.Well-known Multicast地址

Well-known IPv6 multicast addresses
AddressDescription
ff01::1Interface-local scope all-nodes multicast address
ff01::2Interface-local scope all-routers multicast address
ff02::1All nodes on the local network segment
ff02::2All routers on the local network segment
ff02::5OSPFv3 AllSPF routers
ff02::6OSPFv3 AllDR routers
ff02::9RIP routers
ff02::aEIGRP routers
ff02::dPIM routers
ff02::16MLDv2 reports (defined in RFC 3810)
ff02::1:2All DHCP servers and relay agents on the local network site (defined in RFC3315)
ff05::1:3All DHCP servers on the local network site (defined in RFC 3315)
ff05::2Site-local scope all-routers multicast address
ff0x::fbMulticast DNS
ff0x::101Network Time Protocol
ff0x::108Network Information Service
ff0x::114Used for experiments

2.Solicited-node multicast地址

IPv4通过ARP广播询问目标主机的MAC地址,但是在IPv6网络中,通过将Solicited-node multicast地址与IPv6 Neighbor Discovery协议相结合,能够有效减少广播范围。Solicited-Node multicast address由前缀FF02:0:0:0:0:1:FF00::/104及Unicast地址或Anycast地址的最后24位产生:

Unicast Address to Solicited-Node multicast address
|             64 bits           |             64 bits            |
+-------------------------------+--------------------------------+
|         Unicast Prefix        |          Interface ID          |
+-------------------------------+----------------------+---------+
                                                       ↓ 24 bits ↓
+------------------------------------------------------+---------+
|                   FF02:0:0:0:0:1:FF                  |         |
+------------------------------------------------------+---------+

下面介绍一下IPv6主机获得目标IPv6主机MAC地址的大致过程,以供参考。
在IPv6中,首先构造和对方IPv6地址相关的Solicited-node Multicast地址,以下是一个典型的转换过程:

Example: Unicast Address to Solicited-Node multicast address
fe80::2aa:ff:fe28:9c5a                      Target address (compressed notation)
fe80:0000:0000:0000:02aa:00ff:fe28:9c5a     Target address (uncompressed notation)
                                -- ----     the last 24-bits
ff02::1:ff00:0000/104                       Solicited-node Multicast Address prefix
ff02:0000:0000:0000:0000:0001:ff00:0000/104    (uncompressed)
---- ---- ---- ---- ---- ---- --            The first 104 bits
ff02:0000:0000:0000:0000:0001:ff28:9c5a     Result
ff02::1:ff28:9c5a                           Result (compressed notation)

然后,再将“Neighbor Solicitation packet”发送给这个地址,具有目标IPv6单播地址的主机一直监听自己所在的Solicited-Node multicast组,以回应自己的物理地址。

注意事项:

  • Solicited-Node multicast address仅在本地链路有效
  • 每个网络接口至少有一个Solicited-Node multicast地址
  • 具有IPv6单播地址的主机一直监听自己所在的Solicited-Node multicast组
  • 主机试图获得Unicast或者Anycast地址的物理地址时,才需要加入Solicited-Node multicast组
  • Solicited-Node multicast地址被用于"邻居发现协议"中,以获得其他Solicited-node的链路层地址

三.Anycast地址(任播地址)

IPv6中,Anycast指一个发送方同最近的一组接收方之间的通信。Anycast地址具有以下特点:

  • Anycast地址语义上与Unicast地址没有差别, 只是Anycast强调一组接口。
  • 发到Anycast地址的数据包仅发送到(路由距离)最近的Anycast节点(不是所有节点)
  • Anycast地址只能用于数据包的目的地址,不能作为主动发起的源地址
预定义的任播地址: Subnet-Router anycast address: 当移动主机需要与网段中的一个agent工作时使用
   |                         n bits                 |   128-n bits   |
   +------------------------------------------------+----------------+
   |                   subnet prefix                | 00000000000000 |
   +------------------------------------------------+----------------+

 

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值