IPv6地址总长度为128bit,被分为8组,每组为4个十六进制数,用冒号分隔:
例如:FC00:0123:4567:8901:ABFD:0987:0000:0023
可缩写为:FC00:0123:4567:8901:ABFD:0987::23
IPv6中取消了v4中的广播,新增了任意播
😈单播地址:
标识一个接口,目的地址为单播地址的报文会发送到被标识的的接口,且在V6,一个接口能够配置多个地址,并不是v4中的子地址
全局单播地址:
单播地址由前缀、子网ID和接口标识组成
前缀对应v4中网络位,接口ID对应主机位
全局路由前缀:这是运营商给分配的,一般只用48bit
子网:拿到全局路由前缀,可以用子网ID来划分子网,一般子网ID使用18bit,类似v4的子网划分,预留64bit主机位
主机位:用于标识一个设备
链路本地地址(一个广播域内):
当配置v6地址将自动生成一个链路本地地址,该地址专本用来和相同链路上的其他主机通信,每一个ipv6接口都必须具备一个本地链路地址
前10比特固定为FE8,后64位直接将接口ID(单播地址的主机位)填到这里
第一组数化为2进制是这样的(1111 1110 10|xx xxxx)所以像FEB0::也是链路地址
FEB0 =(1111 1110 10|11 0000)前十位不能变后面随便变
唯一本地地址:
唯一本地地址,概念上类似于IPv4中的私网地址,仅能够在本地网络使用,在IPv6Internet上不可被路由。
特殊单播地址:
未指定地址:
0:0:0:0:0:0:0:0/128 或者 ::/128。
该地址作为某些报文的源地址,比如作为重复地址检测时发送的邻居请求报文(NS)的源地址,或者DHCPV6初始化过程中客户端所发送的请求报文的源地址。
环回地址:
0:0:0:0:0:0:0:1/128 或者::1/128.
与IPv4中的127.0.0.1作用相同,用于本地回环,发往:/1的数据包实际上就是发给本地,可用于本地协议栈回环测试。
接口标识的生成方法(主机位):
手工配置:建议在服务器和重要的网络设备上
系统通过软件自动生成:保护主机的私密性
根据 IEEE EUI-64规范自动生成(最常见)
EUI-64是如何产生主机位的?
主要是依靠mac地址,但mac地址只有48位该怎么拓展到64位呢?
通过在mac地址中间插入FFFE来补充却是的16位,注意mac地址的第7个bit要取反
比如:
mac:0012-3400-ABCD
mac二进制:0000 0000 0001 0010 - 0011 0100 0000 0000 - 1010 1011 1100 1101
转化为主机地址,第7bit取反↓
0000 0010 0001 0010 - 0011 0100 (1111 1111 1111 1110) 0000 0000 - 1010 1011 1100 1101
↑(FFFE)↑
EUI-64接口地址:0215:34FF:FE00:ABCD
至此成功将mac转为ip地址:
0012-3400-ABCD --->0215:34FF:FE00:ABCD
👿组播地址:
标识多个交口,目的地址为组播地址的报文会被送到被标示的所有接口,只有加入组播组的设备才会处理本报文
地址范围:FF:: / 8(由FF开头的)
开头后4个bit的1/0代表临时组播/永久组播
再后4为代表组播的范围具体看图片
还有一些预定义的组播地址:
节点范围内:
FF01::1 所有节点的组播地址
FF01::2 所有路由器的组播地址
链路范围内:
FF02::1 所有节点的组播地址
FF02::2 素有路由器的组播地址
FF02::1:FFXX:XXXX(后24比特根据地址填写) 被请求节点组播地址
FF02::5 OSFP路由器组播地址
FF02::6 OSPF的DR路由器组播地址
FF02:😄 所有PIM路由器组播地址
IPV6组播对应的组播MAC
当发送组播时,不光ip地址要是组播地址,MAC地址也要时组播地址,那要如何映射呢?
IPv6组播mac地址要以33-33开头,后32bit用对应的组播IPv6地址填充,如:
ipv6组播: FF02:0000:0000:0000:0000:0000:0000:0001
对应的组播mac:33-33-00-00-00-01
😡任播地址:
任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。(任意播地址只能作为目标地址,不能作为源地址)