IPv6基础

IPv4解决地址缺少的办法:
NAPT:一个公网地址和端口号共同映射一个私网地址和端口号
CIDR:无类域间路由(超网)(VLSM的反向应用)

国际IP地址分配方式:
1.ICANN的IANA部门负责将IP地址分配给5个区域性的互联网注册机构RIR ,比如APNIC,它负责亚太地区的IP分配
2.RIR将地址进一步分配给当地的ISP,比如:中国电信和中国移动
3.ISP再根据自己的情况,将IP地址分配给机构或者直接分配给用户,比如将IPv4 A类地址分配给一个超大型机构,而将IPv4 C类地址分配给一个中型企业
IPv6基础_第1张图片

                 ICANN:Internet的中心管理机构
                 IANA:网际网络号码分配局
                 RIR:区域网际网路注册管理机构,负责对本区域的IP地址规划
                 ISP:运营商
     五大RIR:
                 RIPE - 欧洲IP地址注册中心
                 LACNIC - 拉丁美洲和加勒比海Internet地址注册中心
                 ARIN - 美国Internet编号注册中心
                 AFRINIC - 非洲-网络信息中心
                 APNIC - 亚太地址网络信息中心

IPv4地址现状:
IPv4公网地址耗尽。是当前IPv6替代IPv4的最大原动力
Internet用户快速增长,随着科技行业的发展,有更多的用户、更多种类的设备接入公网
IPv4缺乏真正的端到端通信模型。NAT确实能解决私有地址空间与公网互访的问题,但是却破坏了端到端通信的完整性
IPv4无法适应新技术的发展,如物联网等。所有行业都是IPv6的潜在用户
广播机制的存在,对ARP的依赖等,使得IPv4局域网的相关运作问题频发
IPv4对移动性的支持不够理想

临时应对措施:
1991年,IETF为了推迟IPv4地址耗尽发生的时间点,推出分类网络方案
1993年,推出网络地址转换(NAT)与无类别域间路由(CIDR)
但是这些过渡方案皆无法阻止位址枯竭问题的发生,只能减缓它的发生速度,并不能从根本上解决问题
IETF在20世纪90年代提出下一代互联网协议——IPv6,目前IPv6成为公认的IPv4未来的升级版本

IPv6原理描述:
IPv6技术特点:
地址空间巨大:采用128比特标识。128位的地址结构使IPv6理论上可以拥有(43亿×43亿×43亿×43亿)个地址。近乎无限的地址空间是IPv6的最大优势
精简报文结构:使用了新的协议头格式,IPv6数据包有全新的报文头,而并不是仅仅简单地将IPv4报文头中的地址部分增加到128bits而已。在IPv6中,报文头包括固定头部和扩展头部,一些非根本性的和可选择的字段被移到了IPv6协议头之后的扩展协议头中。这使得网络中的中间路由器在处理IPv6协议头时,有更高的效率
实现自动配置和重新编址:IPv6协议内置支持通过地址自动配置方式使主机自动发现网络并获取IPv6地址,大大提高了内部网络的可管理性
支持层次化网络编址:巨大的地址空间使得IPv6可以方便的进行层次化网络部署。层次化的网络结构可以方便的进行路由聚合,提高了路由转发效率
支持端对端安全:IPv6中,网络层支持IPSec的认证和加密,支持端到端的安全
更好的支持QoS:IPv6在包头中新定义了流标签的特殊字段。IPv6的流标签字段使得网络中的路由器可以对属于一个流的数据包进行识别并提供特殊处理。用这个标签,路由器可以不打开传送的内层数据包就可以识别流,这就使得即使数据包有效载荷已经进行了加密,仍然可以实现1对QoS的支持
支持移动特性:采用Routing header和Destination option header等扩展报头,使得IPv6提供了内置的移动性

  IPv6报文格式:IPv6数据包由一个IPv6基本报头、多个扩展报头和一个上层协议数据单元组成
								![](https://img-blog.csdnimg.cn/d28e8ad5d2734a1681a07844607a2560.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

        IPv6基本报头(IPv6 Header):每一个IPv6数据包都必须包含报头,有8个字段,其长度固定为40bytes
                                       基本报头提供报文转发的基本信息,会被转发路径上面的所有路由器解析

        上层协议数据单元(Upper Layer Protocol Data Unit):
                                       上层协议数据单元一般由上层协议包头和它的有效载荷构成,有效载荷可以是一个ICMPv6报文、一个TCP报文或一个UDP报文

        IPv6报头格式中主要字段:
                                        Version:版本号,长度为4bit。对于IPv6,该值为6
                                        Traffic Class:流类别,长度为8bit。等同于IPv4中的ToS字段,表示IPv6数据报的类或优先级,主要应用于QoS
                                        Flow Label:流标签,长度为20bit。IPv6中的新增字段,用于区分实时流量,不同的流标签+源地址可以唯一确定一条数据流,中间网络设备可以根据这些信息更加高效率的区分数据流
                                        Payload Length:有效载荷长度,长度为16bit。有效载荷是指紧跟IPv6报头的数据报的其它部分(即扩展报头和上层协议数据单元)
                                        Next Header:下一个报头,长度为8bit,指明下一个扩展报头(如果存在)或上层协议的类型;作用等同IPv4中protcol,标识上层头部类型
                                        Hop Limit:跳数限制,长度为8bit。该字段类似于IPv4中的Time to Live字段,它定义了IP数据报所能经过的最大跳数。每经过一个路由器,该数值减去1,当该字段的值为0时,数据报将被丢弃
                                        Source Address:源地址,长度为128bit。表示发送方的地址
                                        Destination Address:目的地址,长度为128bit。表示接收方的地址

       扩展报头:扩展报头是可选的,只有需要该扩展报头对应的功能时,数据的发送者才会添加相应扩展报头;
               基本要求:必须是64bit的倍数,便于64位处理器的处理
                          ![](https://img-blog.csdnimg.cn/87550ac1626b4dffa5fbdc00b391f730.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_19,color_FFFFFF,t_70,g_se,x_16)

												

                                        Next Header:下一个报头,长度为8bit。与基本报头的Next Header的作用相同。指明下一个扩展报头(如果存在)或上层协议的类型
                                        Extension Header Length:报头扩展长度,长度为8bit。表示扩展报头的长度(不包含Next Header字段)
                                        Extension Head Data:扩展报头数据,长度可变。扩展报头的内容,为一系列选项字段和填充字段的组合

                若扩展报头有效内容达不到64bit,则使用特定的填充字段填充到64bit的倍数:
                                                 两种方法:1.使用单字节的0填充
                                                                  2.使用多字节的填充字段
										![](https://img-blog.csdnimg.cn/6e6917b27eca4f4397a75871cab32cc4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)



       扩展报头种类:当超过一种扩展报头被用在同一个IPv6报文里时,报头必须按照下列顺序出现

报头类型 Next Header字段值 描述
逐跳选项报头 0 该选项主要用于为在传送路径上的每跳转发指定发送参数,传送路径上的每台中间节点都要读取并处理该字段
应用场景:
1.用于承载巨型载荷—Jumbo Payload Length(长度为32bit)
当出现大于65535字节的数据包,Payload Length无法标识有效数据长度,Payload Length置为0,有效部分用Jumbo Payload Length处理
2.用于路由器提示
3.用于资源预留
目的选项报头 60 目的选项报头携带了一些只有目的节点才会处理的信息。目前,目的选项报文头主要应用于移动IPv6
路由报头 43 路由报头和IPv4的Loose Source and Record Route选项类似,该报头能够被IPv6源节点用来强制数据包经过特定的路由器
分段报头 44 同IPv4一样,IPv6报文发送也受到MTU的限制。当报文长度超过MTU时就需要将报文分段发送,而在IPv6中,分段发送使用的是分段报头

	identification
	M1表示有更多分片,0表示没有分片
	id标识分片是否属于同一个数据流
	根据identification找到数据包的所有分片,再根据偏移量将分片重组

认证报头 51 该报头由IPSec使用,提供认证、数据完整性以及重放保护。它还对IPv6基本报头中的一些字段进行保护(只提供对数据的保护功能)
封装安全净载报头 50 该报头由IPSec使用,提供认证、数据完整性以及重放保护和IPv6数据报的加密,类似于认证报头,但功能更全(除了提供数据的保护,还提供数据的加密功能)

       IPv6和IPv4的区别:
                             1.增加了流标签字段,使用S.IP+Flow Label唯一标识一个数据流,相比于IPv4而言,只需要解析网络层协议,不再需要解析传输层信息
                             2.IPv6由于报头是定长的字段,直接用Payload Length表示有效数据部分,不再需要向IPv4 total(总长度)Length - header Length 得来,减少设备计算
                             3.IPv6取消了校验功能,校验由上层协议完成(UDP或TCP必须具备校验功能);
                                                                         好处:取消重复校验
                             4.IPv6把一些可选功能全部移植到扩展头部,对于不需要扩展功能的路由器需要解析的内容变少,减轻设备压力

         路由负载分担:
                          IPv4基于流负载分担:源目IP、源目端口号、传输层协议类型(五元组)(需要解析三四层参数)
                          IPv6基于流负载分担:流标签+源地址(只需要解析网络层协议,不再需要解析传输层信息)

  IPv6地址分类:
			![](https://img-blog.csdnimg.cn/8ad069a119db45c7991d0cb5dc10b025.png)

         单播地址(Unicast Address):标识一个接口,目的地址为单播地址的报文会被送到被标识的接口。在IPv6中,一个接口拥有多个IPv6地址是非常常见的现象
                        可聚合全球单播地址:
                                                    作用类似于IPv4中的公网地址。这种类型的地址允许路由前缀的聚合,从而限制了全球路由表项的数量
                                        001固定 顶级站点聚合(13bit) 次级站点聚合 接口id                (固定前缀001,建议分配64位)
                                 由前缀、子网ID和接口标识组成,用于IPv6 Internet。它们是全局唯一的和全局可路由的
					                    ![](https://img-blog.csdnimg.cn/73fd9147eed24595bbc224adec92107b.png)

                                全局路由前缀:由提供商指定给一个组织机构,一般至少为48bit。目前已经分配的全局路由前缀的前3bit均为001。因此前缀为2000::/3(IANA)
                                子网:组织机构可以用子网ID来构建本地网络(Site),与IPv4中的子网号作用相似。子网ID通常最多分配到第64位(公司运营商自行分配)
                                接口id(主机位):用来标识一个设备(Host),与IPv4中的主机ID作用相似

                        链路本地地址:在一个节点启动IPv6协议栈时,节点的每个接口会自动配置一个链路本地地址。该地址专门用来和相同链路上的其他主机通信
                                    1.源IP地址是链路本地地址的数据报文,是不能被路由器转发的,链路本地地址只在一条链路有效
                                    2.链路本地地址实现路由协议地址和业务地址解耦,专门为路由协议服务;例如OSPFv3发送的协议报文源IP都是链路本地地址(广泛应用于邻居发现、无状态地址等)
                                                             链路本地地址固定前缀FE80::/10,将接口ID添加在后面作为地址的低64位
                                                             每一个IPv6接口都必须具备一个链路本地地址
                                                             切换全球单播地址,不会影响OSPFv3的正常运行,OSPFv3基于链路本地地址去通信
                                   3.链路本地地址作为路由协议的下一跳地址
                                   4.链路本地地址用来标识设备在链路上的位置
                                   5.如何配置链路本地地址:
                                               在接口下一定要配置一个全球单播地址,链路本地地址才会生效
                                               默认链路本地地址在配置了全球单播地址之后才会生效
                                                            配置方法:1.自动生成:[Huawei-GigabitEthernet0/0/0]ipv6 address auto link-local
                                                                             2.手动,先配链路本地地址,后配全球单播地址 [Huawei-GigabitEthernet0/0/0]ipv6 address FE80::/10 link-local

                        唯一本地地址:IPv6的私网地址,概念上类似于IPv4中的私网地址,仅能够在本地网络使用,在IPv6 Internet上不可被路由(任何没有申请到提供商分配的全球单播地址的组织机构都可以使用唯一本地地址。唯一本地地址只能在本地网络内部被路由转发而不会在全球网络中被路由转发)
                                                由RFC4193定义;
                              作用:为了代替站点本地地址的功能,又使这样的地址具有唯一性,避免产生像IPv4的私有地址泄漏到公网而造成的问题(仅能在一个站点内使用。由于本地站点地址的废除(RFC3879),唯一本地地址被用来代替本地站点地址(RFC4193))
                                唯一本地地址固定前缀FC00::/7。它被分为两块,其中FC00::/8暂未定义,另一块是FD00::/8,其格式如下:
									![](https://img-blog.csdnimg.cn/e8a0bbba38cd42c682f0c449895c8918.png)

                              字段解释:
                                       Prefix:前缀;固定为FD00::/8
                                       L:L标志位;值为1代表该地址为在本地网络范围内使用的地址;值为0被保留,用于以后扩展
                                       Global ID:全球唯一前缀;通过伪随机方式产生(RFC4193)
                                       Subnet ID:子网ID;划分子网使用
                                       Interface ID:接口标识
                              特点:
                                       具有全球唯一的前缀(虽然随机方式产生,但是冲突概率很低)
                                       可以进行网络之间的私有连接,而不必担心地址冲突等问题
                                       具有知名前缀(FC00::/7),方便边缘路由器进行路由过滤
                                       如果出现路由泄漏,该地址不会和其他地址冲突,不会造成Internet路由冲突
                                       应用中,上层应用程序将这些地址看作全球单播地址对待
                                       独立于互联网服务提供商ISP(Internet Service Provider)
		![](https://img-blog.csdnimg.cn/7936bfe9e4c24c5e9599a4d18ff2fb76.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)


                        接口标识生成方法:
                                    接口ID:用于标识链路上的接口,在每条链路上接口ID必须唯一,64bit
                                            对于IPv6 单播地址来说,如果地址的前三bit不是000,则接口标识必须为64位,如果地址的前三位是000,则没有此限制
                                    用途:用于就是黏贴在链路本地地址前缀后面,形成接口的链路本地地址。
                                              无状态自动配置中,黏贴在获取到的IPv6全局单播地址前缀后面,构成接口的全局单播地址
                                    生成方法:
                                            手工配置:建议在服务器和重要网络设备上配置
                                            系统通过软件自动生成:保护主机的私密性
                                            IEEE EUI-64规范自动生成:最常用的方法:
                                                                         由MAC地址产生IPv6地址接口ID
                                                        优点:可以减少配置的工作量,尤其是当采用无状态地址自动配置时(后面会介绍),只需要获取一个IPv6前缀就可以与接口ID形成IPv6地址
                                                        缺点:某些恶意者可以通过二层MAC推算出三层IPv6地址
                                                        生成:把MAC地址拆分成两个部分,在中间插入0xFFFE,把二进制下第七位由0变为1,得到接口标识
									![](https://img-blog.csdnimg.cn/cb2bbe23d5dd41009d245c896c02f357.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)


                        特殊地址:
                                未指定地址:
                                                  0:0:0:0:0:0:0:0/128 或者::/128
                                            应用场景:设备未获取到真正可用的IPv6地址时使用该地址(0.0.0.0)和其他设备进行地址冲突检测和DHCPv6请求消息的源地址
                                环回地址:
                                                 0:0:0:0:0:0:0:1/128 或者::1/128
                                              原先IP v4中使用127.0.0.1-127.0.0.255作为环回网段,浪费IP v4地址,IPv6只使用::1/128作为环回地址
                                              与IPv4中的127.0.0.1作用相同,用于本地回环,发往::/1的数据包实际上就是发给本地,可用于本地协议栈回环测试
                               IPv4兼容地址:
                                               在过渡技术中,为了让IPv4地址显得更加突出一些,定义了内嵌IPv4地址的IPv6地址格式。在这种表示方法中,IPv6地址的部分使用十六进制表示,IPv4地址部分可用十进制格式
                                               该地址已经几乎不再使用

         组播地址(Multicast Address):标识多个(一组)接口,目的地址为组播地址的报文会被送到被标识的所有接口。只有加入相应组播组的设备接口才会侦听发往该组播地址的报文
                      地址范围:FF00::/8              前8bit固定为1
					
                                 Flags:用来表示永久或临时组播组前(3bits 保留为0)
                                                        0000表示 永久分配或众所周知 
                                                        0001表示 临时的
                                 Scope:表示组播组的范围
										![](https://img-blog.csdnimg.cn/c7992a9eba014ec19ce6c719311ad492.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                                                        0:预留
                                                        1:节点本地范围
                                                        2:链路本地范围,例如FF02::1
                                                        5:站点本地范围
                                                        8:组织本地范围
                                                        E:全球范围
                                                        F:预留
                                 Group ID:组播组ID
 
              预定义组播地址:
                       Node-local:设备内部使用的组播地址
                              FF01:0:0:0:0:0:0:1:所有节点的组播地址
                              FF01:0:0:0:0:0:0:2:节点本地范围所有路由器的组播地址
                       Link-local:链路上使用的
                              FF02:0:0:0:0:0:0:1:链路本地范围所有节点的组播地址
                              FF02:0:0:0:0:0:0:2:链路本地范围所有路由器的组播地址
                              FF02:0:0:0:0:1:FFXX:XXXX :Solicited-Node组播地址
                              FF02:0:0:0:0:0:0:5:所有OSPF路由器组播地址
                              FF02:0:0:0:0:0:0:6:所有OSPF的DR路由器组播地址
                              FF02:0:0:0:0:0:0:D:所有PIM路由器组播地址
                       FF05::2:站点本地范围所有路由器组播地址

              IPv6组播地址的MAC地址映射:IPv66组播MAC地址前16bit固定33-33,后32bit由IPv6组播地址后32位映射得到,不会出现地址重叠
							![](https://img-blog.csdnimg.cn/2c97fe9653424a20b2f73d2b945466ce.png)


             被请求节点组播地址:
                              如何生成:接口下一旦配置了全球单播地址,接口就会根据单播地址自动生成被请求节点的组播地址/链路本地地址也会生成被请求节点组播地址
                                       一个被请求节点组播地址可能会映射到多个IPv6地址上
                              地址格式:FF02::1:FF00:0/104:前104位固定,后24位由IPv6地址的后24位映射得到



         任播地址(Anycast Address):是IPv6特有的地址类型,用来标识一组网络接口(通常属于不同的节点)   
                                   格式和全球单播地址一样,因此任播与单播的表示无任何区别,但不能当作IP数据包的源地址,只能作为目的地址,且必须关闭重复地址检测(DAD)
                                             配置时须明确表明是任播地址,以此区别单播和任播
                                   在访问任播地址时,只会选择路由意义上最近的一个任播地址(网络接口)
									![](https://img-blog.csdnimg.cn/38962160a9c545e5977db1f76f462028.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)
	
            IPv6没有定义广播地址(Broadcast Address)

  IPv6基础协议:
           ICMPv6:IPv6的基础协议之一,用于向源节点传递报文转发的信息或者错误(协议号为58(即IPv6报文中的Next Header字段的值))
                 在IPv6中,ICMPv6除了提供ICMPv4的对应功能之外,还有其它一些功能的基础,如邻居发现、无状态地址配置、重复地址检测、PMTU发现等
                                            ICMPv4:1.ping命令:未指定-a,将会使用出接口IP地址作为数据包源地址   
                                                            2.tracert命令:每次发送数据包TTL+1,TTL为0时返回TTL超时,设备检测到数据包经过的地址
                                            ICMPv6:既有ICMP本身的差错检测(ping、tracert),又有地址冲突检测、地址自动配置、类似于ARP的机制
                 ICMPv6报文:
						![](https://img-blog.csdnimg.cn/05899802c6584ba39971bd1d8dd842da.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_11,color_FFFFFF,t_70,g_se,x_16)

                               IPv6上层的Next Header为58,下一个报文为ICMPv6
                               IPv4中protocol为1,上层协议为ICMPv4                                          
                                       Type:表明消息的类型,0至127表示差错报文类型,128至255表示消息报文类型。
                                       Code:表示此消息类型细分的类型。
                                       Checksum:表示ICMPv6报文的校验和
		![](https://img-blog.csdnimg.cn/30cda5579b8541aa91ec8551232357db.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                                目标不可达:当数据包无法被转发到目标节点或上层协议时,路由器或目标节点发送ICMPv6目标不可达差错报文。在目标不可达报文中,类型(Type)字段值为1,代码(Code)字段值为0-4
                                数据包超长(Packet Too Big):如果由于出口链路的MTU小于IPv6数据包的长度而导致数据包无法转发,路由器就会发送数据包超长报文。该报文被用于IPv6路径MTU发现的处理 。数据包超长报文的类型字段值为2,代码字段值为0
                                                                 type=2,code=0代表数据包超过接口的MTU
                                超时(Time Exceeded):当路由器收到一个IPv6报头中的跳限制(Hop Limit)字段值为0的数据包时,会丢弃该数据包并向源发送ICMPv6超时报文。在超时报文中,类型字段的值为3,代码字段的值为0或1
                               参数问题(Parameter Problem):当IPv6报头或者扩展报头出现错误,导致数据包不能进一步处理时,IPv6节点会丢弃该数据包并向源发送此报文,指明问题的位置和类型。参数问题报文中,类型字段值为4,代码字段值为0~2,32位指针字段指出错误发生的位置
                               信息报文:回送请求Echo Request以及回送应答Echo Reply:
                                                     回送请求报文:用于发送到目标节点,以使目标节点立即发回一个回送应答报文。回送请求报文的类型字段值为128,代码字段的值为0。标志符(Identifier)和序列号(Sequence Number)字段有发送方主机设置,用于将即将收到的回送应答报文与发送的回送请求的报文进行匹配
                                                     回送应答报文:当收到一个回送请求报文时,ICMPv6会用回送应答报文响应。回送应答报文的类型字段的值为129,代码字段的值为0。标志符(Identifier)和序列号(Sequence Number)字段的值被指为与回送请求报文中的相应字段一样的值

            IPv6邻居发现协议 - NDP:集成了ARP、ICMP
                     路由器发现:发现链路上的路由器,获得路由器通告的信息(主机主动查找链路上是否有IPv6前缀)
                     无状态自动配置:通过路由器通告(定期组播发送;200s-600s)的地址前缀,终端自动生成IPv6地址;使IPv6主机能够非常便捷地连入到IPv6网络中,即插即用,无需手工配置繁冗的IPv6地址,无需部署应用服务器(例DHCP服务器)为主机分发地址。无状态自动配置机制使用到了ICMPv6中的路由器请求报文(RS)及路由器通告报文(RA)
                     重复地址检测(DAD):获得地址后,进行地址重复检测,确保地址不存在冲突
                     地址解析:请求目的网络地址对应的数据链路层地址,已知IPv6地址,获取MAC地址,类似IPv4的ARP;使用NDP所定义的邻居请求报文(NS)及邻居通告报文(NA)来实现地址解析功能
                     邻居的状态跟踪:通过NDP发现链路上的邻居并跟踪邻居状态;IPv6定义了节点之间邻居的状态机,同时还维护邻居IPv6地址与二层地址MAC的映射关系,相应的表项存储于设备的IPv6邻居表中
                      前缀重编址:路由器对所通告的地址前缀进行灵活设置实现网络重编址;IPv6路由器能够通过ICMPv6的路由器通告报文(RA)向链路上通告IPv6前缀信息。通过这种方式,主机能够从RA中所包含的前缀信息自动构建自己的IPv6单播地址。当然这些自动获取的地址是有生存时间的。通过在RA中通告IPv6地址前缀,并且灵活地设定地址的生存时间,能够实现网络中IPv6新、老前缀的平滑过渡,而无需在主机终端上消耗大量的手工劳动重新配置地址(主机获得IPv6地址老化时间,路由器定期向链路上通告网络前缀)
                      路由器重定向:告知其他设备,到达目标网络的更优下一跳;路由器向一个IPv6节点发送ICMPv6的重定向消息,通知它在相同的本地链路上有一个更好的、到达目的地的下一跳。IPv6中的重定向功能与IPv4中的是一样的(接收和发送数据包是同一个接口时触发)

1.IPv6地址自动获取(即插即用)
2.取代ARP,继承ARP的地址冲突检测和地址解析功能
3.维护IPv6邻居状态机,定期进行地址解析,确保IPv6地址和MAC地址映射关系不会出错,类似于ARP缓存老化机制
4.ICMP重定向

NDP协议功能:
1.ARP功能:地址解析、重复地址检测、IPv6邻居状态跟踪
2.地址分配:无状态自动配置
3.重定向功能
PMTU机制:

            NDP使用ICMPv6的相关报文:Next Header为58,下一个报文为ICMPv6
					![](https://img-blog.csdnimg.cn/cbb6efbd7d5f4cfc9999586252c2fbd7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                              RS(Router Solicitation):路由器请求报文
                              RA(Router Advertisement):路由器通告报文
                              NS(Neighbor Solicitation):邻居请求报文
                              NA(Neighbor Advertisement):邻居通告报文
                        当ICMPv6 type为133,为RS(路由器请求报文)   作用:主机主动请求路由器的IPv6前缀
                        当ICMPv6 type为134,为RA(路由器通告报文)   作用:路由器每隔200s-600s发送,宣告路由器接口上的前缀信息,华为默认关闭RA通告功能
                        当ICMPv6 type为135,为NS(邻居请求报文)      作用:设备使用NS进行地址解析和地址冲突检测、请求目标IP地址的MAC地址(类似于ARP请求消息)
                        当ICMPv6 type为136,为NA(邻居通告报文)      作用:设备使用NA通告自己的MAC地址,响应自身IP和MAC的对应关系(类似于ARP响应消息)
                        当ICMPv6 type为137,ICMP重定向        携带关键参数:目的网段、下一跳地址

           地址解析:IPv6的地址解析不再使用ARP,也不再使用广播方式,通过ICMPv6(类型135的NS及类型136的NA报文)来实现地址解析
               地址解析在三层完成,针对不同的链路层协议可以采用相同的地址解析协议
                   对于IPv4与IPv6地址解析的区别:    
                          IPv4采用广播的方式,所有设备都要帧听广播地址,设备必须解析ARP协议,因此,即使这个ARP请求不是发给本机的,但是本机必须解析数据帧,并且交给ARP协议处理之后才能得到结果,消耗设备资源
                          IPv6改用组播发送NS报文,报文的目的IPv6地址为被请求的IPv6地址对应的“被请求节点组播地址---FF02::1:FF00/104”,报文的目的MAC为组播MAC(IPv6组播MAC地址:33-33 + 后32位由目的IPv6地址映射得到)
                                            采用组播的方式发送NS消息相比于广播的方式更加的高效,也减少了对其他节点的影响和对二层网络的性能压力
                                            可以使用三层的安全机制(例如IPSec)避免地址解析攻击

                       OSPF hello消息用组播的好处:没有开启组播帧听功能的路由器不接收该hello消息

      目的MAC地址为组播地址:主机收到NS消息,在网卡层面,就可以根据数据帧的MAC地址是否需要接收NS消息

                  IPv6中在邻居发现协议(RFC2461)中定义地址解析的,其中使用了ICMPv6的报文,在三层完成地址解析,主要带来以下几个好处:
                                  加强了介质独立性:这就意味着我们无需为每一个链路层定义一个新的地址解析协议,在每一个链路层都使用相同的地址解析协议
                                  可以利用三层安全机制:ARP欺骗(如伪造ARP应答以盗窃数据流)是IPv4中的一个很大的安全问题,在第三层实现地址解析,可以利用三层标准的安全认证机制(例如IPSEC)解决这个问题
                                 ARP请求报文使用广播,会泛滥到整个二层网络中每台主机是公认的一个IPv4性能问题。在第三层实现地址解析可以将地址解析请求仅仅发送到待解析地址所属的“Solicited-node”组播组即可。采用组播的传送方式,大大减轻了性能压力

                   地址解析报文:两种ICMPv6报文:邻居请求(Neighbor Solicitation)和邻居通告(Neighbor Advertisement)
                          邻居请求 (Neighbor Solicitation,NS):
											
                                 Type=135,Code=0
                                 Target Address是需要解析的明细IPv6地址,因此该处不准出现组播地址
                                       源MAC地址---自身的MAC地址
                                       目的MAC地址---33-33-FF-00-00-02
                                       源IP---自身的全球单播地址
                                       目的IP---FF02::1:FF00:2(被请求节点组播地址)
                                                            为什么必须携带Target Address:被请求节点的组播地址在IPv6地址生成时会产生多个IPv6地址可能映射到同一个MAC地址,所以设备依靠被请求节点的组播无法去判断是否是请求自身的MAC,必须检查Target Address去判断
                                 邻居请求发送者的链路层地址会被放在Options字段中(接收者处理数据帧时拆的二三层头会丢弃,Options字段放在最后,回复响应消息时可直接得到发送者的地址,不必再缓存,提高效率)
                          邻居通告 (Neighbor Advertisement,NA):是为了通告设备自身的IP地址和MAC地址的对应关系
											![](https://img-blog.csdnimg.cn/f08e751f434b4fa78daf7da37f98336f.png)

                                 Type=136,Code=0
                                 R标志(Router flag)表示发送者是否为路由器,如果1则表示是
                                 S标志(Solicited flag)表示发送邻居通告是否是响应某个邻居请求,如果1则表示是
                                 O标志(Overide flag)表示邻居通告中的消息是否覆盖已有的条目信息,如果1则表示是
                                 Target Address:携带设备自身的链路层地址对应的IPv6地址
                                 Options字段中携带设备自身的MAC地址(被请求的链路层地址),其格式仍然采用TLV格式
                                 数据链路层、IPv6网络层全部都是单播报文
                                           源IP/MAC:自身的IP/MAC
                                           目的IP/MAC:发起邻居请求的邻居IP/MAC


                  地址解析过程:
				![](https://img-blog.csdnimg.cn/6b086d58757a4852bc12bfef0e0a9544.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)


             IPv6邻居:
                  IPv6邻居路由表:IPv6不像IPv4那样使用ARP表来缓存IP与MAC地址的映射,而是维护一个IPv6邻居表
                            查看:display ipv6 neighbors

                 邻居状态种类:状态之间可以迁移;取代ARP缓存表
                          5种邻居状态机:
                                   INCOMPLETE:未完成状态,邻居请求已经发送到目标节点的请求组播地址,但没有收到邻居的通告
                                   REACHABLE:可达状态,收到确认,不续再发包确认
                                   STALE:陈旧状态,从收到上一次可达性确认后过了超过30s
                                   DELAY:延迟状态,在stale状态后发送过一个报文,并且5s内没有可达性确认
                                   PROBE:探查状态,每隔1s重传邻居请求来主动请求可达性确认,直到收到确认
                 邻居状态变化:
                                    Empty:空状态
                                    INCOMPLETE:未完成状态,邻居请求(NS)已经发送到目标节点的请求组播地址,但没有收到邻居的通告(NA)
                                    REACHABLE:可达状态,收到NA回复
                                    STALE:陈旧状态,应用层30s不发送数据
                                    DELAY:延迟状态,当应用需要发送数据,发送应用数据时同时发送NA消息
                   什么条件从延迟状态进入可达状态:
                                                  应用层有提示信息或收到NA消息
                   如果没有收到NA则进入probe状态,每隔1秒发送NS消息,3次后等待1秒还没有回应,进入空状态
					![](https://img-blog.csdnimg.cn/00f5b386b9c4440aaf875677a0d18dc5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                  下面以A、B两个节点之间相互通讯过程的A节点的邻居状态变化,假设A、B两个节点之前没有任何通讯:
                       1.A先给B发送NS消息,生成邻居缓存条目,状态为Incomplete(未完成状态)
                       2.若B回复NA,则进入Reachable(可达)状态;若没有回复则10s后进入Empty(空状态),删除条目
                       3.若经过30s没发数据,则进入Stale(陈旧)状态;或者在Reachable(可达)状态,收到B的非请求NA,且链路层地址不同,则马上进入Stale(陈旧)状态
                       4.在Stale(陈旧)状态若A需要向B发送数据,则进入Delay(延迟)状态,同时发送NS请求,应用层按照原先IP与MAC的记录封装数据帧,探测IP与MAC的映射关系有没有变化
                       5.在Delay(延迟)状态若有NA应答,则Reachable(可达)状态;若5秒后还没有应答,则进入Probe(探查)状态
                       6.在Probe(探查)状态,每隔1秒发送单播NS,连发3次后还没有回应,则再等待1s,有应答则进入Reachable(可达)状态,没有则进入Empty(空)状态,删除表项

             重复地址检测DAD:
                   机制概述:
                          重复地址检测确保网络中无两个相同的单播地址
                          所有地址都需要做DAD
                          使用NS和NA完成DAD交互过程
                   原理:
                             一个地址在通过DAD地址重复检测之前称为“tentative地址”也就是试验性地址。接口暂时还不能使用这个试验性地址进行正常的IPv6单播通讯,但是会加入和该地址所对应的Solicited-Node组播组
                            DAD重复地址检测:节点向该tentative地址所在的Solicited-Node组播地址发送一个NS,如果收到某个其他站点回应的NA,就证明该地址已被网络上使用,节点将不能使用该tentative地址通讯
                            接口在启用任何一个单播IPv6地址前都需要先进行DAD,包括Link-Local地址
                   DAD过程:
							![](https://img-blog.csdnimg.cn/8f360f3de423416990edec610bd556e8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                                   原理:设备配置了一个新的IPv6地址后,不论是链路本地地址还是全球单播地址都要进行重复地址检测,设备发送一个NS消息,(向网络中请求新IP地址的MAC地址),收到NA回应,这个新地址变为不可以状态,如果没有收到,则地址可以正常使用

           IPv6地址无状态自动配置:SLAAC,是IPv6的标准功能
                       IPv6地址获取方式:
                             1.手工配置
                             2.动态获取:
                                      (1)DHCPv6获取
                                      (2)无状态地址自动配置:无需进行手工配置,即插即用,减轻网络管理的负担
                                                               相比于DHCPv6这种动态地址分配技术,SLAAC无需部署应用服务器,更加轻量 
												![](https://img-blog.csdnimg.cn/9ab492efe26b40fa8af24990d52e126e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                                                  工作过程:
                                                         1.主机根据本地接口ID自动产生网卡的链路本地地址
                                                         2.主机对链路本地地址进行DAD检测, 如果该地址不存在冲突则可以启用
                                                         3.主机发送RS报文尝试在链路上发现IPv6路由器,该报文的源地址为主机的链路本地地址
                                                         4.路由器回复RA报文(携带IPv6前缀信息,路由器在未收到RS时也能够配置主动发出RA报文)
                                                         5.主机根据路由器回应的RA报文,获得IPv6地址前缀信息,使用该地址前缀,加上本地产生的接口ID,形成单播IPv6地址
                                                         6.主机对生成的IPv6地址进行DAD检测,如果没有检测到冲突,那么该地址才能够启用
                                               得到的网关是路由器接口的链路本地地址

                                                  路由器发现:路由器发现功能是IPv6地址自动配置功能的基础
                                                            主要通过两种报文实现:
                                                       RA(Router Advertisement,路由器通告)报文:
                                                                            路由器定期每隔200s-600s通知二层终端设备自己接口下的IPv6前缀信息。Type字段值为134
                                                                                              源IP地址---路由器接口的链路本地地址
                                                                                              目的地址---FF02::1(向所有节点发送)
                                                                                    收到RA的主机将加入默认路由器列表中
                                                                                    收到RA的路由器将检查RA内容的一致性
                                                       RS(Router Solicitation,路由器请求)报文:很多情况下主机接入网络后希望尽快获取网络前缀进行通信,此时主机可以立刻发送RS报文,网络上的设备将回应RA报文。Type字段值为133

                         ICMPv6 RA消息中的Flags字段 :
											![](https://img-blog.csdnimg.cn/3f6cf24a88b244c3bc85b125f54ea350.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_12,color_FFFFFF,t_70,g_se,x_16)

                                     Cur Hop Limit:64:主机发送IPv6报文携带最大跳数,当PC使用该RA通告的前缀构建IPv6地址后,该PC被设置为64
                                     Managed address configuration:M位,管理位,表明主机获取地址应该采用哪种方式
                                                                                             为0时,使用无状态地址自动配置获取IPv6地址
                                                                                             为1时,使用DHCPv6获取
                                                                                                     默认为0,可通过ipv6 nd autoconfig managed-address-fla配置为1                                                            
                                     Other Configuration:O位,除了地址以外的其他主机参数(DNS、域名等)的获取方式
                                                                                             为0时,表示主机不使用有状态自动配置机制来获取IPv6地址外的其他参数
                                                                                             为1时,表明主机使用DHCPv6来配置除了IPv6地址外的其他信息
                                                                                                      默认为0,可通过ipv6 nd autoconfig other-flag配置为1
                                                                 M为0,O为0:主机只能获取到IPv6地址
                                                                 M为0,O为1:主机采用无状态自动配置获取IPv6地址,采用DHCPv6获取其他参数

功 Router Preference:网关(路由器)优先级,越大越好(low、Medium、high)
Router Lifetime:路由器存活时间,主机在Router Lifetime后还没有收到路由器的RA报文则认为路由器故障,单位是秒

                                RA消息的option选项:
                                   1.路由器的MAC地址
                                   2.路由器通告的前缀选项

                        ICMPv6 RA消息中IPv6前缀信息的Flags字段 :     
												![](https://img-blog.csdnimg.cn/3a0956dc78aa4968bfa260029742efc5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_14,color_FFFFFF,t_70,g_se,x_16)

                                     On-Link Flag (L) :Set:L位,默认为1。表明路由器和主机在同一链路上,
                                                                        为1:表示RA消息中的前缀是分配给本地链路的。向包含这个指定前缀的地址发送数据的节点认为目的地是本地链路可达
                                                                        为0:
                                                                                 默认为1,可通过ipv6 nd ra prefix 2001:: 64 2592000 604800 off-link设置为0
                                     Autonomouns Addr-conf flag (A) :Set:A位,地址自动配置位,针对该option选项的前缀
                                                                       为1:表示该前缀可以被主机使用
                                                                       为0:表示主机不可使用该前缀
                                                                                默认为1,可通过使用命令ipv6 nd ra prefix 2001:: 64 2592000(有效生存期) 604800(优选生存期) no-autoconfig设置为0 

                            主机上的IPv6网关是路由器的链路本地地址

                      主机获得前缀及其它参数过程:      
                                   当存在以下情况时忽略RA发送的前缀:
                                                            RA报文选项中的“auto”未置位
                                                            前缀与已有地址前缀重复(包括link-local地址)
                                                            RA报文选项中的“preferred lifetime”时间大于 “ valid lifetime ”
                                                            前缀长度与接口ID长度之和不等于128位
                                   除以上情况外,主机获得前缀同时也获得一些相关时间参数:
                                                          “preferred lifetime”=发起新通讯的有效时间
                                                          “ valid lifetime ”=原有通讯的有效时间
                                   主机会周期性的收到RA报文,并据此报文来更新自己的时间参数(Router Lifetime、)

                      几个生存时间:(IPv6生命周期);针对无状态地址配置,有状态地址配置DHCPv6
						![](https://img-blog.csdnimg.cn/a3129acfea3b49e98803bcc039d1ee81.png)


                                 Tentative:探测状态,在接口下刚刚配置IPv6地址时,首先进行DAD检测,DAD检测没有问题则进入优选生存期
                                 Preferred lifetime:优选生存期,在这个时候的地址可以主动去发起连接
                                 Deprecated:(弃用状态)大于优选生存期小于有效生存期时的地址只能被动去响应连接
                                 Invalid:(不可以状态):该状态下IPv6地址不可用

                                          IPv6邻居状态机和IPv6地址生存时间区别:
                                                           邻居状态机:标识对端设备的IPv6地址和MAC地址的映射关系
                                                           IPv6生存时间:维护自身的IPv6地址

RA消息数据包的源地址为路由器接口的链路本地地址
目的地址为FF02::1(所有节点)

                            重定向:当网关路由器知道更好的转发路径时,会以重定向报文的方式告知主机
                          重定向报文:Type为137,Code为0
					          ![](https://img-blog.csdnimg.cn/4766bf82f7364f08a0256bf80f672b11.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                          重定向过程:
						![](https://img-blog.csdnimg.cn/9e110f8a44d44248bc85b723e4c850ab.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                                       主机A的默认路由器为RTA,当主机A要给主机B发送数据时:
                                                   1.主机A的默认网关路由器是RTA,那么当A发送报文给B时报文会被送到RTA
                                                   2.RTA接收到A发送的报文后发现主机A直接发送给路由器R2更好,会发送一个ICMPv6重定向报文给主机A,其中Target Address为RTB,Destination Address为主机B
                                                   3.主机A接收到了重定向报文后,会在默认路由表中添加一个主机路由,以后发往主机B的报文就直接给R2

                                RTA如何知道去往主机B的路径通过RTB更好呢?其实这个很简单,因为RTA会发现报文进入的接口就是报文路由得出接口,也就是说发往主机B的路由实际上只是在RTA上转了一圈出来了,然后转发到RTB,据此,RTA能判断出直接给RTB是更好的路径




                     PMTU机制:PMTU---探测路径上的最小接口MTU    (通过ICMPv6的Packet Too Big报文来完成)
						![](https://img-blog.csdnimg.cn/b1fd0dfeef99403e905c54d92268b79a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                                 IPv4缺陷:一个数据报文IPv4任意/中间节点都可以分片,可能出现不断分片、重组、分片的情况,消耗设备性能
                                 IPv6只有源端才能进行数据包的分片,中间设备不能分片

                                 PMTU最小为1280bytes(IPv6要求链路层所支持的MTU最小为1280:只有数据包超过路径上的最小MTU时,PMTU发现机制才有意义,因为如果报文很小,小于路径最小的MTU,就不可能产生Packet Too Big报文)
                                 最大PMTU由链路层决定,如隧道,可以支持很大的MTU

中间设备不能分片,那么中间设备如何处理大于接口MTU的数据报文:
当接口收到大于MTU的数据报文后,会向数据的源地址返回一个ICMP type2的错误报告,错误报文还在option选项中携带设备自身的MTU(type2标识数据包过大),源端收到后,按照ICMP错误报告中的MTU发送报文

IPv6地址表示方法:
IPv6地址包括128比特,由冒号分割成8段,每段4个16进制数:: 2031:0000:130F:0000:0000:09C0:876A:130B
IPv6地址写法:
8个段,每个段有16bit的二进制数,把每个段的16bit的二进制数转换成4个16进制数(一位16进制数等于4bit二进制数)
IPv6压缩格式:
每段中的前导“0”都可以省略
2031:0:130F:0:0:9C0:876A:130B (0000—0;09C0—9C0)
地址中包含的连续两个或多个均为0的段,可以用双冒号“::”来代替
2031:0:130F::9C0:876A:130B (:0000:0000:—::)
只能出现一次::------计算机要还原IPv6地址,由于无法确定全为0的段在::中有多少个,所以无法还原,若只有一个::,计算机8 - 现有段得到::中全为0的段的个数
IPv6地址分为两部分:
网络前缀,相当于IPv4中的网络ID
接口标识,相当于IPv4中的主机ID
接口标识生成方法:
手工配置
系统通过软件自动生成
IEEE EUI-64规范自动生成(由MAC地址得到,开源算法,能反推IP地址,不安全):
把MAC地址拆分成两个部分,在中间插入0xFFFE,把二进制下第七位由0变为1,得到接口标识

  IPv6过渡技术:
			![](https://img-blog.csdnimg.cn/c27c8e5fe0314a1c897eb03241bdc3d4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                                IPv6与IPv4共存技术:
                                                    双协议栈(Dual Stack):IPv6节点同时支持IPv6和IPv4协议栈
                                                    隧道(Tunnel):IPv6报文作为IPv4的载荷,由IPv4 Internet中连接多个IPv6孤岛
                                IPv6与IPv4互通技术:
                                                    提供IPv6与IPv4互相访问的技术
                                                    适用于IPv6 Internet与IPv4 Internet共存,而两者又有互相通讯的需求

      IPv6过渡阶段:
                  1.IPv6孤岛
                             IPv6网络初期,用IPv4网络让IPv6孤岛互通
                  2.IPv4孤岛
                             IPv6后期,IPv4成为孤岛,通过IPv6网络传递IPv4数据报文
                  3.最后全球变为IPv6网络

共存技术:
     双栈Dual Stack:华为全部支持IPv4/IPv6双栈(可以同时配置IPv4/IPv6地址/协议);一些存储不支持
         双栈协议:
               设备必须支持IPv4/IPv6协议栈
               连接双栈网络的接口必须同时配置IPv4地址和IPv6地址
			![](https://img-blog.csdnimg.cn/d7d71f7f8cbf443baf1e6f9275c693cc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)
				

     6over4 Tunnel(隧道):
           手动隧道:
                    1.6over4手动隧道:源地址和目的地址均需手工指定
                                                   用于边界路由器与边界路由器,或者主机与边界路由器之间
                                   配置:
								![](https://img-blog.csdnimg.cn/24df619930db4f83aeb1c6ddc7da3c20.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                                   优点:可以用于任何IPv6穿越IPv4的环境,通用性好
                                   缺点:必须手工配置,需要在设备上配置多个隧道,配置比较麻烦
                                   两层头部:IPv4、IPv6
                                   转发机制:
                                              当隧道边界设备的IPv6侧收到一个IPv6报文后, 根据IPv6报文的目的地址查找IPv6路由转发表,如果该报文是从此虚拟隧道接口转发出去,则根据隧道接口配置的隧道源端和目的端的IPv4地址进行封装。封装后的报文变成一个IPv4报文,交给IPv4协议栈处理。报文通过IPv4网络转发到隧道的终点。隧道终点收到一个隧道协议报文后,进行隧道解封装。并将解封装后的报文交给IPv6协议栈处理

                     2.6over4 GRE隧道:手工指定隧道的端点地址                       GRE头部4字节
                                                    GRE承载/标识上层协议为IPv6协议(GRE隧道本身并不限制被封装的协议和传输协议,一个GRE隧道中被封装的协议可以是协议中允许的任意协议(可以是IPv4、IPv6、OSI、MPLS等))
                                    配置:与6over4手动隧道相似,只是将tunnel-protocol ipv6-ipv4 改为 tunnel-protocol GRE
                                    特点:机制简单,对隧道两端设备的CPU负担小
                                              本身不提供数据加密,可以与IPsec结合使用
                                              不提供流量控制和Qos
                                    IPv6 over IPv4 GRE隧道在边界路由器上的传输机制和IPv6 over IPv4手动隧道相同
                                    在IPv4网络中传输IPv6报文采用GRE的方式封装(在IPv4头部上将IPv6数据报文以GRE的格式封装)(利用IPv4进行传输-传输协议;IPv6-乘客协议)
                                    IPv4头部---GRE(通用路由封装格式),在任何需要使用隧道技术的场景中都可以使用GRE

          自动隧道:
                  1.6to4隧道:支持Router到Router、Host到Router、Router到Host、 Host到Host
                              采用6to4专用地址,即2002:IPv4::/48
                      地址格式:
						![](https://img-blog.csdnimg.cn/bb9966c9b6d446658ecd8200abaf917c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                                             FP:可聚合全球单播地址的格式前缀(Format Prefix),其值为001
                                             TLA:顶级聚合标识符(Top Level Aggregator),有13个比特位,其二进制值为0 0000 0000 0010
                                             SLA:站点级聚合标识符(Site Level Aggregator),SAL id可以拆成更多的子网
                               6to4地址可以表示为2002::/16,而一个6to4网络可以表示为2002:IPv4地址::/48。6to4地址的网络前缀长度为64bit,其中前48bit(2002: a.b.c.d)被分配给路由器上的IPv4地址决定了,用户不能改变,而后16位(SLA)是由用户自己定义的

                                            比较:      IPv6 over IPv4自动隧道:IPv6孤岛中配置的地址全部是::/96,后32bit被放置IPv4地址
                                                            6 to 4隧道:把IPv4地址放置在网络位中,采用专用地址:2002:IPv4地址::/48
                                                        12.1.1.1---0000 1100 0000 0001 0000 0001 0000 0001---2002:0C01:0101::/48(十进制---二进制---十六进制)

                       两种模式: 6 to 4的Tunnel中只配置源地址,不配置目的地址(先去访问6 to 4网络,从6 to 4 地址中提取IPv4地址(把IPv4地址内嵌在6 to 4的网络位中)确定传输协议)
                               一对一:一个6 to 4 网络与另一个6 to 4网络通信

                              6to4隧道可连接多个6to4网络:通过SLA ID区分多个6to4网络
											![](https://img-blog.csdnimg.cn/fe871a4980784322ba16a121c0b09a7d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                                                     一个IPv4地址只能用于一个6to4隧道的源地址,如果一个边界路由器连接了多个6to4网络使用同样的IPv4地址做为隧道的源地址,则使用6to地址中的SLA ID来区分,但他们共用一个隧道

                       6to4中继:实现6to4网络和IPv6普通网络互通
									![](https://img-blog.csdnimg.cn/c45374cec88e44b0b741484532235dd3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                          普通IPv6网络需要与6to4网络通过IPv4网络互通,可以通过6to4中继路由器方式实现。
                                6to4中继:通过6to4隧道转发的IPv6报文的目的地址不是6to4地址,但转发的下一跳是6to4地址,该下一跳为路由器我们称之为6to4中继
                                                        (隧道的IPv4目的地址依然从下一跳的6to4地址中获得)
                                              如果6to4网络2中的主机要与IPv6网络互通,在其边界路由器上配置路由指向的下一跳为6to4中继路由器的6to4地址,中继路由器的6to4地址是与中继路由器的6to4隧道的源地址相匹配的。6to4网络2中去往普通IPv6网络的报文都会按照路由表指示的下一跳发送到6to4中继路由器。6to4中继路由器再将此报文转发到纯IPv6网络中去。当报文返回时,6to4中继路由器根据返回报文的目的地址(为6to4地址)进行IPv4报文头封装,数据就能够顺利到达6to4网络中了

                  2.ISATAP隧道:支持Host到Router、Router到Host、 Host到Host;采用ISATAP隧道专用地址
							![](https://img-blog.csdnimg.cn/4cc42aa26ddc412bb60927a67f0acb9e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

                                           ISATAP隧道同样使用了内嵌IPv4地址的特殊IPv6地址形式,只是和6to4不同的是,6to4是使用IPv4地址做为网络前缀,而ISATAP用IPv4地址做为接口标识
                   地址描述:
                            如果IPv4地址是全局唯一的,则u位为1,否则u位为0。g位是IEEE 群体/个体标志。由于ISATAP是通过接口标识来表现的,所以,ISATAP地址有全局单播地址、链路本地地址、ULA地址、组播地址等形式。ISATAP地址的前64位是通过向ISATAP路由器发送请求来得到的,它可以进行地址自动配置。在ISATAP隧道的两端设备之间可以运行ND协议。ISATAP隧道将IPv4网络看作一个非广播的点到多点的链路(NBMA)。
                   转发过程描述:
                          在IPv4网络内部有两个双栈主机PC2和PC3,它们分别有一个私网IPv4地址。要使其具有ISATAP功能,需要进行如下操作:
                          首先配置ISATAP隧道接口,这时会根据IPv4地址生成ISATAP类型的接口ID。
                          根据接口ID生成一个ISATAP链路本地IPv6地址,生成链路本地地址以后,主机就有了在本地链路上进行IPv6通信的能力。
                          进行自动配置,主机获得IPv6全球单播地址、ULA地址等。
                          当主机与其它IPv6主机进行通讯时,从隧道接口转发,将从报文的下一跳IPv6地址中取出IPv4地址作为IPv4封装的目的地址。如果目的主机在本站点内,则下一跳就是目的主机本身,如果目的主机不在本站点内,则下一跳为ISATAP路由器的地址

互通技术:
NAT64:协议转换技术,能够将分组在V4及V6格式之间灵活转换。
IPv6过渡中的协议翻译技术就是将IPv6数据包的每个字段与IPv4数据包中的字段建立起一一映射的关系,从而在两个网络的边缘实现数据报文的转换
IPv6基础_第2张图片

    当IPv4网络的节点需要直接与IPv6网络的节点进行通信时,默认情况下当然是行不通的,因为两个协议栈无法兼容。但是借助一台设备,由该设备来实现IPv6与IPv4的互转,那么上述通信需求就可以实现了

IPv6配置命令:
配置GRE隧道 :
IPv6基础_第3张图片

              GRE隧道 - 基本配置命令:
		![](https://img-blog.csdnimg.cn/ec581ec89378423c962977c4fbb2deaf.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pif56m65LqI6JOd,size_20,color_FFFFFF,t_70,g_se,x_16)

IPv6基础_第4张图片

                  interface tunnel命令用来创建一个Tunnel接口,并进入该Tunnel接口视图。
                  tunnel-protocol gre指定Tunnel为手动隧道模式。
                  source { ipv4-address | interface-type interface-number }指定Tunnel的源接口。
                  destination { ipv4-address }指定Tunnel的目的接口。
                  ipv6 address { ipv6-address prefix-length }设置Tunnel接口的IPv6地址

你可能感兴趣的:(网络,网络)