昨天学习了IPv6的基础概念,了解了IPv6的由来以及地址格式,今天继续学习下IPv6的地址分类与表示。
一、IPv6地址缩写规范
IPv6地址的长度为128 bit。一般用冒号分割为8段,每一段16 bit,每一段内用十六进制表示。
那128bit的概念是怎样的?
-
IPv4地址数量为2^32次方=4294967296个地址 -
IPv6地址数量为2^128次方=2^96次数 * 2^32次方,夸张地说地球上每一粒沙子都可以分配一个IPv6地址
这里还涉及到一个十六进制的转换。
二进制是一种基数为2的数制系统,它仅使用两个符号(数字)来表示数值:0和1。在二进制中,每一位(bit)都有特定的权重,并且这些权重是以2的幂次方递增的,二进制是从右向左数,右边是低位。
十进制(Decimal)是我们日常生活中最常用的一种数制系统,其基数(base)为10,即逢10进1。在十进制中,每一位数的值由其所在的位置(称为位权)决定,并且可以用0到9这十个阿拉伯数字来表示任何数值,如0,1,2,3,4,5,6,7,8,9。
十六进制(Hexadecimal)是一种逢16进1的数制系统,广泛应用于计算机科学、数字电路设计等领域。它使用16个符号来表示数值,这些符号包括0到9的阿拉伯数字以及A到F的字母(其中A代表10,B代表11,C代表12,D代表13,E代表14,F代表15)。
十进制 | 十六进制 | 二进制 |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
2 | 2 | 10 |
3 | 3 | 11 |
4 | 4 | 100 |
5 | 5 | 101 |
6 | 6 | 110 |
7 | 7 | 111 |
8 | 8 | 1000 |
9 | 9 | 1001 |
10 | A | 1010 |
11 | B | 1011 |
12 | C | 1100 |
13 | D | 1101 |
14 | E | 1110 |
15 | F | 1111 |
再以上面的地址示例:2001:0DB8:2345:CD30:1230:4567:89AB:CDEF
-
每一段为16bit,但是只看到了4个数字,因此每个数字或字母表示4个bit,IPv6地址二进制换算: -
2001:2-->0010,0-->0000,0-->0000,1-->0001 -
0DB8:0000 1101 1011 1000 -
0010000000000001:0000110110111000:........
如果IPv6地址都写成128bit的方式表达是不是很难记得住地址呢?所以这里需要采用标准的缩写规范。
-
每组16 bit的单元中的前导0可以省略,但是如果16 bit单元的所有比特都为0,那么至少要保留一个“0”字符;拖尾的0不能被省略。 -
一个或多个连续的16 bit字符为0时,可用“::”表示,但整个IPv6地址缩写中只允许有一个“::”。
简单说就是每一段里面如果是左边有0可以省略,如果一段都是0可以缩写为:0:,如果有多段16bit都为0可以缩写为::,但是在一个地址中只能用一个::表示。
二、IPv6地址分类
根据IPv6地址前缀,可将IPv6地址分为为单播地址、组播地址和任播地址。IPv6没有定义广播地址(Broadcast Address)。在IPv6网络中,所有广播的应用层场景将会被IPv6组播所取代。
2.1 单播地址
单播地址(Unicast Address):标识一个接口,目的地址为单播地址的报文会被送到被标识的接口。IPv6的单播地址和IPv4的单播地址是一个意思,但是又有一些不同。
单播地址的类型:
-
全球单播地址 -
唯一本地地址 -
链路本地地址 -
环回地址:0:0:0:0:0:0:0:1/128 或者::1/128,与IPv4中的127.0.0.1作用相同 -
未指定地址:0:0:0:0:0:0:0:0/128 或者::/128。该地址作为某些报文的源地址,比如作为重复地址检测时发送的邻居请求报文(NS)的源地址,或者DHCPv6初始化过程中客户端所发送的请求报文的源地址。
一个IPv6单播地址可以分为如下两部分:
-
网络前缀(Network Prefix):n bit,相当于IPv4地址中的网络ID。 -
接口标识(Interface Identify):(128-n)bit ,相当于IPv4地址中的主机ID。
常见的IPv6单播地址如全球单播地址、链路本地地址等,要求网络前缀和接口标识必须为64 bit。
网络前缀:
一般实际情况下,公网IPv6的网络前缀是运营商分配。
IPv6单播地址接口标识: 生成接口标识一般有几种方式:
-
手工配置 -
系统自动生成 -
通过IEEE EUI-64规范生成
接口标识的长度为64 bit,用于标识链路上的接口。在每条链路上,接口标识必须唯一。接口标识有许多用途,最常见的用法就是黏贴在链路本地地址前缀后面,形成接口的链路本地地址。或者在无状态自动配置中,黏贴在获取到的IPv6全球单播地址前缀后面,构成接口的全球单播地址。
2.1.1 全球单播地址
GUA(Global Unicast Address,全球单播地址),也被称为可聚合全球单播地址。该类地址全球唯一,用于需要有互联网访问需求的主机,相当于IPv4的公网地址。
2.1.2 唯一本地地址
ULA(Unique Local Address,唯一本地地址)是IPv6私网地址,只能够在内网中使用。该地址空间在IPv6公网中不可被路由,因此不能直接访问公网。
2.1.3 链路本地地址
LLA(Link-Local Address,链路本地地址)是IPv6中另一种应用范围受限制的地址类型。LLA的有效范围是本地链路,前缀为FE80::/10。
就是全球单播地址类似于IPv4公网地址,全球唯一;唯一本地地址可以在公司内网使用,不能跨越路由器;链路本地地址,就是只在本地链路生效,一般情况下采用自动生成通过IEEE EUI-64规范。
2.2 组播地址
组播地址(Multicast Address):标识多个接口,目的地址为组播地址的报文会被送到被标识的所有接口。只有加入相应组播组的设备接口才会侦听发往该组播地址的报文。因为IPv6没有广播因此一些场景使用组播来实现。
IPv6组播地址标识多个接口,一般用于一对多的通信场景,IPv6组播地址只可以作为IPv6报文的目的地址。
-
Flags:用来表示永久或临时组播组。0000表示永久分配或众所周知,0001表示临时的。 -
Scope:表示组播组的范围。 -
Group ID:组播组ID。
以太网传输单播IP报文时,目的MAC是下一跳的MAC地址,但是在传输组播报文时需要使用组播MAC地址。
被请求节点地址: 当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。该地址主要用于邻居发现机制和地址重复检测功能。被请求节点组播地址的有效范围为本地链路范围。
被请求节点组播组地址的应用场景举例:在IPv6中,ARP及广播都被取消,当设备需要请求某个IPv6地址对应的MAC地址时,设备依然需要发送请求报文,但是该报文是一个组播报文,其目的IPv6地址是目标IPv6单播地址对应的被请求节点组播地址,由于只有目标节点才会侦听这个被请求节点组播地址,所以该组播报文可以被目标节点所接收,同时不会占用其他非目标节点的网络性能。
简单说就是一个类似于广播地址,用于判断地址是否冲突等等。
2.3 任播地址
任播地址(Anycast Address):任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。
任播地址标识一组网络接口(通常属于不同的节点)。任播地址可以作为IPv6报文的源地址,也可以作为目的地址。
总结:今天知识比较多,主要学习了IPv6的地址缩写规范,二进制转换以及一些特殊地址。将IPv6地址分为为单播地址、组播地址和任播地址。IPv6没有定义广播地址(Broadcast Address)。在IPv6网络中,所有广播的应用层场景将会被IPv6组播所取代。单播地址包括:全球单播地址GUA、唯一本地地址ULA、链路本地地址LLA,因此在ipv6中一个接口可以拥有多个ipv6地址。每一个单播地址都会自动生成一个被请求节点的组播地址用于ARP功能,类似于广播地址。
如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子
本文由 mdnice 多平台发布