IPv6地址有128位。有3种类型的地址:
单播 Unicast
任播 Anycast,表示一组接口,发给任播的包被转发到最近的一个接口。
多播 Multicast
没有广播broadcast地址,它的功能由多播取代。
地址中的一些fields被给了特定的名字,比如subnet。IPv6中,任何field为全0或全1是合法的。IPv6地址是赋给接口的,而不是nodes。
有3种形式
1 x:x:x:x:x:x:x:x,8个x,每个x是16进制表示的16位,16进制前面的0可以省略,但必须至少有一个数字。
FEDC:BA98:7654:3210:FEDC:BA98:7654:32101080:0:0:0:8:800:200C:417A
2 多个连续的0可以缩写为::,但只能缩写一次。
For example, the following addresses: 1080:0:0:0:8:800:200C:417A a unicast address FF01:0:0:0:0:0:0:101 a multicast address 0:0:0:0:0:0:0:1 the loopback address 0:0:0:0:0:0:0:0 the unspecified addresses may be represented as: 1080::8:800:200C:417A a unicast address FF01::101 a multicast address ::1 the loopback address :: the unspecified addresses
3 对于混合IPV4的地址,采用 x:x:x:x:x:x:d.d.d.d,IPV6的部分可以使用缩写。
0:0:0:0:0:0:13.1.68.3 0:0:0:0:0:FFFF:129.144.52.38 or in compressed form: ::13.1.68.3 ::FFFF:129.144.52.38
格式:
ipv6-address/prefix-length
地址是上面的IPV6地址,后缀部分为0。前缀长度为10进制。
12AB:0000:0000:CD30:0000:0000:0000:0000/60 12AB::CD30:0:0:0:0/60 12AB:0:0:CD30::/60
根据高位确定地址类型:
Address type Binary prefix IPv6 notation Section ------------ ------------- ------------- ------- Unspecified 00...0 (128 bits) ::/128 2.5.2 Loopback 00...1 (128 bits) ::1/128 2.5.3 Multicast 11111111 FF00::/8 2.7 Link-local unicast 1111111010 FE80::/10 2.5.6 Site-local unicast 1111111011 FEC0::/10 2.5.6 Global unicast (everything else)
对于全局单播地址,目前只分配了001前缀的。
单播地址有一个子网前缀和一个interface ID
| n bits | 128-n bits | +------------------------------------------------+----------------+ | subnet prefix | interface ID | +------------------------------------------------+----------------+
interface ID通常是64位,它有一套生成规则,它是全局唯一的。
The Unspecified Address
全0的地址是叫做unspecified address,它不能赋给任何节点,它表示没有地址,一个正在初始化的主机可以使用它作为源地址来学习地址。不能用作目的地址。
The loopback address
::1是环回地址。
Global Unicast addresses
全局单播地址的格式如下
| n bits | m bits | 128-n-m bits | +------------------------+-----------+----------------------------+ | global routing prefix | subnet ID | interface ID | +------------------------+-----------+----------------------------+
除了000开头的全局单播地址,接口ID都是64位。
前缀全是0,后面就是IPV4地址
第一种是:IPv4-compatible IPv6 address
| 80 bits | 16 | 32 bits | +--------------------------------------+--------------------------+ |0000..............................0000|0000| IPv4 address | +--------------------------------------+----+---------------------+
第二种是:IPv4-mapped IPv6 address
| 80 bits | 16 | 32 bits | +--------------------------------------+--------------------------+ |0000..............................0000|FFFF| IPv4 address | +--------------------------------------+----+---------------------+
Local use IPv6 unicast addresses
link-local address
被设计用来作为single link的寻址,如Automatic address configuration,neighbor discovery。
| 10 | | bits | 54 bits | 64 bits | +----------+-------------------------+----------------------------+ |1111111010| 0 | interface ID | +----------+-------------------------+----------------------------+
site-local addresses格式:
| 10 | | bits | 54 bits | 64 bits | +----------+-------------------------+----------------------------+ |1111111011| subnet ID | interface ID | +----------+-------------------------+----------------------------+
用来在一个site内部寻址,而不需要global prefix,尽管subnet ID可以有54位,但是通常globally connected site对于site-local和global prefixes使用相同的subnet。
IPv6任播地址也是单播地址,单纯从地址是无法区分任播地址和单播地址的,这个信息是显式的配置在路由器中的。
对于任何一个分配的anycast address,有一个longest prefix P,表示了属于这个任播地址的所有接口所在的拓扑区域。在P的区域内,路由系统需要一个单独的条目来维护。最差的情况,P是空,表示没有拓扑本地性,整个internet都需要为它维护一个条目。
两个限制:
任播地址不可以作为IPv6包的源地址。
任播地址不能赋给IPv6主机,但是可以赋给IPv6路由器。
subnet router anycast address
是预定义的,格式如下:
| n bits | 128-n bits | +------------------------------------------------+----------------+ | subnet prefix | 00000000000000 | +------------------------------------------------+----------------+
一个IPv6多播地址表示了多个接口组,一个接口可以属于任意多个多播地址。多播地址的格式如下:
| 8 | 4 | 4 | 112 bits | +------ -+----+----+---------------------------------------------+ |11111111|flgs|scop| group ID | +--------+----+----+---------------------------------------------+
flags有4位,目前只用了最低位T,0表示permanently-assigned (well-known)多播地址。1表示non-permanently-assigned (transient)多播地址。
scop表示多播组的范围
0 reserved 1 interface-local scope 2 link-local scope 3 reserved 4 admin-local scope 5 site-local scope 6 (unassigned) 7 (unassigned) 8 organization-local scope 9 (unassigned) A (unassigned) B (unassigned) C (unassigned) D (unassigned) E global scope F reserved
pre-defined multicast addresses
使用下面这些Group IDs,不管是啥scope,如果T等于0,就是非法的。
Reserved Multicast Addresses: FF00:0:0:0:0:0:0:0 FF01:0:0:0:0:0:0:0 FF02:0:0:0:0:0:0:0 FF03:0:0:0:0:0:0:0 FF04:0:0:0:0:0:0:0 FF05:0:0:0:0:0:0:0 FF06:0:0:0:0:0:0:0 FF07:0:0:0:0:0:0:0 FF08:0:0:0:0:0:0:0 FF09:0:0:0:0:0:0:0 FF0A:0:0:0:0:0:0:0 FF0B:0:0:0:0:0:0:0 FF0C:0:0:0:0:0:0:0 FF0D:0:0:0:0:0:0:0 FF0E:0:0:0:0:0:0:0 FF0F:0:0:0:0:0:0:0
All Nodes Addresses:
FF01:0:0:0:0:0:0:1
FF02:0:0:0:0:0:0:1
All Routers Addresses:
FF01:0:0:0:0:0:0:2
FF02:0:0:0:0:0:0:2Solicited-node multicast addresses
前缀FF02:0:0:0:0:1:FF00::/104加上接口单播地址的低24位。
一个node,对于每个分配的单播地址和任播地址,被要求计算和加入关联的solicited-node multicast addresses
https://tools.ietf.org/html/rfc3513