上篇文章我们介绍了为什么我们需要IPv6以及IPv6的特点,感兴趣的小伙伴可以翻一翻之之前的文章。这次呢,我们要介绍的是IPv6地址分类以及IPv6地址作用,这两个是我们在IPv6学习过程中所必须的知识,那么话不多说,我们下面来了解一下这部分知识。
IPv6地址分类
IPv6将地址分为了三类:单播、组播、任意播,也就是说我们的IPv6的通信方式也从IPv4的单播、组播、广播发生了一个比较大的改变,那就是没有广播了。 What?没有广播了,那么我们的ARP、DHCP这类需要做查找的包咋去发呢? 不要慌张,在IPv6中我们定义了功能更加丰富的组播来代替广播功能,实现一个更加精准定向的数据发送,而且也避免了IPv4网络中广播风暴以及针对广播的一些攻击,如ARP欺骗等,具体是如何实现的继续往下瞅。
注意:IPv6中的任意播并不是广播的替代品,而是一种新型通信方式。
单播地址(Unicast Address):标识一个接口,目的地址为单播地址的报文会被送到被标识的接口。在IPv6中,一个接口拥有多个IPv6地址是非常常见的现象。 组播地址(Multicast Address):标识多个接口,目的地址为组播地址的报文会被送到被标识的所有接口。只有加入相应组播组的设备接口才会侦听发往该组播地址的报文。 任播地址(Anycast Address):任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。
单播地址
可聚合全球单播地址: 全球单播地址定义用于IPv6 Internet。它们是全局唯一的和全局可路由的,类似IPv4公网地址。由前缀、子网ID和接口标识组成。 全局路由前缀:由提供商指定给一个组织机构,一般至少为48bit。目前已经分配的全局路由前缀的前3bit均为001。因此前缀为2000::/3。 子网:组织机构可以用子网ID来构建本地网络(Site),与IPv4中的子网号作用相似。子网ID通常最多分配到第64位。 主机位:用来标识一个设备(Host),与IPv4中的主机ID作用相似。 链路本地地址: 在一个节点启动IPv6协议栈时,节点的每个接口会自动配置一个链路本地地址。该地址专门用来和相同链路上的其他主机通信。 只能在连接到同一本地链路的节点之间使用,广泛应用于邻居发现、无状态地址等。 链路本地地址前缀FE80::/10,将接口ID添加在后面作为地址的低64位。 每一个IPv6接口都必须具备一个链路本地地址。 唯一本地地址: 为了代替站点本地地址的功能,又使这样的地址具有唯一性,避免产生像IPv4的私有地址泄漏到公网而造成的问题,RFC4193定义了唯一本地地址。 唯一本地地址,概念上类似于IPv4中的私网地址,仅能够在本地网络使用,在IPv6 Internet上不可被路由。 唯一本地地址固定前缀FC00::/7。它被分为两块,其中FC00::/8暂未定义,另一块是FD00::/8。 在前面的地址中,我们发现地址中的后64位一般都是接口标识,那么下面我们了解下接口标识生成方法。 接口标识生成方法: 关于接口ID:接口ID为64bit,用于标识链路上的接口,在每条链路上接口ID必须唯一。 接口ID可通过3种方法生成:手工配置、系统自动生成和IEEE EUI-64规范生成。 手工配置:建议在服务器和重要网络设备上配置。 系统通过软件自动生成:保护主机的私密性。 IEEE EUI-64规范自动生成:最常用的方法。(但是可以根据接口MAC地址计算出接口ID) EUI-64方法总体来说就是在中间插入FFFE并且第七位取反就可以得到接口ID,变化过程如下图所示:
组播地址
用来标识一组接口,发往组播地址的数据将被转发给侦听该地址的多个设备。 地址范围:FF00::/8。 虽然从掩码来看只具体约定了前8bit,但前8bit后面的8个位也有具体意义,只有最后32bit标识组ID。
IPv6组播地址的MAC地址映射 在以太网环境中,一个组播IPv6报文必须执行以太网封装。 组播IPv6报文的目的IP地址是组播IPv6地址,而目的MAC地址则必须是组播MAC地址,并且该地址必须与组播IPv6地址对应。 33-33是专门为IPv6组播预留的MAC地址前缀,MAC地址的后32bit从对应的组播IPv6地址的后32bit拷贝而来。 被请求节点组播地址 被请求节点组播地址(Solicited-Node Multicast Address)通过节点的单播或任播地址生成。当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。 一个单播地址或任播地址对应一个被请求节点组播地址。该地址主要用于邻居发现机制和地址重复检测功能。 被请求节点组播地址由固定前缀FF02::1:FF00:0/104和对应IPv6地址的最后24bit组成。被请求节点组播地址的有效范围为本地链路范围。
任意播地址
任播地址是IPv6特有的地址类型,用来标识一组网络接口(通常属于不同的节点)。 发往任播的报文只会被发送到最近的一个接口。 任播地址与单播地址使用相同的地址空间,因此任播与单播的表示无任何区别; 配置时须明确表明是任播地址,以此区别单播和任播。 咱们这次的针对IPv6地址分类就这些,下期我们再来了解下ICMPv6相关的知识,毕竟在IPv6中没有广播了,像ARP这种需要通过广播地址进行运作的协议究竟何去何从呢?我们下期再聊。大家闲来无事可以加群一起交流技术,QQ群:316317765,也可以关注下公众号,后期会有更多资料发布。 ----奎哥原创
|