主要分为三类: 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 | +-------------------------------+--------------------------------+ |
前缀决定了不同类型的单播地址,主要有五种类型:
这些类型的地址在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 | +---+-------------------+-----------+----------------------------+ |
2.Link-local地址(FE80::/64)
Link local address |
---|
| 10 bits | 54 bits | 64 bits | +------------+------------------+--------------------------------+ |1111 1110 10| 000 ... 000 | Interface ID | +------------+------------------+--------------------------------+ |
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 | +------------+----------+-----------+----------------------------+ |
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 | |
5.特殊地址(Special IPv6 Address)
在Unicast单播框架下,有以下两个特殊地址:
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地址的结构:
1.Well-known Multicast地址
Address | Description |
---|---|
ff01::1 | Interface-local scope all-nodes multicast address |
ff01::2 | Interface-local scope all-routers multicast address |
ff02::1 | All nodes on the local network segment |
ff02::2 | All routers on the local network segment |
ff02::5 | OSPFv3 AllSPF routers |
ff02::6 | OSPFv3 AllDR routers |
ff02::9 | RIP routers |
ff02::a | EIGRP routers |
ff02::d | PIM routers |
ff02::16 | MLDv2 reports (defined in RFC 3810) |
ff02::1:2 | All DHCP servers and relay agents on the local network site (defined in RFC3315) |
ff05::1:3 | All DHCP servers on the local network site (defined in RFC 3315) |
ff05::2 | Site-local scope all-routers multicast address |
ff0x::fb | Multicast DNS |
ff0x::101 | Network Time Protocol |
ff0x::108 | Network Information Service |
ff0x::114 | Used 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组,以回应自己的物理地址。
注意事项:
三.Anycast地址(任播地址)
IPv6中,Anycast指一个发送方同最近的一组接收方之间的通信。Anycast地址具有以下特点:
预定义的任播地址: Subnet-Router anycast address: 当移动主机需要与网段中的一个agent工作时使用
| n bits | 128-n bits | +------------------------------------------------+----------------+ | subnet prefix | 00000000000000 | +------------------------------------------------+----------------+