IPv6地址

1. 地址格式

IPv6地址有128bit,在这128bit中,前64bit是网络前缀,后64bit是接口标识。在前64bit中,前48bit又是全球可汇总地址,在给一个公司分配IPv6地址时,总是分配给它一个前48bit固定的地址,而后面的16bit又可以被该公司用来做子网地址。这样分配,可以方便做路由聚合。

1.1. 前导零可以省略

一段内可以省略连续的一个零或多个零
2001:0db8:02de:0000:0000:0000:0000:0e13
2001:db8:2de:0000:0000:0000:0000:e13
2001:db8:2de:000:000:000:000:e13
2001:db8:2de:00:00:00:00:e13
2001:db8:2de:0:0:0:0:e13

1.2. 双冒号表示一组0或多组连续的零,但只能出现一次

2001:db8:2de:0:0:0:0:e13
2001:db8:2de::e13

可以省略连续的多段零或只省略一段零
2001:0db8:0000:0000:0000:0000:1428:57ab
2001:0db8:0000:0000:0000::1428:57ab
2001:0db8:0:0:0:0:1428:57ab
2001:0db8:0::0:1428:57ab
2001:0db8::1428:57ab

1.3. IPv4 In IPv6

Ipv4位址可以很容易的转化为IPv6格式。举例来说,如果IPv4的一个地址为135.75.43.52(十六进制为0x874B2B34),它可以被转化为0000:0000:0000:0000:0000:FFFF:874B:2B34 或者::FFFF:874B:2B34。同时,还可以使用混合符号(IPv4-compatible address),则地址可以为::ffff:135.75.43.52。

2. 地址分类

3. 单播地址

3.1. GUA

GUA,global unicast address,全球单播地址,该类地址类似于IPv4中的公网地址。

目前的GUA地址,前3bit固定为001,因此GUA地址范围为:

2000::  —— 3FFF:FFFF:FFFF:FFFF:FFFF:FFFF

GUA地址一共占1/8的IPv6地址。

3.2. ULA

ULA,unique local address,唯一本地地址,该地址类似于IPv4中的私网地址。ULA地址前7为固定,地址格式为:

FC00::/7

因此,FC00:/8和FD00:/8都是ULA地址。一般来说,ULA地址只在网络内部使用,但是ULA在配置时,必须先申请一个40bit的Global ID,因此,基本上所有的ULA地址也不会重复,即使不小心将ULA地址发布到公网上去也不会引起太大问题。这一点和IPv4有极大的不同。

3.3. LLA

LLA,Link-Local Address,链路本地地址。该地址只在本地链路上有效,不能跨路由器路由设备。
该地址地址格式为:

FE80::/10

一般来说,在路由器上,该地址可以由运行IPv6的协议栈自动生成(根据网卡MAC地址),而在PC主机上,处于保护本地MAC地址的考虑,一般按照特殊的算法计算。

3.4. 其他特殊地址

此外,IPv6还有很多其他的特殊地址,比如::/128,该地址为未知地址,类似于IPv4的0.0.0.0,在DHCP阶段发送Discover数据包时会使用。再比如::1/128,该地址为本地地址,发往该地址的数据包不会出网卡,类似于IPv4的127.0.0.1,因此。PING该地址常被用来测试自己的PC是否支持IPv6协议栈。

4. 组播地址

IPv6组播地址为:FF00::/8,具体格式如下所示:

8bit,全1 4bit, flags 4bit, scope Group ID, 112位

在IPv6组播中,flag占4bit,前3bit为0,最后bit如果为0,则表示永久性多播地址,如果为1,标识临时性多播地址。

5. 任播地址

除了上述地址外,IPv6还支持一种任播地址,IPv6任播地址与IPv6单播地址格式完全相同,没有任何区别,如果要配置一个地址是任播地址,则必须手工指名。

在IPv6设计中,可以将多个站点配成相同的任播地址,目的地址是任播地址的数据包在转发时,会自动去往最近的站点。这样会起到负载分担和冗余备份的作用。特别适合用于当一个一个站点在多个地区部署CDN网络的类似情景。