IPv6地址划分
如图所示,地址分为三大类:组播、单播、任意播(也称泛播);
单播可分为:全球单播地址(可理解为公网地址---IPv6)、本地链路地址、站点本地地址、回环地址、未指定地址、内嵌IPv4地址。
2000::/3 打头的是可聚合全球单播地址;
FE80::/10 打头的是链路本地单播地址 只在本链路有效,不参与路由;
FEC0::/10 打头的是站点本地地址,类似于IPv4的私有地址;
LZ你仔细看一下会发现有的地址和你的网卡地址或机器的IPv4地址有关系,这跟IPv4/IPv6的过渡性有关。
另外,还有
FF00::/8 打头的为广播地址;
::1为本地环回地址;
全0的为未指定地址。
常见的IPv6地址及其前缀:
::/128即0:0:0:0:0:0:0:0,只能作为尚未获得正式地址的主机的源地址,不能作为目的地址,不能分配给真实的网络接口。
::1/128即0:0:0:0:0:0:0:1,回环地址,相当于IPv4中的localhost(127.0.0.1)
2001::/16全球可聚合地址,由IANA按地域和ISP进行分配,是最常用的IPv6地址,属于单播地址。
2002::/166to4地址,用于6to4自动构造隧道技术的地址,属于单播地址。
3ffe::/16早期开始的IPv66bone试验网地址,属于单播地址。(6bone实验,已经废止)
fe80::/10本地链路地址,用于单一链路,适用于自动配置、邻机发现等,路由器不转发以fe80开头的地址。
fec0::/10本地站点地址(已经废止)
fc00::/7唯一本地地址定义在RFC4193中用来取代site-local地址
ff00::/8组播地址。
::A.B.C.D兼容IPv4的IPv6地址,其中<A.B.C.D>代表IPv4地址。自动将IPv6包以隧道方式在IPv4网络中传送的IPv4/IPv6节点将使用这些地址。(已经废弃)
::FFFF:A.B.C.D是IPv4映射过来的IPv6地址,其中<A.B.C.D>代表IPv4地址,例如::ffff:202.120.2.30,它是在不支持IPv6的网上用于表示IPv4节点。
IPv6单播地址:
linklocal地址本链路有效
sitelocal地址本区域(站点)内有效,一个site通常是个校园网(已经废弃)
unicast单播(单点传送)地址
单播局部地址(ULA)-->已经取代了站点局部地址(RFC4193)
global地址全球有效,即可汇聚全球单播地址
附:全局单播地址和唯一本地单播地址RFC格式
IPv6GlobalUnicastAddressFormat(RFC3587)
| 3 | 45 bits | 16 bits | 64 bits |
+---+---------------------+-----------+----------------------------+
|001|global routing prefix| subnet ID | interface ID |
+---+---------------------+-----------+----------------------------+
1.
2.
3.
4.
UniqueLocalIPv6UnicastAddresses(RFC4193)
| 7 bits |1| 40 bits | 16 bits | 64 bits |
+--------+-+------------+-----------+----------------------------+
| Prefix |L| Global ID | Subnet ID | Interface ID |
+--------+-+------------+-----------+----------------------------+
1.
2.
3.
4.
IPv6基础_常见的IPv6地址及其前缀(一)
https://blog.51cto.com/xiaoshe/1303219
全球单播地址
前3bit 固定001;
地址范围:2xxx:xxxxx/3 - 3FFF: :FFFF;
2001::/16 IPV6因特网地址;
2002::/16 6to4过渡地址;
3ffe::/16 用于6bone测试目的的前缀;
注意:接口标识符:指64bit的MAC地址(未来网络适配器的MAC地址),或者是基于48bit MAC地址扩展为64bit(EUI 64)。在全球单播地址中,规定如2001:BCFF:FEA6::/48表示一个IPv6路由前缀,2001:BCFF:FEA6:6C01::/64表示一个IPv6子网前缀。
2
本地链路地址
固定前缀FE80::/10;当一个节点启用IPv6时自动生成,格式如下图,64位拓展由MAC地址按照EUI 64转换而来。
EUI-64格式:基于MAC地址自动构造;
例如:MAC地址为0012:3400:ABCD;
首先把MAC地址对半分开,插入一个固定值FFFE;
0012:3400:ABCD ----> 0012:34FF:FE00:ABCD;
再把第七位翻转:0----> 1, 1---->0
U/L求反就是将第七位的二进制改写,如果原值是1就改写成0,如果原值是0就改写成1.
0012:34FF:FE00:ABCD ----> 0212:34FF:FE00:ABCD;
最后加上前缀:
FE80::212:34FF:FE00:ABCD;
3
本地站点地址
类似于IPv4中的私有地址,仅在内部网络使用,如打印机;
固定前缀FEC0::/10;
对于IPv6本地站点地址的配置,必须通过DHCPv6进行地址的分配、无状态的前缀公告、或者手工的进行输入。
4
唯一本地地址
ULA,唯一本地地址,概念上相当于私有IP,仅能够在本地网络使用,在IPv6 Internet上不可被路由。上面提到的站点本地地址由于起初的标准定义模糊而被弃用,而后RFC又重新定义了唯一本地地址以满足本地环境中私有IPv6地址的使用。
在RFC4193中标准化了一种用来在本地通信中取代站点本地单播地址的类型。ULA拥有固定前缀FC00::/7,分为两块:FC00::/8暂未定义,FD00::/8定义如下:
5
未指定地址
形式:0:0:0:0:0:0:0:0/128 --> ::/128;
表示地址未指定,或者在写默认路由时代表所有路由;
该地址作为某些报文的源IP地址,比如作为重复地址检测时DAD时发送的邻居请求报文的源地址,或者DHCPv6初始化过程中客户端所发送报文的源IP。
6
回环地址
形式:0:0:0:0:0:0:0:1;
同IPV4中127.0.0.1地址的含义一样,表示节点自已。
7
内嵌IPv4
映射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。
8
组播地址(IPv6通信的核心)
前缀:FFxx::/8;
在IPV6中没有广播的概念,而是使用用组播来代替;因此IPv6中存在大量的组播使用。
标志位为0000表示是永久保留的组播地址,分配给各种技术使用;
标志位为0001表示是用户可使用的临时组播地址;
范围段定义了组播地址的范围,其定义如下:
二进制 十六进制 范围类型
0001 1 本地接口范围
0010 2 本地链路范围
0011 3 本地子网范围
0100 4 本地管理范围
0101 5 本地站点范围 类似组播的私网地址
1000 8 组织机构范围
1110 E 全球范围 类似组播的公网地址
下面是一些组播指定地址:
FF02::1 all nodes 在本地链路范围的所有节点
FF02::2 all routers 在本地链路范围的所有路由器
FF02::5 all ospf routers
FF02::9 all rip routers 所有运行RIP的路由器
FF02::A all eigrp routers 所有运行eigrp的路由器
FF05::2 在一个站点范围内的所有路由器
IPv6地址划分,你会了嘛? - 技术支持 - 广西壮族自治区信息中心 -
可分为三大类:
1、单播地址
2、组播地址
3、任意播地址
单播--Unicast : one to one
·单播地址用于一对一的连接
·IPv6单播地址有以下六种类型:
1-Aggregate Global Unicast Address 2xxx:xxxxx/3 - 3FFF: :FFFF
2001::/16 IPV6因特网地址
2002::/16 6to4过渡地址
2-Link Local Address FE80::/10 (前10位以FE80开头)
3-Site Local Address (Private) FEC0::/10
4-Unspecified Address 0:0:0:0:0:0:0:0/128 => ::/128
5-Loopback Address 0:0:0:0:0:0:0:1/128 => ::1/128
6-IPv4 Compatible Address ::192.168.30.1 => ::C0A8:1E01
以下是一些单播地址的具体说明:
1、可聚合全球单播地址Aggregate global unicast address
由IANA分配的可在全球路由的公网IP地址
目前已分配的前缀:2000::/3 占用了12.5%的IPV6地址空间
2000:0000:0000:0000:0000:0000:0000:0000--3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
这个前缀中总共包含8192个/16的前缀
目前实际用于IPV6因特网运作的前缀:2001::/16
2002::/16 为使用6-TO-4过渡机制的节点保留
3ffe::/16 用于6bone测试目的的前缀
2、本地链路地址:link-local address
当在一个节点启用IPV6,启动时节点的每个接口自动生成一个link-local address
其前缀64位为标准指定的,其后64位按EUI-64格式来构造
注意:在本链路上,路由表中看到的下一跳都是对端的Link Local地址,不是公网IP地址
前缀:FE80::/10
范围:只能在本地链路使用,不能在子网间路由
为何需要link-local--在一个接口可以配置很多IPv6地址,所以学习路由就有可能出现很多下一跳。
所以出现Link Local地址唯一标识一个节点。在本地链路看到下一跳都是对端的Link Local地址。
在 网络重新编址过程中,节点和路由器的Link Local地址不会发生变化,可以很容易地做一个修改,不用担心网络不可达。
R1(config-if)#ipv6 address FE80:0:0:0:0123:0456:0789:0abc link-local 手工指定link-local地址
3、本地站点地址:site-local address
IPV6的私网地址,就像IPV4中的私网保留地址一样
只占用到整个IPV6地址空间的0.1%
前缀:FEC0::/10 其后的54比特用于子网ID 最后64位用于主机ID
范围:只能在本站点内使用,不能在公网上使用
例如:在本地分配十个子网
1、FEC0:0:0:0001::/64
2、FEC0:0:0:0002::/64
3、FEC0:0:0:0003::/64
10、FEC0:0:0:000A::/64
本地站点地址被设计用于永远不会与全球IPV6因特网进行通信的设备,比如:打印机、内部网服务器、网络交换机等
4、未指定地址Unspecified address
形式:0:0:0:0:0:0:0:0
表示地址未指定,或者在写默认路由时代表所有路由
5、回环地址Loopack address
形式:0:0:0:0:0:0:0:1
同IPV4中127.0.0.1地址的含义一样,表示节点自已
6、内嵌IPV4地址的IPV6地址 IPv4 Compatible Address
1、IPV4兼容的IPV6地址--用于在IPV4网络上建立自动隧道,以传输IPV6数据包。
其中高96bit设为0,后面跟32bit的IPV4地址
0000:0000:0000:0000:0000:0000:206.123.31.2
0000:0000:0000:0000:0000:0000:ce7b:1f02
由于这种机制不太好,现在已经不再使用,转而采用更好的过渡机制
2、映射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
EUI-64格式:扩展惟一标识符
在IPV6中,无状态自动配置机制使用EUI-64格式来自动配置IPV6地址
所谓无状态自动配置是指在网络中没有DHCP服务器的情况下,允许节点自行配置IPV6地址的机制。
EUI-64的构造规则--根据接口的MAC地址再加上固定的前缀来生成一个IPV6的地址
工作原理:自动将48bit的以太网MAC地址扩展成64bit,再挂在一个64bit的前缀后面,组成一个IPV6地址
一、将48位的MAC地址从中间分开,插入一个固定数值FFFE
0050:3EE4:4C00-->0050:3EFF:FEE4:4C00
二、将第7个比特位反转,如果原来是0,就变为1,如果原来是1,就变为0
0050:3EFF:FEE4:4C00-->0250:3EFF:FEE4:4C00
三、加上前缀--FE80::0250:3EFF:FEE4:4C00 这就是一个完整的IPV6地址
反转的原因:
在MAC地址中,第7比特为1表示本地管理,为0表示全球管理
在EUI-64格式中,第7位为1表示全球惟一,为0表示本地惟一
组播地址Multicast
在IPV6中没有广播,用组播来代替
前缀:FF00::/8 占用了0.38%的IPV6地址空间
1111 1111 4bit 4bit
|→固定值←||→标志←| |→范围←|
标志位为0000表示是永久保留的组播地址,分配给各种技术使用
标志位为0001表示是用户可使用的临时组播地址
范围段定义了组播地址的范围,其定义如下:
二进制 十六进制 范围类型
0001 1 本地接口范围
0010 2 本地链路范围
0011 3 本地子网范围
0100 4 本地管理范围
0101 5 本地站点范围 类似组播的私网地址
1000 8 组织机构范围
1110 E 全球范围 类似组播的公网地址
下面是一些组播指定地址:
FF02::1 all nodes 在本地链路范围的所有节点
FF02::2 all routers 在本地链路范围的所有路由器
FF02::5 all ospf routers
FF02::9 all rip routers 所有运行RIP的路由器
FF02::A all eigrp routers 所有运行eigrp的路由器
FF05::2 在一个站点范围内的所有路由器
被请求节点的组播地址solicited-node multicast address--重要的东东
一种特殊的组播地址,对于节点或路由器的接口上配置的每个单播和任意播地址,都会自动生成一个对应的被请求节点组播地址。注意link-local address也会生成一个被请求节点的组播地址。
工作范围:只在本地链路上有效
特点:1、在本地链路上,被请求节点的组播地址组中通常只包含一个用户
2、只要知道一个节点的IPV6地址,就能计算出它的被请求节点的组播地址
作用:1、在IPV6中,没有ARP。ICMP代替了ARP的功能,被请求节点的组播地址被节点用来获得相同本地链路上邻居节点的链路层地址
2、用于重复地址检测DAD,在使用无状态自动配置将某个地址配置为自已的IPV6地址之前,节点利用DAD验证在其本地链路上该地址是否已经被使用。
前缀:FF02:0000:0000:0000:0000:0001:FFxx:xxxx/104
FF02::1:FFxx:xxxx/104
如何产生:被请求节点组播地址的前104位固定,将IP地址的后24位移下来填充到后面就可以了
例如:IPv6---2001::1234:5678/64
被请求节点组播地址---FF02::1:FF34:5678/104
其中FF02::1:FF为固定部分,共104位
组播IP地址到MAC地址的映射:
映射规则:组播MAC地址的前16位固定为0x3333,将组播IPV6地址的后32位直接映射到组播MAC地址的后32位就可以了。
例:IPV6地址为--FF12::1234:5678/64
对应的组播MAC地址为--3333:1234:5678
0x3333为固定前缀
例:所有节点的组播地址:FF02::0001
对应的组播MAC地址:3333:0000:0001
任意播地址Anycast address
应用在one-to-nearest(一到近)模式
任意播是多个设备共享一个地址.分配IPv6单播(unicast)地址给拥有相同功用的一些设备.发送方发送一个以任意播为目标地址的包,当路由器接受 到这个包以后,就转发给具有这个地址的离它最近的设备.单播地址用来分配任意播地址.对于那些没有配备任意播的的地址就是单播地址;但是当一个单播地址分 配给不止一个接口的时候,单播地址就成了任意播地址。
例如:Mobile方面的特性,移动设备漫游到其他区域,不必接入原始的接入点,只需要找到最近的即可。
必须的IPV6地址:
一旦节点启用IPV6,那么接口就会自动生成下列地址
1、本地链路地址
2、回环地址
3、所有节点多播地址FF02::1
4、如果是路由器,还会有FF02::2
5、被请求节点的组播地址
如果接口配了一个IPV6的单播地址,还会产生被请求节点的组播地址
《如何在帧中继中写MAP》
注意:必须写两条MAP,一条是所配IPV6地址的MAP,一条是link-local地址的MAP
否则会由于没有MAP映射导致无法PING通。
<IPV6的基本命令>
R1(config)#ipv6 unicast-routing 在路由器上开启IPV6路由功能
R1(config-if)#ipv6 enable 在接口下启用IPV6,会自动生成一个link-local地址
R1(config-if)#ipv6 address 2001::1/64 指定一个IP地址,配置后会自动生成一个link-local地址
R1(config-if)#ipv6 address FE80:0:0:0:0123:0456:0789:0abc link-local 手工指定link-local地址
R1(config-if)#ipv6 address 2001:0410:0:1::/64 eui-64 使用eui-64格式自动生成IPV6地址的低64位
R1(config-if)#ipv6 unnumbered 让本接口使用另一个接口的MAC地址生成源地址
R1(config-if)#ipv6 mtu 1500 配置接口的MTU值
R1(config-if)#ipv6 nd suppress-ra 关闭自动下发前缀
R2(config-rtr)#no split-horizon 关闭水平分割 注意IPV6的水平分割是在进程下关闭,不是在接口下
show ipv6 interface e0 显示IPV6接口的信息,包括IPV6地址,link-local地址,加入的组播地址及被请求节点组播地址
注意:串口和loopback口会借用以太口的MAC地址来生成link-local地址。
Pv6基础_邻居发现协议简介(二)
一、NDP(NeighborDiscoveryProtocol,邻居发现协议)是IPv6的一个关键协议,它组合了IPv4中的ARP、ICMP 路由器发现和ICMP重定向等协议,并对它们作了改进。作为IPv6的基础性协议,NDP还提供了前缀发现、邻居不可达检测、重复地址监测、地址自动配置等功能。(RFC2461)
IPv6基础_邻居发现协议简介(二)_定向
替代ARP:IPv6提供了一种新的确定本地链路上节点链路层地址的方法,这个新的机制混合使用了ICMPv6消息和多播地址。
无状态自动配置:混合使用ICMPv6消息和多播地址配置IPv6地址。
路由器重定向:路由器向一个IPv6节点发送ICMPv6消息,通知它在本地链路上存在一个更好的到达目的网络的路由器地址。
为NDP定义的ICMPv6消息
ICMPv6类型
消息名称
类型133
路由器请求(RS)
类型134
路由器公告(RA)
类型135
邻居请求(NS)
类型136
邻居公告(NA)
类型137
重定向消息
前缀公告和前缀重新编制使用路由器请求(ICMPv6类型133)和路由器公告(ICMPv6类型134)。
DAD使用邻居请求。
用邻居请求和邻居公告消息替代ARP
二、邻居请求和邻居公告是如何工作的?
IPv6中对节点的链路层地址的确定使用邻居请求(ICMPv6类型135)、邻居公告消息(ICMPv6类型136)和被请求节点的多播地址(FF02::1:FFxx:xxx)的组合。
测试环境:节点A与节点B网线直连,节点A主动ping节点B(ping2013:1:1:1::14)
多播地址
ICMPv6消息
被请求节点多播地址(FF02::1:FF:xx:xxxx)
ICMPv6类型135(邻居请求)
ICMPv6类型136(邻居公告)
IPv6基础_邻居发现协议简介(二)_定向_02
ping2013:1:1:1::14
1、节点A要获知节点B的链路层MAC地址,首先发送一个类型为135的ICMPv6消息(邻居请求)到本地链路。
IPv6基础_邻居发现协议简介(二)_邻居发现_03
这个帧的目的mac为33:33:FF:00:00:14是IPv6目的地址FF02::1:FF00:14的多播映射。
映射方法为:
ping2013:1:1:1:a:b:c:d则对应请求节点多播mac地址为33:33:ff:0c:00:0d(红色00不变)
IPv6地址为ff02::1:ff0c:d
2、侦听本地链路上多播地址的节点B获取到这个邻居请求消息,因为目的IPv6地址FF02::1:FF00:14代表它的IPv6地址2013:1:1:1::14相对应的被请求节点多播地址。
3、节点B发送一个邻居公告来应答。可以看到目的mac目的IP已经变为节点A
IPv6基础_邻居发现协议简介(二)_公告_04
此数据包中ICMPv6option字段包含了自己节点B的mac地址。
4、至此,节点A和节点B都知道了对方的mac地址。因此,节点可以在本地链路上通信。
一个节点改变它的链路层地址可以用所有节点多播地址FF02::1发送邻居公告消息,通知其他在本地链路上的节点。本地链路上节点的邻居发现表被新的链路层地址更新。
三、无状态自动配置简单分析:
RFC2462定义了IPv6无状态地址自动配置,主要包含三个机制:
1、前缀公告
前缀公告使用路由器公告(IMCPv6类型134)和所有节点多播地址FF02::1。路由器公告消息在本地链路上周期性地发送所有节点多播地址。
机制
多播地址
ICMPv6消息
前缀公告
所有节点多播地址FF02::1
所有路由器的多播FF02::2
ICMPv6类型134路由器公告
ICMPv6类型133路由器请求
路由器公告包含以下参数
IPv6前缀
生存期
有效生存期:节点地址保持有效状态的时间长度。当这个值过期时,节点的地址变为无效。
首选生存期:节点用无状态自动配置得到的地址保持首选状态的时间。首选生存期小于或等于有效生存期。当这个值过期时,地址废止。节点不能用已经废止的地址建立新的连接,但是节点任可以在有效生存期没有过期期间接受连接。这个参数用于重新编址。
默认路由信息
在IPv6中,节点使用的默认路由器地址是路由器本地链路地址(FF80::/10)。因此,即使前缀重新编址,路由器也是可达的。
标志/选项
可以使用标志来指示节点使用有状态自动配置而不是无状态自动配置。
2、DAD
DAD(DuplicateAddressDectection)重复地址检测,是无状态自动配置和节点启动时的一个NDP。
节点启动时,抓包截图(配置节点Aip地址为2013:1:1:1::99直连节点B已配置该IP)
节点A发送了一个
IPv6基础_邻居发现协议简介(二)_路由器_05
用未指定的地址(::)作为源IPv6地址,用单播地址的请求节点多播地址做为目的IPv6地址。如果在此过程中发现了一个重复地址,这个临时地址就不能分配给接口。如下,如果有一个节点对这个请求应答(可以看到节点B发送了一个目的地址为所有节点的多播地址的ICMPv6类型136邻居公告报文),就说明这个单播地址已被另一个节点使用。
IPv6基础_邻居发现协议简介(二)_路由器_06
在没有应答的情况下,节点就认为该地址是唯一的。
3、前缀重新编址
前缀重新编址由在本地公告前缀的路由器执行,使用包含在路由器公告消息中的时间参数执行这个任务。
首先,站点中的路由器继续公告当前的前缀,但是有效和首选生存期被减小到接近于0的值。然后,路由器开始在本地链路公告新的前缀。因此,在每个本地链路至少有两个前缀共存。这意味着路由器公告消息包含一个旧的和一个新的前缀。
在转换期间,节点使用两个单播地址:
旧单播地址:旧单播地址基于旧的前缀。使用旧地址的当前连接任被处理。
新单播地址:新连接用新的地址来建立。
四、路由器重定向
机制
ICMPv6
路由器重定向
类型137(路由器重定向)
-----------------------------------
©著作权归作者所有:来自51CTO博客作者小佘的原创作品,请联系作者获取转载授权,否则将追究法律责任
IPv6基础_邻居发现协议简介(二)
https://blog.51cto.com/xiaoshe/1303641
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/70254.html