IPv6的诞生背景
先前我们学习了IPv4,知道了基本的IP地址,是个网络层协议。
而随着网络不断发展,不断更新,规模逐渐庞大起来,IPv4也随之暴露出他的不足,因为使用的是32位点分十进制,也就是说,他只有2的32次方个地址约等于4294967296个地址。
而在2019年11月,IPv4的地址正式被宣布耗尽,为了解决IPv地址不够用的问题,我们引入了NAT技术
但也是杯水车薪,为了彻底解决这个问题,在20世纪90年代,就开始制定IPv6技术标准,到了最近几年,就开始普及应用。
IPv6的优点
- 庞大的地址池
几乎拥有无限的地址空间,3.4×10的32次方个地址,就这么说吧,每平方米可以有7x10的23次方个地址
毫不夸张的说,可以给地球上的沙子全部分配一个地址,都还有富裕的地址空间,更夸张的是,如果地址分配按照每微秒100万个
来算,都要有10的19次方年
才能分配完地址(丧心病狂,单位为年)
- 无需繁琐的配置
终端用户不需要有额外的配置,甚至连DHCP都不需要
- 安全性
在设计之初就考虑到了安全性的问题,QOS等功能
IPv6地址的表示方式
2001:0410:0000:0001:0000:0000:0000:45FF
这是一个IPv6标准格式地址,128位地址被分为8段,每16位为一段,每段转换成一个4位十六进制数,用冒号隔开。
为了缩短长度,可以用压缩表示法
通过对段内前导“0”压缩和全“0”段压缩,来简化地址写法
每段中的前导 0 可以去掉,但保证每段至少有一个数字
一个或多个连续的段内各位全为 0 时,可用::(双冒号)压缩表示,但一个 IPv6 地址中只允许有一个双冒号(::)
IPv6地址构成
在IPv6网络中,取消了网络号、主机号和子网掩码、以及A、B、C类地址的概念
代替为:前缀
、接口标识符
、前缀长度
前缀
前缀的作用域IPv4地址中的网络部分类似,用于标识了这个地址属于哪个网络(网段)
接口标识符
和IPv4地址中的主机部分类似,只不过这个根据MAC地址计算而来,具有全球唯一性,用于标识这个地址在网络中的具体位置
前缀长度
前缀长度的主要作用和IPv4的子网掩码差不多,用于确定地址中哪一部分是前缀,哪一部分是接口标识符
例如,地址 1234:5678:90AB:CDEF:ABCD:EF01:2345:6789/64,/64 表示此地址的前缀长
度是 64 位,所以此地址的前缀就是 1234:5678:90AB:CDEF,接口标识符就是ABCD:EF01:2345:6789
IPv6地址的分类
相比于IPv4地址类的划分,IPv6地址只分了三种:单播地址
、组播地址
、任播地址
单播地址
用来标识一个接口,就和IPv4的单播地址差不多,一个单播地址只能分配给节点上的一个接口,发送到单播地址的数据报文将被传输到此地址所标识的接口
组播地址
用来标识一个范围,一组接口,多个接口可配置相同的组播地址,发送到组播地址的数据报文被传送给此地址所标识的所有接口,IPv6组播地址为FF00::/8
任播地址
任播地址是 IPv6 中特有的地址类型,也用来标识一组接口。但与组播地址不同的是,发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近的一个接口
常用的IPv6地址类型以及格式
- 未指定地址:
地址“::”称为未指定地址,不能分配给任何节点一般在节点获取有效的IPv6地址前会在源报文填入该地址。 - 环回地址:
单播地址 0:0:0:0:0:0:0:1(简化表示为::1)称为环回地址,不能分配给任何物理接口,作用和127.0.0.1相同 - 链路本地地址:
用于链路本地节点之间的通信 - 站点本地地址:
:与 IPv4 中的私有地址类似。使用站点本地地址作为目的地址的数据报文不会被转发到本站点(相当于一个私有网络)外的其它站点。其前缀标识为FEC0::/10
站点本地地址在实际应用中很少使用 - 全球单播地址:
与 IPv4 中的公有地址类似。全球单播地址由 IANA(Internet AssignedNumbers Authority,Internet 地址分配机构)负责进行统一分配,全球单播地址前缀标识为2000::/3
- 组播地址:
地址标识为FF00::/8
常用的预留组播地址有 FF02::1(链路本地范围所有节点组播地址)、FF02::2(链路本地范围所有路由器组播地址)等
接口标识符的生成原理
上面已经提到过了,是由MAC地址计算而来,这种无需配置,由算法自行生成,原理如下图所描述:
IPv6邻居发现协议
这就是我们之间所说无需任何配置就可以连通网络
邻居发现协议的功能有如下几个:地址解析
、路由器发现/前缀发现
、地址自动配置
、地址重复检测
地址解析
和IPv4的ARP类似,IPv6也需要解析链路层地址,就是由邻居发现协议来完成的,通过组播发送邻居请求消息,单播回应邻居通告消息
路由器发现/前缀发现
路由器发现/前缀发现是指主机能够获得路由器及所在网络的前缀,以及其他配置参数
地址自动配置
是指主机根据路由器发现/前缀发现所获取的信息,自动配置IPv6地址,和IPv4中的DHCP类似,主机发送路由器请求,路由器回应路由器通告地址,然后在根据主机生成全球单播地址
详细过程:
相关IPv6配置命令
/*指定接口全球单播地址*/
[RTA-Ethernet0/1] ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length }
/*配置接口使用无状态自动配置IPv6地址*/
[RTA-Ethernet0/1] ipv6 address auto
/*手工指定接口的链路本地地址*/
[RTA-Ethernet0/1] ipv6 address ipv6-address linklocal
/*配置接口自动生成链路本地地址*/
[RTA-Ethernet0/1] ipv6 address auto link-local
/*解除路由器ND消息抑制*/
[RTA-Ethernet0/1] undo ipv6 nd ra halt