1、引言
讲知识往往是枯燥无味的,我们先从问题入手。家庭网关(光猫)、路由器是我们每个人或多或少都有所接触的2种设备。现在一般都是光纤入户,通常每个家庭配备一个光猫和一台家用路由器。
目前有许多网络服务已经提供了IPv6支持,例如我们打开某宝时,下面就有标注IPv6,如下图:
为了享受双栈服务,我们需要在路由器配置双栈,这需要对IPv6有些许了解。
2、IPv6地址写法
IPv4协议大家已经很熟悉了,一个常见的局域网地址:192.168.1.1,可以看到,IPv4地址为了方便,采用十进制显示,一共4组,每组范围0~255,写成二进制就是8位,一共32位。
IPv6一共有128位,分为8组,为了方便采用十六进制表示,每组4位,范围从0000 ~ FFFF,写成二进制就是16位。
一个标准的IPv6地址:一个IPv6标准地址:FC00:0000:130F:0000:0000:09C0:876A:130B
IPv6地址的简写很简单,就是“压缩零”。上述地址压缩后:FC00:0:130F::9C0:876A:130B
注意,双冒号只能出现一次,如果出现2次便不清楚各代表几组0。每组中前导0可以省略,但是其它地方的不行。比如“0009”可以写成“9”,但是“9000”就不能写成“9”。
由于没有子网掩码,IPv6用斜线来表示前缀,和IPv4的情况相似。例如,CIDR记法的2001:0DB8:0:CD30:123:4567:89AB:CDEF/60
,表示IPv6的地址是:2001:0DB8:0:CD30:123:4567:89AB:CDEF
,而其子网号是:2001:0DB8:0:CD30::/60
。
3、IPv6前缀
先看问题,如下图:
我们在配置双栈时,会看到“获取前缀”这一选项,要不要勾选呢?如果要,什么时候需要勾选,什么时候不需要呢?带着这些疑问我们来讲下IPv6前缀的作用。
IPv4的“子网掩码”概念大家很熟悉,IPv6没用子网掩码的概念,其实IPv6的前缀就类似于IPv4子网掩码的概念。
IPv4由网络号+主机号组成,如下图:
比如我们常见的C类地址“192.168.1.12”,子网掩码“255.255.255.0”,其中“192.168.1”就是网络号,该子网下可以最多支持254台主机,其中0和255分别表示网段地址和广播地址,主机地址可以在1 ~ 254中进行分配。
IPv6也差不多,由前缀+接口标识两部分组成,如下图:
IPv6分为组播、单播、任意播三种类型。每类又有细分,其中单播又分为全球单播地址、唯一本地地址和链路本地地址等。全球单播地址可理解为公网地址,这一类单播地址是使用得最多的一类,地址的划分方法非常灵活,如下图:
可把整个的128位都作为一个节点的地址。也可用n位作为子网前缀,用剩下的(128 − n)位作为接口标识符(相当于IPv4的主机号)。也可以划分为三级,用n位作为全球路由选择前缀,用m位作为子网前缀,而用剩下的(128 − n − m )位作为接口标识符。目前三级划分比较常见:
前48位表示网络前缀,紧接着的16位是子网ID,最后64位才是接口标识(设备ID)。
一般来说,运营商下发/56或者/60的前缀,路由器再自行从里面挑选一个/64的子网用来给lan中的设备分发ip地址。如果,你的lan中要接入另外一个路由器,那么,就需要上级路由开pd(前缀代理)服务器,给下级分发/61, /62, /63的前缀。也就是说,如果你的路由器不再接下一级路由,仅给终端分配地址,可以不勾选,否则要勾选。
4、获取地址方式
还是先看问题,如下图:
在获取地址方式中有“AutoConfigured”、“DHCPv6”和静态,它们之间有什么区别,要怎么选呢?
IPv6地址分为有状态和无状态,通过DHCPv6获取的一定是有状态的,即不管上层是什么环境,直接建立为有状态连接。“AutoConfigured”则根据环境进行自动配置。即:如果环境是有状态配置,连接自动建立有状态连接;如果环境是无状态配置,连接自动识别为无状态连接。如果你想获取无状态地址,那就只能选择“AutoConfigured”。
5、有状态和无状态
先来看下获取IPv6地址后的情况,如下图:
IP地址状态那列相信大家已经注意到了,上一节也有提到。
需要注意的是,有状态、无状态,仅仅是指ipv6地址的获取方式。有人可能迷糊了,获取方式不是DHCPv6和AutoConfigured吗?DHCPv6和AutoConfigured叫配置方式更准确。DHCPv6(有状态地址自动配置),AutoConfigured(自动配置)。
IPv6协议本身没有 “有状态” 和 “无状态” 这种说法,这是为了管理而进行区分的。
具体来说,以Radvd为代表的无状态自动配置不需要消耗很多机器资源,也不像传统DHCP一样需要维护一个本地数据库来维护地址分配状态,他只是进行广播前缀地址,客户端收到这种广播后再自己使用EUI64算法生成全球唯一的IPv6地址,进行自我配置。
DPCHv6就完全相反,地址池的计算,管理全部是服务器端在做,客户端只是简单的从服务器端取得服务器端已经计算好的地址和其他设置应用到自己身上。
简单说,如果你的地址是自己生成的,那就是无状态;如果是从DHCPv6 服务器获取的那就是有状态。
6、前缀获取方式
先看选项,如下图:
可以看到前缀获取方式有静态和PrefixDelegation两种。PrefixDelegation,前缀代理,简称PD,上文也有提。该方法指路由器作为pd客户端,向上级路由/设备请求一个前缀,这个前缀一般要比/64还要大,不然无法下发给其它设备。其实还有一种路由通知RA(route announcement)方法,这个不是很了解。
网络协议属于《计算机网络》的内容,想了解更多的,可以在笔者公众号:极客随想,回复消息:计算机网络,即可获取更多详细的资料。