IPv6基础: 关于IPv6
1.介绍
2. IPv6 地址
2.1 地址格式
- 地址格式
IPv6地址一共128位(128 bits) 如:2a02:9999:1234:14a:d17c:b621:978c:5ff8
- 压缩零位
如果地址存在连续的零, 可以用双冒号::
来精简表示
例如:2a02:9999:0000:0000:d17c:b621:978c:5ff8
可以表示为2a02:9999::d17c:b621:978c:5ff8
- 地址前缀
类似IPv6的子网掩码, 但是IPv6使用长度来表示子网
比如:2a02:9999::d17c:b621:978c:5ff8/64
, 表示前64位是子网, 后64表示接口ID(主机ID)
2.2 地址类型
2.2.1 单播地址
- 全球单播地址
相当于IPv4的公网IP地址, 在IPv6网络内可以全球路由, 作用域: 整个IPv6互联网.
格式:
- 固定前缀 (3bits) :
001
- 全球路由前缀 (45bits): 这些站点会分配给ISP
- 子网掩码 (16bits): ISP会分配站点内的子网络
- 接口ID (64bits): 接口标识
- 固定前缀 (3bits) :
参考: RFC 4291
-
链路本地地址
用于单一链路内(没有路由器参与的链路)节点的通信, 类似IPv4的169.254.0.0/16(本地链路地址)
格式:
前缀:FB80::/64
应用: 略 -
唯一本地地址 (ULA)
ULA: Unique Local Addresses, 这类地址是私有地址, 不能在IPv6互联网内路由的, 类似与IPv4的私网地址.
在用法上,ULA和IPv4的私有地址十分类似,在局域网内部使用,但它具有近似的全局唯一性. 它的流量不会到达Internet去,
格式:
- prefix(前缀): 固定7bits,
FC00::/7
, 所有本地地址都是7位前缀. - L(标签): 设置为
1
,表示这个地址是局部分配的地址. (0
还没有被定义) - Global ID: 由网络独自随机选择,由于40bits的随机型保证唯一行的概率很大,部署时不需要向一个全球机构注册使用某个前缀
作用: 这样局域网内, ISP发生地址变时, 由于ULA可以保持不变, 网络内部的通信不会受到影响.
- prefix(前缀): 固定7bits,
参考: RFC 4193
-
回环地址 IPv6会分配
::1
或0:0:0:0:0:0:0:1
给回环接口lo
, 类似IPv4的127.0.0.1
-
未指定地址
::
或0:0:0:0:0:0:0:0
, 类似IPv4的127.0.0.1
2.2.2 组播地址
格式:
- 请求节点地址
类似IPv4的ARP协议的功能, 获取目的IP的MAC层地址,由于ARP协议这种会干扰到链路内的所有节点. IPv6则在MAC层地址解析时使用了组播地址, 那么每一IPv6都有一个对应的请求节点地址.
地址由前缀FF02::1:FF00:0/104
, IPv6地址后24bits
组成
格式:
FF02:0:0:0:0:1:FFXX:XXXX
XX:XXXX
: 节点IPv6的后24位
例子: A节点IPv6地址:FE80::2AA:FF:FE28:9C5A
那么A节点的请求节点组播地址是FF02::1:FF28:9C5A
, 且A节点会监听这个地址. B节点需要和A节点通信,那么B节点需要知道A节点的MAC地址, 所以B节点会向A节点发送邻居节点请求信息, A收到这个信息后会发送一个单播的邻居节点通告信息回应.
优点: 在MAC层地址解析时,不需要干扰所有的节点.
2.2.3 任播地址
略
2.2.4 主机IPv6地址
IPv6地址可以给一个接口分配多个IPv6地址:
- 本地链路地址
- 全球唯一地址(公网IP)
- …
2.3 接口ID
IPv6单播地址后64
位用做接口ID, 在该地址的64
位前缀的子网内是唯一的.
获取IPv6接口ID的方式:
- EUI-64地址生成
- 随机生成,随机分配
- DHCPv6
- 手动配置
- …
2.4 IPv6数据包
- IPv6头部: 固定
40字节
- 头部扩展: 长度不定