IPv4地址总数=232=4,294,967,296
IPv6地址总数=2128= 340,282,366,920,938,463,374,607,431,768,211,456
2019 年 11 月 25 日已分配完公网 IPv4 地址,以后就没有多余地址可以分配了。在使用IPv4时为了节省带宽和IP地址使用了无类域间路由选择(CIDR)和网络地址转换,还有变长子网掩码(VLSM),都为了节约使用有限的IP资源。全球近75亿人口,对于连接因特网的使用量将会从现在的百分之十几逐步增加,IPv4地址空间远远不足。再看目前国内的发展,移动网络、物联网、城域网的高速增长需要IPv6来实现。
前面我们讲到对于IPv4节点的配置比较复杂;还有就是IPv4地址分配杂乱无章,没有层次性,网络设备需要维护庞大的路由表项;常被诟病的安全性问题, IPv4在网络层没有安全性可言,安全性一直被认为是由网络层以上的层负责;IPv4包头复杂性,使得网络节点处理的效率不高。
有很多人觉得IPv6太长难于记忆,那我们下面来对IPv6详述来帮助理解,在之前说一说IPv6的好处,采用新标准IPSec,安全性提高;由于报头简单查找效率提高;允许设备在网络之间漫游,不会中断连接;能自动配置,实现即插即用;能更好的支持QoS;IPv6没有广播使用的是组播可避免在IPv4中的广播风暴。
IANA 网际网络号码分配局:ICANN的IANA部门负责将IP地址分配给5个区域性的互联网注册机构RIR ,比如APNIC,它负责亚太地区的IP分配。
RIR 区域网际网路注册管理机构:RIR将地址进一步分配给区域内大的LIR/ISP,比如:APNIC区域中国的CNNIC。
LIR/ISP 运营商:LIR/ISP再根据自己的情况,将IP地址分配给机构或者直接分配给用户,比如将IPv4 A类地址分配给一个超大型机构,而将IPv4 C类地址分配给一个中型企业。
IPv6使用十六进制,由8个16比特的部分构成,也就是分为8段,使用“:”分隔。
IPv4使用二进制,由4个8比特的部分构成,分为4段,使用“.”分隔。
IPv6地址和Pv4地址网络前缀
在IPV6中掩码只能使用CIDR表示。
简写的原则:省略IPv6地址各分段里前导0;地址中包含的连续全为0的组,可以用双冒号“::”来代替。
2001:0410:0000:0001:0000:0000:0000:45ff/64
A、省略前前导0
2001:410:0: 1:0:0:0:45ff/64
B、地址中包含的连续全为0的组,可以用双冒号“::”来代替。一个地址中“::”只能出现一次。
2001:410:0:1::45ff/64
fe80:0000:0000:0000:0000:0000:0000:0009–>fe80::9
现在看很多资料这一块比较混乱,各个时期的,各个版本的都不太一样,为什么会出现这种情况,主要是IANA负责将该段地址范围内的地址分配给多个区域互联网注册管理机构(RIR)。RIRIPv6地址空间中还有很多地址尚未分配,还有待发展空间,有很多不确定性。我们主要记住IPv6地址分为单播地址、任播地址、组播地址三种类型。
标识单台设备的地址。
IPv6单播地址分类(根据地址范围):
A、全球单播地址
带有全球地址的数据包可被转发或者汇总到全球网络的任何部分-RFC3587,可路由的公有地址,与IPv4中的单播地址类似。
范围:2000:0000:0000:0000:0000:0000:0000:0000~3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
压缩后:2000::/3
由于是16进制2由4位组成0010,前缀是3前三位是固定的001,后一位可以变化,后45位是全局路由前缀,由于是可路由的公有地址,要从 ISP 或区域 Internet 注册机构(Regional Internet Registry,RIR)获取。全局路由前缀+子网ID总计是64位,就构成IPv6的网络地址部分。与192.168.1相似。
后16是子网ID,与C类IP里节点地址中1网络位相似,与IPv4不同地方是IPv6单独使用了16位来作为子网位,而不似IPv4采用在节点地址占用主机地址来划分子网。这样就有216= 65535 个子网,需要记住的是在IPv6地址自动分配时,子网地址优先在网络地址上进行分配。
关于接口ID:之所以叫做接口ID,是因为一个设备可以拥有不止一个IPv6接口,所以标识接口比标识一个设备更准确。但是一个接口又可以有多个IPv6地址,所以并不是唯一的,接口ID可以手动指定也可以自动生成。
在2000::/3全球单播地址地址范围中还为文档示例预留了地址空间,例如2001:0DB8::/32。
B、链路本地单播地址前缀为FE80::/10。
链路本地地址只能在连接到同一本地链路的节点之间使用。
可以在自动地址分配、邻居发现和链路上没有路由器的情况下使用链路本地地址。以链路本地地址为源地址或目的地址的IPv6报文不会被路由器转发到其他链路。只能在连接到同一本地链路的节点之间使用。
链路本地地址的前缀是FE80::/10。
当一个节点启用 IPv6 时自动生成,其固定的前缀+EUI-64规则形成的接口标识。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。所以链路本地地址广泛应用于邻居发现,无状态地址配置等应用。
注意:在本链路上,路由表中看到的下一跳都是对端的Link Local地址,不是公网IP地址。只能在连接到同一本地链路的节点之间使用,不能跨越路由。
C、唯一本地地址前缀为 fc00::/7。
类似于IPv4中的私网地址,任何没有申请到提供商分配的全球单播地址的组织机构都可以使用唯一本地地址,唯一本地地址只能在本地网络内部被路由转发而不会在全球网络中被路由转发。
该地址包含一个 40 位的伪随机数,以减少当网站合并或数据包误传到网络时碰撞的风险。
D、未指定地址。
形式:::/128,即 0:0:0:0:0:0:0:0。表示地址未指定,或者在写默认路由时代表所有路由。
E、环回地址
::1/128,即 0:0:0:0:0:0:0:1。相当于 IPv4 中的回环地址 lo 127.0.0.1,表示节点自已。
F、内嵌IPV4地址的IPV6地址
映射IPV4的IPV6地址–仅用于拥有IPV4和IPV6双协议栈节点的本地范围。
其中高80bit设为0,后16bit设为1,再跟IPV4地址。
0000:0000:0000:0000:0000:ffff:206.123.31.2
0000:0000:0000:0000:0000:ffff:ce7b:1f01
在 IPv6 中没有广播的概念,而是使用用组播来代替,因此 IPv6 中存在大量的组播使用。
FF00::/8—FFFF::/8,所有IPv6组播地址都以FF开始。
IPv6组播地址是由前缀、标志(Flag)字段、范围(Scope)字段以及组播组ID(Group ID)4个部分组成:
前缀固定1111 1111
标志(Flag)字段:前3位设为0,最后一位定义地址类型:值为0时,表示当前的组播地址是由IANA所分配的一个永久分配地址;值为1时,表示当前的组播地址是一个临时组播地址(非永久分配地址)。
为方便记忆 0=永久分配 1=本地临时
范围字段(Scope):
二进制 | 十六进制 | 范围类型 |
---|---|---|
0001 | 1 | 本地接口范围 |
0010 | 2 | 本地链路范围 |
0011 | 3 | 本地子网范围 |
0100 | 4 | 本地管理范围 |
0101 | 5 | 本地站点范围 类似组播的私网地址 |
1000 | 8 | 组织机构范围 |
1110 | E | 全球范围 类似组播的公网地址 |
组播组ID(Group ID):目前,RFC2373并没有将所有的112位都定义成组标识,而是建议仅使用该112位的最低32位作为组播组ID,将剩余的80位都置0,这样,每个组播组ID都可以映射到一个唯一的以太网组播MAC地址(RFC2464)。
FF02=固定前缀 永久分配 本地链路范围
地址范围 | 描述 |
---|---|
FF02::1 | 链路本地范围所有节点 |
FF02::2 | 链路本地范围所有路由器 |
FF02::3 | 链路本地子网范围 |
FF02::5 | 链路本地范围所有OSPF路由器 |
FF02::6 | 链路本地范围所有OSPF的DR路由器 |
FF02::9 | 链路本地范围所有运行RIP的路由器 |
FF02::A | 链路本地范围所有运行eigrp的路由器 |
被请求节点的组播地址:
一种特殊的组播地址,对于节点或路由器的接口上配置的每个单播和任意播地址,都会自动生成一个对应的被请求节点组播地址。注意链路本地单播地址也会生成一个被请求节点的组播地址。
工作范围:只在本地链路上有效
特点:
A、在本地链路上,被请求节点的组播地址组中通常只包含一个用户
B、只要知道一个节点的IPV6地址,就能计算出它的被请求节点的组播地址
作用:
A、在IPV6中,没有ARP。ICMP代替了ARP的功能,被请求节点的组播地址被节点用来获得相同本地链路上邻居节点的链路层地址。
B、用于重复地址检测DAD,在使用无状态自动配置将某个地址配置为自已的IPV6地址之前,节点利用DAD验证在其本地链路上该地址是否已经被使用。
前缀:FF02:0000:0000:0000:0000:0001:FFxx:xxxx/104
FF02::1:FFxx:xxxx/104
如何产生:被请求节点组播地址的前104位固定,将IP地址的后24位移下来填充到后面就可以了。
例如:IPv6—2001::2234:5678/64
被请求节点组播地址—FF02::1:FF34:5678/104,其中FF02::1:FF为固定部分,共104位。
就是一个单播地址分配给多台路由器来使用;发往任播地址的数据包被路由转发给分配了任播地址的;同单播地址相同,不能做为源地址使用。
同一单播地址被分配给多个接口,仅用于路由器。比如我将5台路由器都分配一个2001::3的单播地址,当其中一台主机请求某一服务或者特定数据包时,另一台主机将数据包将发送给其中最近一台路由器接口。利用这一特性,可以提供冗余服务,连接多台服务器,路由器都设置成为相同的地址,当其中一条线路中断时,接收方可以从其它最近的路由器接口获取资源。
将FFFE插入MAC地址的前24位与后24位之间,并将第7位的0改为1即可生成接口ID。
FFFE:1111|1111 1111|1110
在单播MAC地址中,第1个Byte的第7bit是U/L(Universal/Local,也称为G/L,其中G表示Global)位,用于表示MAC地址的唯一性。如果U/L=0,则该MAC地址是全局管理地址,是由拥有OUI的厂商所分配的MAC地址;如果U/L=1,则是本地管理地址,是网络管理员基于业务目的自定义的MAC地址。
在EUI-64接口ID中,第7bit的含义与MAC地址正好相反,0表示本地管理,1表示全球管理,所以使用EUI-64格式的接口ID,U/L位为1,则地址是全球唯一的,如果为0,则为本地唯一。这就是反转该位的原因。