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网络的类似情景。