IPv6(学习总结)

一、IPv6基础

1、简述

随着互联网的快速发展,IPv4地址变的越来越紧缺,即使有NAT技术来进行缓解,但是也只能缓解燃眉之急。同时,IPv4的报文头部设计的不合理,导致IPv4转发不具有安全性,头部字段太多且头部长度可变,导致转发效率低下。IPv6有128个比特(2^128约等于3.0743177x10^38),几乎地球上的每一粒沙子都可以分配一个IPv6的地址,解决了IPv4地址不够用的问题。IPv6针对于报文头部也进行了调整优化,分为了基本头部和扩展头部。基本头部保留转发需要的必要信息,所以长度是固定的,为40个字节。剩余其他信息使用扩展头部来进行封装,提高了转发效率。

2、IPv6报文头格式

IPv6头部字段只保留了转发需要的必要信息,同时增加了一个next header(下一个头部)字段,通过此字段来判断是否有下一个扩展头部信息。数据在进行转发的时候,只需要读取基本包头即可。
版本信息(占4位):用于标识IP版本号,IPv6为6。
流量类型(占8位):区分IPv6数据报类别和优先级。
流标号(占20位):IPv6的一个新的机制是支持资源预分配,并且允许路由器把每一个数据报与一个给定的资源分配相联系。IPv6提出流的抽象概念。

有效荷载长度(16位):16位为无符号整数,给出了IPv6数据报中跟在定长的40字节数据报首部后面的字节数量。
下一个头部标识(4位):该字段标识数据报中的内容(数据字段需要交付给哪个协议(TCP或UDP))
跳限制(8位):转发数据报的每台路由器将对该字段的内容减1,如果跳限制计数达到0,则该数据报将被丢弃。
源IP地址、目的IP地址(都是128位)

  • ICMPv6基础

1、ICMPv6简述

ICMPv6(Internet Control Message Protocol for the IPv6)是IPv6的基础协议之一。在IPv4中,Internet控制报文协议ICMP(Internet Control Message Protocol)向源节点报告关于向目的地传输IP数据包过程中的错误和信息。它为诊断信息和管理目的定义了一些消息如:目的不可达、数据包过长、超时、回应请求和回应应答等。在IPv6中,ICMPv6除了提供ICMP常用的功能之外,还是其它一些功能的基础,如邻接点发现、无状态地址配置(包括重复地址检测)、PMTU发现等。

2、ICMPv6协议

ICMPv6的协议类型号(即IPv6报文中的Next Header字段的值)为58。ICMPv6的报文格式如图2-2-1所示:

图2-2-1

报文中字段解释如下:

Type:表明消息的类型,0至127表示差错报文类型,128至255表示消息报文类型。

Code:表示此消息类型细分的类型。

Checksum:表示ICMPv6报文的校验和。

ICMPv6错误报文的分类:

ICMPv6错误报文用于报告在转发IPv6数据包过程中出现的错误。ICMPv6错误报文可以分为以下4种:

目的不可达错误报文:

在IPv6节点转发IPv6报文过程中,当设备发现目的地址不可达时,就会向发送报文的源节点发送ICMPv6目的不可达错误报文,同时报文中会携带引起该错误报文的具体原因。目的不可达错误报文的Type字段值为1。根据错误具体原因又可以细分为:

Code=0:没有到达目标设备的路由。

Code=1:与目标设备的通信被管理策略禁止。

Code=2:未指定。

Code=3:目的IP地址不可达。

Code=4:目的端口不可达。

数据包过大错误报文:

在IPv6节点转发IPv6报文过程中,发现报文超过出接口的链路MTU时,则向发送报文的源节点发送ICMPv6数据包过大错误报文,其中携带出接口的链路MTU值。数据包过大错误报文是Path MTU发现机制的基础。数据包过大错误报文的Type字段值为2,Code字段值为0。

时间超时错误报文

在IPv6报文收发过程中,当设备收到Hop Limit字段值等于0的数据包,或者当设备将Hop Limit字段值减为0时,会向发送报文的源节点发送ICMPv6超时错误报文。对于分段重组报文的操作,如果超过定时时间,也会产生一个ICMPv6超时报文。时间超时错误报文的Type字段值为3,根据错误具体原因又可以细分为:

Code=0:在传输中超越了跳数限制。

Code=1:分片重组超时。

参数错误报文:

当目的节点收到一个IPv6报文时,会对报文进行有效性检查,如果发现问题会向报文的源节点回应一个ICMPv6参数错误差错报文。参数错误报文的Type字段值为4,根据错误具体原因又可以细分为:

Code=0:IPv6基本头或扩展头的某个字段有错误。

Code=1:IPv6基本头或扩展头的NextHeader值不可识别。

Code=2:扩展头中出现未知的选项。

3、ICMPv6信息报文的分类

ICMPv6信息报文提供诊断功能和附加的主机功能,比如多播侦听发现和邻居发现。常见的ICMPv6信息报文主要包括回送请求报文(Echo Request)和回送应答报文(Echo Reply),这两种报文也就是通常使用的Ping报文。回送请求报文:回送请求报文用于发送到目标节点,以使目标节点立即发回一个回送应答报文。回送请求报文的Type字段值为128,Code字段的值为0。回送应答报文:当收到一个回送请求报文时,ICMPv6会用回送应答报文响应。回送应答报文的Type字段的值为129,Code字段的值为0。

三、ND协议

1、功能概述:

ND(Neighbor Discovery,邻居发现)协议是IPv6的一个关键协议,它综合了IPv4中的ARP,ICMP路由发现和ICMP重定向等协议,并对他们做了改进。作为IPv6的基础性协议,ND协议提供了三大功能分别为:

1、无状态地址自动配置:ND协议中特有的地址自动配置机制,包括一系列相关功能,如路由器发现,接口ID自动生成,重复地址检测等。通过无状态自动配置机制,链路上的节点可以自动获得IPv6全球单播地址。

路由器发现:路由器在与其相连的链路上发布网络参数等信息,主机捕获信息后,可以获得全球单播IPv6地址前缀、默认路由、链路参数(链路MTU)等信息。

接口ID自动生成:主机根据EUI-64规范或其他方式为接口自动生成接口标识符。

重复地址检测:根据前缀信息生成IPv6地址或手动配置IPv6地址后,为保证地址的唯一性,在这个地址可以使用之前,主机需要检验此IPv6地址是否已经被链路上的其他节点所使用。

前缀重新编址:当网络前缀变化时,路由器再与其相连的链路上发布新的网络参数信息,主机捕获这些信息,重新配置前缀,链路MTU等地址相关信息。

2、地址解析:地址解析是一种确定目的节点的链路层地址的方法。ND中的地址解析功能不仅替代了原IPv4中的ARP协议,同时还用邻居不可达检测(NUD)方法(在获取到邻居节点的数据链路层地址后,通过发送消息来验证邻居节点是否可达)来维护邻居节点之间的可达性状态信息。

3、路由器重定向:当在本地链路上存在一个到达目的网络的更好地路由器时,路由器需要通过节点来进行相应配置改变。

2、ND协议报文:

ND协议定义了5种ICMPv6报文类型,如下表所示:

ICMPv6类型

消息名称

Type = 133

RS(Router Solicitation,路由器请求)

Type = 134

RA(Router Advertisement,路由器公告)

Type = 135

NS(Neighbor Solicitation,邻居请求)

Type = 136

NA(Neighbor Advertisement,邻居公告)

Type = 137

Redirect(重定向报文)

NS报文其中各字段的含义如下:

 图3-2-1

1)Target Address:待解析的IPv6地址,16types。Target Address不能是组播地址,可以是链路本地地址、站点本地地址和全球单播地址。

2)Options:地址解析中只使用了链路层地址选项(Link-Layer Address Option),是发送NS报文节点的链路层地址。

链路层地址选项的字段含义如下:

1)Type:选项类型,在链路层地址选项中包括如下两种:

Type=1,表明链路层地址为Source Link-Layer Address(源链路层地址),在NS,RS,Redirect报文中使用。

Type=2,表明链路层地址为Target Link-Layer Address(目标链路层地址),在NA,Redirect报文中使用。

2)Length:选项长度,以8bytes为单位。

3)Link-Layer Address:链路层地址。长度可变,对于以太网为6bytes。

NA报文其中各字段的含义如下:

图3-2-2

1)R:路由器标记(Router Flag)位,表示NA报文发送者的角色,置为“1”表示发送者都是路由器,置为“0”表示发送者为主机。

2)S:请求标记(Solicited Flag)位,置为“1”表示该NA报文是对NS报文的响应。

3)O:覆盖标记(Override Flag)位,置为“1”表示节点可以用NA报文中携带的目标链路层地址选项中的链路层地址来覆盖原有的邻居缓存表项。置为“0”表示只有在链路层地址位置时,才能用目标链路层地址选项来更新邻居缓存表项。

4)Target Address:待地址重复检测或地址解析的IPv6地址。如果NA报文是响应NS报文的,则该字段直接复制NS报文中的Target Address。

5)Options:只能是Type值为2的Target Link-Layer Address,是被解析节点的链路层地址。

RS报文:字段含义如下:

Options(选项)字段:只能是源链路层地址选项,表明该报文发送者的链路层地址,不过如果IPv6报头的源地址为未指定地址,则不能包括该选项。

RA报文,字段含义如下:

1)Cur Hop Limit跳数限制协议规定默认IPv6中Hop Limit数值,若为0,表示路由器不适用该字段。设备实现中该值可配置,默认为64

2)M管理地址配置标识(Managed Address Configuration)M位为0表示无状态自动配置生成IPv6地址,如果M=1表示需要通过有状态(DHCPv6)方式获取IPv6地址。

3)O其他有状态配置标识(Other Stateful Configuration)O位为0表示除了IPv6地址以外的其他参数需要通过无状态自动配置获取,如果O=1表示除了IPv6地址以外的其它需要通过有状态(DHCPv6)方式进行获取。协议规定,若M标记置为1,则O标记也应置为1,否则无意义。

4)H家乡代理标识(Home Agent)移动IPv6中定义的字段。

5)Prf默认路由器优先级(Default Router Preference)

6)P代理标识(Proxy)

7)Router Lifetime与默认路由器关联的生存期以秒为单位。最大值18.2小时。取0值的Lifetime指出路由器不是默认路由器并且不应当出现在默认路由器列表中,但RA报文的其他信息仍然有效。Router Lifetime仅适用于作为默认路由器的路由器应用;对包括在其他消息字段或选项中的信息不适用。需要对它们的信息规定时间限制的选项有它们自己的生存期字段。

8)Reacheable Time此时间以毫秒计在收到可达性确认后节点假定该邻居是可到达的。它由Neighbor Unreachability Detection算法使用。此值为0意味着没有(由此路由器)作出规定。

9)Retrans Timer重发的Neighbor Solicitation消息间隔时间以毫秒计。由地址解析和Neighbor Unreachability Detection算法使用。此值为0意味着没有(由此路由器)作出规定。

10)Options选项字段包含有源链路层地址选项,MTU选项,前缀信息选项,通过间隔选项,家乡代理信息选项,路由信息选项等。

选项字段中个选项的含义如下:

1)源链路层地址选项:路由器发送RA报文的接口的链路层地址。

2)MTU选项:包含了在链路上运行的链路层协议所能支持的MTU最大值。

3)前缀信息选项(Prefix Information Option):用于地址自动配置的前缀信息,可包含多个。

四、IPv6通信过程

1、IPv6地址解析的优点

IPv6的地址解析过程包括两部分:一部分解析了目的IP地址所对应的链路层地址;另一部分是邻居可达性状态的维护过程,即邻居不可达检测。 IPv6地址解析相对于IPv4的ARP解析,有以下优点:

加强了地址解析协议与底层链路的独立性:对每一种链路层协议都使用相同的地址解析协议,无须再为每一种链路层协议定义一个新的地址解析协议。

增强了安全性:ARP攻击,ARP欺骗是IPv4中严重的安全问题。在第三层实现地址解析,可以利用三层标准的安全认证机制来防止这种ARP攻击和ARP欺骗。

减小了报文传播范围:在IPv4中,ARP广播必须泛滥到二层网络中每台主机。IPv6地址解析利用三层组播寻址限制了报文的传播范围,通过将地址解析请求仅发送到待解析地址所属的被请求节点组播组,减小了报文传播范围,节省了网络带宽。

2、IPv6常见地址

1)::/128 即0:0:0:0:0:0:0:0,只能作为尚未获得正式地址的主机的源地址,不能作为目的地址,不能分配给真实的网络接口

2)::1/128 即0:0:0:0:0:0:0:1,回环地址,相当于ipv4中的localhost(127.0.0.1),ping locahost可得到此地址

3)fe80::/10 本地链路地址,用于单一链路,适用于自动配置、邻机发现等,路由器不转发

4)ff00::/8 组播地址

5)2001::/16 全球可聚合地址,由 IANA 按地域和ISP进行分配,是最常用的IPv6地址

6)2002::/16 用于IPv6 to IPv4自动构造隧道技术的地址

7)3ffe::/16 早期开始的IPv6 6bone试验网地址

注:上面三类属于单播地址,都是目前互联网上广泛应用的IPv6地址

8)::A.B.C.D 其中<A.B.C.D>代表ipv4地址,兼容IPv4的IPv6地址。自动将IPv6包以隧道方式在IPv4网络中传送的IPv4/IPv6节点将使用这些地址

9)::FFFF:A.B.C.D 其中<A.B.C.D>代表ipv4地址,例如 ::ffff:202.120.2.30 ,是IPv4映射过来的IPv6地址,它是在不支持IPv6的网上用于表示IPv4节点

3、IPv6地址解析过程

在IPv6中,ND协议通过在节点间交互NS和NA报文完成IPv6地址到链路层地址的解析,解析后用得到的链路层地址和IPv6地址等信息来建立相应的邻居缓存表项。其解析过程如下:

1)主机A发送一个NS报文到链路上,目的IPv6地址为主机B对应的被请求节点组播地址,选项字段中携带了主机A的链路层地址。

2)主机B接收到该NS报文后,由于报文的目的地址是主机B的被请求节点组播地址,所以主机B会处理该报文;同时,根据NS报文中的源地址和源链路层地址选项更新自己的邻居缓存表项。

3)主机B发送一个NA报文来应答主机A发送的NS报文,同时在消息的目标链路层地址选项中携带自己的链路层地址。

4)主机A接收到NA报文后,根据报文中携带的主机B链路层地址,创建一个到目标节点主机B的邻居缓存表项。通过交互,主机A和主机B就获得了对方的链路层地址,建立其到达对方的邻居缓存表项,从而可以互相通信。当一个节点的链路层地址发生改变时,以所有节点组播地址为目的地址发送NA报文,通知链路上的其他节点更新邻居缓存表项。

4、DAD检测

DAD(Duplicate address Detection,重复地址检测)是节点确定即将使用的地址是否在链路上唯一存在的过程。所有的IPv6单播地址,包括自动配置或手动配置的单播地址,在节点使用之前必须要通过重复地址检测。DAD是通过NS和NA报文实现的。DAD过程如下:

  1. 假设一个网络上有多台主机其中主机A想确认自己将使用的地址是否在该链路为唯一存在,主机A会先发送NS报文(其中源地址为:“::”(未正式获得地址的主机的源地址)、目的地址为:被请求节点组播地址)。
  2. 若无应答则地址可用,有应答则不可用,其中应答报文中源地址为应答主机IPv6地址、目的地址为所有节点组播地址、目标地址为待检测的IPv6地址、S请求标记置为0、O覆盖标记置为1

5、无状态地址自动配置过程

ND协议的无状态自动配置包括两个阶段:链路本地地址的配置和全球单播地址的配置。当一个接口启用时,主机首先会根据本地前缀FE80::/64和EUI-64接口标识符,为该接口生成一个本地链路地址。对于主机上全球单播地址的配置步骤如下:主机发送请求RS,路由器收到请求后发送携带前缀信息的RA回应,再进行DAD检测,发送NS报文,若无应答则地址可用并进行全球单播地址配置。地址配置完成后,路由器可以启动NUD检测,周期性发送NS报文,探测该地址是否可达。

6、路由器重定向

当主机启动时,它的路由表中可能只有一条到默认网关的默认路由。当在本地链路上存在一个到达目的网络的更好的路由器时,默认网关会向源主机发送ICMPv6重定向消息,通知主机选择更好的下一跳进行后续报文的发送。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值