计算机网络第5章-ICMPv6及应用课件_第1页
计算机网络第5章-ICMPv6及应用课件_第2页
计算机网络第5章-ICMPv6及应用课件_第3页
计算机网络第5章-ICMPv6及应用课件_第4页
计算机网络第5章-ICMPv6及应用课件_第5页
已阅读5页,还剩179页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

李向丽郑州大学信息工程学院下一代互联网协议IPv6李向丽郑州大学信息工程学院下一代互联网协议IPv61第一部分

IPv6技术第2章 IPv6概述第3章 IPv6编址技术第4章 IPv6分组及协议机制第5章 ICMPv6及应用第6章 IPv6过渡机制第一部分

IPv6技术第2章 IPv6概述25.1ICMPv6概述5.2ICMPv6报文基本格式5.3ICMPv6差错报告报文5.4ICMPv6信息报文5.5邻节点探测协议(NDP)5.6ICMPv6多播组成员报文第5章ICMPv6及应用5.1ICMPv6概述第5章ICMPv6及应用35.1ICMPv6概述在RFC2463中定义InternetControlMessageProtocolVersion6(ICMPv6协议)。在IPv6中,ICMPv6实现IPv4中ICMP、ARP和IGMP的功能。ICMPv6协议功能:向源节点报告关于目的地址传输IPv6包的错误和信息,具有差错报告、网络诊断、邻节点发现和多播实现等功能。5.1ICMPv6概述在RFC2463中定义Interne4ICMPv6报文的封装ICMPv6报文封装在IPv6中IPv6基本首部扩展首部……扩展首部NICMPv6报文首部ICMPv6报文体具有扩展首部的IPv6,封装ICMPv6报文ICMPv6报文的封装ICMPv6报文封装在IPv6中IPv5载荷长度跳数限制源地址目的地址下一首部IP首部流标识封装在IPv6分组中的ICMPv6报文载荷长度跳数限制源地址目的地址下一首部IP首部流标识封装在I6ICMP:是在TCP/IP网络中传递网络控制信息的主要手段,同时,ICMP还提供了差错报告的功能。IPv6的定义中,对IPv4的ICMP进行了修订。删除了一些极少使用的ICMP报文,更完整地加入了ICMP的多播控制功能,对其他原有的ICMP报文做了针对IPv6的修改。经过修改,ICMPv6与原有的ICMP已经不再兼容。ICMP:是在TCP/IP网络中传递网络控制信息的主要手段,7已定义的ICMPv6报文类型差错报文(0-127)信息报文(128-255)类型消息含义类型消息含义1目的不可达128回声请求2数据包报文过大129回声应答3超时130组成员查询4参数错误131组成员报告132组成员退出133路由器请求134路由器通告135邻节点请求136邻节点通告137重定向138路由器重编号139节点信息查询140节点信息应答已定义的ICMPv6报文类型差错报文(0-127)信息报文(85.2ICMPv6报文的基本格式5.2.1ICMPv6报文校验和的计算5.2.2封装ICMPv6报文的IPv6分组的源地址5.2.3ICMPv6报文的处理规则5.2ICMPv6报文的基本格式5.2.1ICMPv6报95.2ICMPv6报文的基本格式类型:标识ICMPv6报文类型,它的值根据报文的内容来确定。代码:用于确定ICMPv6进一步的信息,对同一类型的报文进行了更详细的分类。校验和:用于检测ICMPv6的报文是否正确传送。报文体:用于返回出错的参数和记录出错报文的片段,帮助源节点判断错误的原因。或是其它参数。类型(1字节)代码(1字节)校验和(2字节)ICMP报文体(可变长)5.2ICMPv6报文的基本格式类型:标识ICMPv6报105.2.1ICMPv6报文校验和的计算校验和16bit,计算范围包括两部分。ICMPv6报文IPv6伪首部(伪首部中下一首部字段的值为58)。计算方法:校验和字段被设置为0ICMPv6对校验范围内的数据以16比特为单位,做1的补码的加法运算。在ICMPv6首部校验和字段中,置入此16比特的和。5.2.1ICMPv6报文校验和的计算校验和16bit,计110(3字节)源地址(16字节)目的地址(16字节)有效载荷长度(4字节)下一首部(=58,1字节)ICMPv6校验和的校验范围类型(1字节)代码(1字节)校验和(2字节)ICMPv6报文体(可变长)IPv6的伪首部ICMPv6报文0(3字节)源地址(16字节)125.2.2封装ICMPv6报文的IPv6分组的源地址源地址帮助IPv6分组的源节点判断分组在何处出错。一个发送ICMPv6报文的节点在计算校验和以前,要在IPv6首部中谨慎填写源地址和目的IPv6地址。选择ICMPv6报文源地址的主要原则有四个:前二个规则是针对ICMPv6信息报文制定的。第一个规则:若原IPv6分组是单播分组,ICMPv6应答报文的源地址应该设置为原IPv6分组中的目的地址。第二个规则:若是多播Multi-castgroup或任播any-castgroup报文,则ICMPv6应答报文必须将收到该IPv6分组的接口的IP地址作为源地址。5.2.2封装ICMPv6报文的IPv6分组的源地址源地址13第三个规则:适用于ICMP差错报告报文。在许多情况下,生成差错报文的并非是目的节点。因此差错报文不能将原报文中的目的地址作为ICMP差错报文的源地址使用,而应将报告IPv6分组出错信息的节点地址作为源地址。例如,若是分组过大ICMPv6差错报文时,该源地址应该是不能接纳原IPv6分组的路由器的某个接口的IPv6地址。第四个规则:主动发送的ICMPv6报文及不适用上述规则的ICMP报文,发送ICMPv6报文的节点必须查看自己的路由表,判断哪一个网络接口将被用于发送ICMPv6报文,则将该接口的一个单播地址作为源地址。第三个规则:适用于ICMP差错报告报文。145.2.3ICMPv6报文的处理规则当接收到ICMPv6差错报告报文时,如果无法识别具体的类型,必须将它交给上层协议模块进行处理。当接收到ICMPv6信息报文时,如果无法识别具体的类型,必须将它丢弃。所有的ICMPv6差错报告报文,都应该在IPv6所要求的最小MTU允许范围内,尽可能多地包括引发该ICMPv6差错报文的IPv6分组片段,以便给IPv6分组的源节点提供尽可能多的诊断信息。5.2.3ICMPv6报文的处理规则当接收到ICMPv6差15ICMPv6报文的处理规则(续1)在需要将ICMPv6报文上传给其上层协议模块处理的情况下,上层协议的具体类型,应该从封装该ICMPv6报文的IPv6分组的下一首部字段中获取。但是,如果该IPv6分组携带有很多扩展首部,则可能会导致有关上层协议类型的信息没有被包含在ICMPv6报文中。这时,只能将该差错报告报文在IP层处理完后丢弃掉。不能产生ICMPv6差错报告报文的发送情况:一个ICMPv6差错报告报文。这主要是为了避免无休止地产生ICMPv6报文而引起网络拥塞。ICMPv6报文的处理规则(续1)在需要将ICMPv6报文上16ICMPv6报文的处理规则(续2)一个发往多播地址的IPv6分组。但有两个例外:当使用IPv6多播地址进行路径MTU探测时,可以发送“报文过长”差错报告报文;允许使用参数错误报文报告:存在不可识别的TLV可选项。链路层的多播报文。对这类报文也具有与上面第二类情况相同的例外。链路层的广播报文。对这类报文也具有与上面第二类情况相同的例外。IPv6分组的源地址无法唯一确定一个单独节点时,这种情况也不能够引起ICMPv6差错报告报文的发送。例如,IPv6不明确地址等。ICMPv6报文的处理规则(续2)一个发往多播地址的IPv617ICMPv6报文的处理规则(续3)最后,为了限制在发送ICMPv6差错报告报文时对网络带宽和转发处理的消耗,一个IPv6节点必须限制其发送ICMPv6差错报告报文的速率。但是,这样可能会导致一个差错报告报文的源节点因为没有及时收到报文出错的报告而不断地重发该错误报文。目前有几种提供限制ICMPv6速率的方法,例如:基于计时器的方法。例如,将发往某个源节点或所有源节点的ICMPv6差错报告报文的速率,限制在每T时间段内只发送一个差错报告报文之内。基于带宽的方法。例如,将某个网络接口发送的ICMPv6差错报告报文所占用的带宽限制在这个接口所在链路带宽的某个比例F上。ICMPv6报文的处理规则(续3)最后,为了限制在发送ICM185.3ICMPv6差错报告报文5.3.1目的不可达ICMPv6报文5.3.2分组过大ICMPv6报文5.3.3超时ICMPv6报文5.3.4参数错误ICMPv6报文5.3ICMPv6差错报告报文5.3.1目的不可达ICM19ICMPv6报文分成两大类:ICMPv6差错报告报文:一个IPv6节点在处理一个接收到的报文时,如果有错误出现,则需要向源节点发送ICMPv6差错报告报文。目前ICMPv6共定义了四种类型的差错报告报文:目的不可到达、报文过长、超时、参数差错报告报文。ICMPv6信息报文:传递用于控制的请求和应答信息。比如用于实现Ping功能的回声请求报文和回声应答报文,以及对多播组控制的ICMPv6信息报文。ICMPv6报文分成两大类:20071531类型(1B)引发本报文的原IPv6分组片段(在不超过最小IPv6MTU的情况下,尽可能多地包括引起出错的分组的信息)校验和(1B)代码(1B)参数ICMPv6差错报文基本格式5.3ICMPv6差错报告报文0721ICMPv6差错报文基本格式ICMPv6差错报告报文中的类型字段、代码字段及校验和字段的内容,根据差错报告报文类型的不同而不同。ICMPv6报文体分为两个部分,前4字节是参数字段,剩余部分是引起该ICMPv6报文产生的出错IPv6分组片段。在整个ICMPv6报文的长度不超过IPv6对路径传输单元的最低限制(1280字节)的条件下,应该包含尽可能多的出错IPv6分组信息。这样可以使出错IPv6分组的源节点获得尽可能多的信息来诊断出错原因。ICMPv6差错报文基本格式ICMPv6差错报告报文中的类型22ICMPv6字段:类型值为1代码0-没有到目的的路由1-与目的的通信由于管理被禁止,e.g.防火墙2-(没有定义)3-目的地址不可达,e.g.不能转换为MAC地址4-端口不可达,e.g.端口没有开放参数字段:未用,发送者设置为0,接收者忽略。描述:该报文应该由路由器或节点的IPv6层产生,作为对除拥塞以外的原因使得包不能传送到目的地址的回应。5.3.1目的不可达报文一个节点在收到该报文后,必须通知上层协议进行相应处理。ICMPv6字段:类型值为15.3.1目的不可达报文一个节23ICMPv6字段:类型值为2代码:未用,发送者设置为0,接收者忽略。参数字段:记录在出现包过大错误时链路的MTU。描述:包过大报文必须由路由器发出,当路由器发现包太大,超过了出口链路的MTU而不能转发时,丢弃该包,并向源节点发送ICMPv6报文。可以用于IPv6路径MTU发现(PMTUD)。在RFC1981中定义,IPv6的PMTU使用ICMPv6类型2报文,即分组过大ICMPv6报文。5.3.2分组过大报文一个节点在收到该报文后,必须通知上层协议进行相应处理。ICMPv6字段:5.3.2分组过大报文一个节点在收到24使用ICMPv6路径MTU发现(PMTUD)探测路径MTU的过程。源路由器路由器目的MTU=1500MTU=1400MTU=1300①报文(MTU=1500)②ICMPv6(类型=2),使用MTU=1400③报文(MTU=1400)④ICMPv6(类型=2),使用MTU=1300⑤报文(MTU=1300)⑥收到报文用IPv6PMTUD发现的MTU值被源节点缓存使用ICMPv6路径MTU发现(PMTUD)探测路径MTU的25ICMPv6字段:类型值为3代码:0-跳数限制为01-分片重组超时参数字段:未用,发送者初始化为0,接收者忽略。描述:如果路由器收到跳数限制为0的包,或是它将跳数限制减去1后变为0,该路由器必须丢弃这个包,并发一个代码为0的超时报文给源站点。若在收到第1个分片后60秒内,还没有收到全部分片,则丢弃所有分片,并发送代码为1的超时报文给源站点。

一个节点在收到该报文后,必须通知上层协议处理。5.3.3超时ICMPv6报文ICMPv6字段:类型值为35.3.3超时ICMPv626超过跳数限制超过跳数限制27回送ICMPv6差错报文回送ICMPv6差错报文28ICMPv6字段:类型值为4代码:0-错误的首部字段1-不可识别的下一首部类型2-不可识别的IPv6的TLV可选项参数字段:称为指针,指出了在引起出错的包中错误出现地方的偏移量。5.3.4参数错误ICMPv6报文一个节点在收到该报文后,必须通知上层协议进行相应处理。ICMPv6字段:5.3.4参数错误ICMPv6报文一个29参数错误报告报文描述:如果节点发现了IPv6首部或扩展首部中某个字段有问题,它必须丢弃这个包,并发送一个ICMPv6参数错误报文,指出出错的地方和出错的类型。指针字段指出检测出错误的地方相对于原IPv6分组首部的偏移量,以字节为单位。比如,一个类型为4、代码为1、指针字段值为40的ICMPv6报文,说明原分组中紧跟在IPv6基本首部后的扩展首部中的下一首部字段有一个不被识别的值。

IPv6基本首部……下一首部扩展首部1……(报文的其余部分)指针字段=40参数错误报告报文描述:如果节点发现了IPv6首部或扩展首部中30先介绍ICMPv6回声请求和回声应答报文格式。其它报文将在相关机制中介绍。071531类型(1B)数据校验和(2B)代码(1B)标识符序列号5.4ICMPv6信息报文先介绍ICMPv6回声请求和回声应答报文格式。其它报文将在31ICMPv6字段:类型值为128(回声请求)、129(回声应答)代码:0。标识符:用于请求和应答的匹配,也可能是0。序列号:用于请求和应答的匹配,也可能是0。数据:为0或任意字节的数据。描述:每一个节点必须能够完成ICMPv6回声应答功能,即在收到ICMPv6回声请求时发出相应的ICMPv6回声应答报文。ICMPv6回声请求和回声应答报文ICMPv6字段:ICMPv6回声请求和回声应答报文325.5邻节点探测协议NDP5.5.1邻节点探测协议NDP概述5.5.2邻节点探测协议定义的ICMPv6报文5.5.3替代ARP5.5.4无状态地址自动配置5.5.5重复地址探测DAD5.5.6前缀重新编址5.5.7路由器重定向5.5.8NDP总结5.5邻节点探测协议NDP5.5.1邻节点探测协议NDP335.5邻节点探测协议NDP

(NeighborDiscoveryProtocol,NDP)IPv4的缺点之一:主机换网必须换地址,配置麻烦。IPv4的解决办法:启动协议(BOOTP)动态主机配置协议(DHCP)允许节点从BOOTP服务器或DHCP服务器获取配置信息。但是这些协议支持所谓的“状态自动配置”,即服务器必须保持每个节点的状态信息,并管理这些保存的信息。5.5邻节点探测协议NDP

(NeighborDis34IPv6的最重要目标之一是支持“即插即用”——不需要任何人工干预,就能将一个节点插入IPv6网络,并在网络中启动。IPv6使用两种不同机制来支持即插即用。1、有状态地址自动配置:BOOTP和DHCP;2、无状态地址自动配置。在这种方式下,需要配置地址的节点,使用邻节点探测机制获得一个IPv6地址。IPv6的最重要目标之一是支持“即插即用”——不需要任何人工355.5.1NDP概述NDP是IPv6的一个重要组成部分,它不是一个全新的协议,而是由IPv4中的地址解析协议ARP、ICMP路由探测协议RDISC、ICMP报文重定向等协议综合而成的。5.5.1NDP概述NDP是IPv6的一个重要组成部分,36ARP的替代协议路由器重定向前缀通告重复地址检测前缀重新编址邻节点探测协议NDP无状态地址自动配置1、邻节点探测协议的应用ARP的替代协议路由器重定向前缀通告重复地址检测37ICMPv6类型报文类型133路由器请求(RS)134路由器通告(RA)135邻节点请求(NS)136邻节点通告(NA)137重定向2、为NDP定义的ICMPv6报文ICMPv6类型报文类型133路由器请求(RS)134路由器38类型替代ARP前缀通告前缀重新编址重复地址探测路由器重定向路由器请求133√√路由器通告134√√邻节点请求135√√邻节点通告136√重定向137√3、NDP机制使用的ICMPv6报文类型替代ARP前缀通告前缀重新编址重复地址探测路由器重定向路395.5.2邻节点探测协议定义的ICMPv6报文在本节中,我们介绍一下为NDP定义的五个ICMPv6报文:邻节点请求邻节点通告路由器请求路由器通告重定向报文5.5.2邻节点探测协议定义的ICMPv6报文在本节中,我401.邻节点请求报文和邻节点通告报文邻节点请求/通告报文可以完成ARP功能,还可以用来测试目的主机的连通性。用于ARP功能时,邻节点请求报文一般以多播的形式发送,主机一旦收到邻节点请求报文,它们将检查ICMP报文中的IPv6地址。如果这个地址恰好是自己的主机地址,主机将把自己的数据链路层地址封装在一条邻节点通告报文中,以应答邻节点请求报文的发送者。用于探测目的主机连通性时,邻节点请求报文以单播IPv6分组的形式发送。如果发送者收到了应答的邻节点通告报文,它认为目的地址是可达的;否则它认为目的主机是不可达的。1.邻节点请求报文和邻节点通告报文邻节点请求/通告报文可以41邻节点请求报文的报文格式类型(1字节)代码(1字节)校验和(2字节)保留(4字节)目的IPv6地址

选项代码=1选项数据长度=1可选项(源链路层地址)邻节点请求报文的报文格式类型(1字节)代码(1字节)校验和42邻节点请求报文字段意义类型字段,其值为135,表示该ICMPv6报文是邻节点请求报文。代码字段,必须置为0。校验和字段,保存整个ICMPv6报文的校验和。保留字段,保留不用,其值必须等于0。目的IPv6地址字段,存放目的主机的IPv6地址。例如,当使用该报文解析地址时,则该字段存放将要解析的IPv6地址。可选项字段,包含:选项代码字段,说明选项类型选项数据长度字段,8字节单位,说明选项数据的长度。选项数据,一些可选参数,例如源主机的链路层地址邻节点请求报文字段意义类型字段,其值为135,表示该ICMP43用于ICMPv6信息报文的可选项格式类型=1,源链路层地址(SourceLink_layerAddress)=2,目的链路层地址(TargetLink_layerAddress)=3,前缀信息(PrefixInformation)=4,重定向首部(RedirectedHead)

=5,最大传输单元(MTU)长度,以8字节为单位说明可选项长度,包括类型和长度071531类型(Type)长度(Length)值(Value)用于ICMPv6信息报文的可选项格式类型=1,源链路层地44邻节点请求报文字段意义(续)邻节点请求报文必定包含源节点的源链路层地址选项。源链路层地址选项的选项代码值为1选项长度因网络类型而异。当此源节点得不到应答报文时,只能重复发送9次邻节点请求报文。在各请求之间至少间隔1秒。封装邻节点请求报文的IPv6分组优先级字段=15跳数极限字段=255源IPv6地址=发送该报文的网络接口的IPv6地址。用于ARP时,目的地址=多播IPv6地址。探测目的主机连通性,目的地址=目的主机的IPv6地址。邻节点请求报文字段意义(续)邻节点请求报文必定包含源节点的源45邻节点通告报文邻节点通告报文并不只是在应答邻节点请求报文时才发送,有时主机也主动使用邻节点通告报文,来通告自己的链路层地址更新等信息。邻节点通告报文邻节点通告报文并不只是在应答邻节点请求报文时才46邻节点通告报文格式类型(1字节)代码(1字节)校验和(2字节)RSO保留目的IPv6地址

选项代码=2选项数据长度=1可选项(目的链路层地址)邻节点通告报文格式类型(1字节)代码(1字节)校验和(2字节47邻节点通告报文字段意义类型字段,其值为136。代码字段,必须置为0。校验和字段,保存整个ICMPv6报文的检验和。保留字段,保留不用,其值必须等于0。路由R比特字段,R=1表示是一台路由器发送该报文。请求S比特字段,S=1表示是对邻节点请求报文的响应。覆盖O比特字段,O=1表明收到该报文的主机,应该用可选项字段中包含的目的数据链路层地址,更新自己的缓存。目的IPv6地址字段,存放目的主机的IPv6地址。若是为了响应邻节点请求而发送的邻节点通告报文,该字段的值将与请求报文中的目的地址字段相同。该字段通常是发送邻节点请求报文的IPv6地址。但是并非所有情况都是如此。可选项字段,包含选项代码字段、选项长度字段和可选参数,例如该ICMPv6报文的源主机的链路层地址。邻节点通告报文字段意义类型字段,其值为136。48例子,节点A在本地链路上发送邻节点请求报文节点A节点D节点A发送邻节点请求报文FE80::1:C033:6382是哪一个?携带A的链路层地址:

08-00-20-01-C7-82节点C节点B节点D的IPv6地址:FE80::0000:C033:6382节点D的链路层地址:

02-07-01-33-D6-92节点A的IPv6地址:

FE80::0800:2001:C782节点A的链路层地址:

08-00-20-01-C7-82例子,节点A在本地链路上发送邻节点请求报文节点A节点D节点49封装在IPv6分组中的ICMPv6邻节点请求报文版本号=6优先级=15流标识=0有效载荷长度=32下一首部=58跳数极限=255源(A节点)IPv6地址:FE80::0800:2001:C782目的(D节点的被请求节点多播地址)IPv6地址:FF02::1:FF33:6382类型=136代码=0校验和保留=0目的IPv6地址:FE80::0000:C033:6382,目的节点D的IPv6地址

选项代码=1选项数据长度=1可选项(源节点A的链路层地址:08-00-20-01-C7-82)封装在IPv6分组中的ICMPv6邻节点请求报文版本号=650节点D使用邻节点通告报文

对邻节点请求报文进行应答节点D节点D发送邻节点通告报文我是FE80::1:C033:6382节点C节点B节点A节点D使用邻节点通告报文

对邻节点请求报文进行应答节点D节51封装在IPv6分组中的

ICMPv6邻节点通告报文版本号=6优先级=15流标识=0有效载荷长度=32下一首部=58跳数极限=255源(D节点)IPv6地址:FE80::1:C033:6382目的(A节点)IPv6地址:FE80::0800:2001:C782类型=135代码=0校验和RSO保留=0目的IPv6地址(节点D的地址FE80::0000:C033:6382)

选项代码=2选项数据长度=1可选项(目的节点D的链路层地址:02-07-01-33-D6-92)封装在IPv6分组中的

ICMPv6邻节点通告报文版本号=522.路由器请求报文和路由器通告报文主机与远程系统进行通信时,必须找到路由器。当多接口主机需要发送IPv6分组时,需要了解每个网络接口所连接的链路上的路由器的有关信息。路由器每5分钟就发送一个路由器通告报文。节点根据路由器通告报文更新路由器的信息。主机可以主动向路由器发送路由器请求报文,路由器一旦收到路由器请求报文,将立即发送路由器通告报文。2.路由器请求报文和路由器通告报文主机与远程系统进行通信时53ICMPv6路由器请求报文格式类型(1字节)代码(1字节)校验和(2字节)保留(4字节)

选项代码=1选项数据长度=1可选项(源链路层地址)ICMPv6路由器请求报文格式类型(1字节)代码(1字节)54各个字段的内容和含义类型字段,其值为133。代码字段,必须置为0。校验和字段,保存整个ICMPv6报文的检验和。保留字段,保留不用,其值必须等于0。可选项字段,包含了一些可选参数。例如发送报文的源主机链路层地址。路由器从报文中可以得到主机的链路层地址。当路由器应答请求报文时,不需要使用多播地址,直接向提出请求的节点发送路由器通告报文。各个字段的内容和含义类型字段,其值为133。55ICMPv6路由器通告报文格式类型(1字节)代码(1字节)校验和(2字节)最大跳数MO保留路由器生存时间可到达时间已过可到达的重发间隔有效生存时间推荐生存时间保留网络前缀选项代码=5选项数据长度=1可选项(MTU大小)选项代码=1选项数据长度=1可选项(源链路层地址)保留选项代码=3选项数据长度=4前缀长度LAICMPv6路由器通告报文格式类型(1字节)代码(1字节)56路由器通告报文字段含义类型字段,其值为134。代码字段,必须置为0。校验和字段,保存整个ICMPv6报文的检验和。最大跳数(maxhop)字段,路由器用来推荐本地网络主机填入Pv6分组首部中“跳数极限”字段的默认值。M/O比特字段,决定主机的地址自动配置方法。保留字段,保留不用,其值必须等于0。M如被置“1”,不准主机使用无状态地址自动配置,而应采用DHCP配置IP地址。O如被置“1”,主机可使用无状态地址自动配置,但对其他配置信息必须使用DHCP。路由器通告报文字段含义类型字段,其值为134。M如被置“157路由器通告报文字段含义(续)路由器生存时间(routerlifetime)字段,以秒为单位说明主机能够使用路由器的时间范围。只要超过了该字段所指定的值,主机就认为此路由器不能再使用。如果值为0xFFFF,则生存时间无限。可到达时间已过(reachabilitytimeout)字段,是指在可到达的时间(ReachableTime)内,如果邻节点什么也没有发送,就认为该邻节点是不能到达的。这个时间参数以毫秒为单位。可到达的重发间隔(reachabilityretransmissioninterval)。设置邻节点请求报文的时间间隔,限制邻节点请求报文的发送频率。以毫秒为单位。路由器通告报文字段含义(续)路由器生存时间(routerl58可选项字段,包含可选参数在第一个选项(代码为1)中包含有源链路层地址。第二个选项(代码5)指出该链路的MTU的大小。最后一个选项定义了该链路的网络前缀。链路可拥有多个前缀,所以可以包含多个这种类型的选项。路由器通告网络前缀有两个作用。指示一个IP地址是否在接收方的本地链路上;用于地址的自动配置。链路网络前缀选项中包含一些子字段。可选项字段,包含可选参数在第一个选项(代码为1)中包含有源链59链路网络前缀选项中包含的子字段L比特,在链路(On-Link)标志位。L=1时,表示此前缀用于确定一个地址是否在接收方的链路上;L=0时,表示发送方没有就前缀是否可用于在链路确定发表意见。A比特,自治地址(Autonomous)配置标志。A=1时,说明该前缀可以用于IPv6地址自动配置有效生存时间(ValidLifetime),前缀的有效时间。等于0xFFFFFFFF时,有效生存时间是无限的。推荐生存时间(PreferredLifetime),仅用于地址自动配置。表示前缀过时之前的剩余秒数。过时的前缀虽然在有效生存时间的剩余时间里还可以使用,但主机应该逐渐不再使用它。等于0xFFFFFFFF时,推荐生存时间是无限的链路网络前缀选项中包含的子字段L比特,在链路(On-Link60节点X发送路由器请求报文发现路由器新连接了主机X,X立即发送路由器请求报文,主机就能够主动获取路由器通告报文。节点A节点D节点B节点X路由器RA节点C你是能够使用的路由器?X的IPv6地址为FE80::0260:8C14:9252X的链路层地址为02-60-8C-14-92-52节点X发送路由器请求报文发现路由器新连接了主机X,X立即发61封装在IPv6分组中的

ICMPv6路由器请求报文版本号=6传输类别流标识=0有效载荷长度=16下一首部=58跳数极限=255源IPv6地址:FE80::0260:8C14:9252目的IPv6地址:FF02::2(多播指定地址--本地链路所有路由器多播地址)类型=133代码=0校验和保留(4字节)

选项代码=1选项数据长度=1可选项(源节点X链路层地址:02-60-8C-14-92-52)封装在IPv6分组中的

ICMPv6路由器请求报文版本号=62路由器RA发送路由器通告报文

通告自己的存在节点A节点D节点C节点B路由器RA我是路由器路由器RA发送路由器通告报文

通告自己的存在节点A节点63封装在IPv6分组中的ICMPv6路由器通告报文版本号=6传输类型流标识=0有效载荷长度下一首部=58跳数极限=255源IPv6地址:4C00::0001:0000:0C09:4876目的IPv6地址:FF02::1(本地链路所有节点多播地址)类型=134代码=0校验和(2字节)最大跳数MO保留路由器生存时间可到达时间已过可到达的重发间隔有效生存时间推荐生存时间保留本地链路网络前缀:4C00::1:0:0:0选项代码=5选项数据长度=1可选项(MTU大小)选项代码=1选项数据长度=1可选项(源链路层地址,路由器的一个接口的链路层地址)选项代码=3选项数据长度=4前缀长度LA封装在IPv6分组中的ICMPv6路由器通告报文版本号=6643.重定向报文

对希望发送报文的主机来说,第一跳的选取是非常重要的。为了正确选择第一跳,主机可以发送路由器请求报文,并接收路由器通告报文,然后根据获取的路由器信息来选取第一跳。这种方式,主机用来发现下一跳的过程简单,主机虽然能够找到路由器,但不能保证这个路由器就是到达特定目的主机的最佳第一跳路由器。3.重定向报文

对希望发送报文的主机来说,第一跳的选取是非65IPv6分组选中的路由器RA

并非是最佳第一跳路由器主机A路由器RB主机B路由器RA网络IPv6分组选中的路由器RA

并非是最佳第一跳路由器主机A66路由器RA向主机A发送重定向报文主机A路由器RB主机B路由器RA以后发往主机B的分组应该发送给路由器RB网络路由器RA向主机A发送重定向报文主机A路由器RB主机B67封装在IPv6分组中的

ICMPv6路由器重定向报文版本号=6传输类型流标识=0有效载荷长度下一首部=58跳数极限=255源IPv6地址:路由器RA的IPv6地址目的IPv6地址:主机A的IPv6地址类型=137代码=0校验和(2字节)保留=0目的地址:路由器RB的IPv6地址被重定向的目的地址:目的主机B的IPv6地址在重定向报文的总长度不超过576字节的情况下,把重定向的原IPv6分组的一部分复制在这里选项代码=2选项数据长度=1可选项(目的链路层地址:路由器RB的接口链路层地址)选项代码=4保留=0选项数据长度封装在IPv6分组中的

ICMPv6路由器重定向报文版本号68各个字段的含义类型字段,其值为137。代码字段,必须置为0。校验和字段,保存整个ICMPv6报文的检验和。保留字段,保留不用,其值必须等于0。目的地址字段,到达目的主机的最佳第一跳路由器的IPv6地址。被重定向的目的地址字段,表示被重定向的原IPv6分组的目的地址。本例中,是目的主机B的IPv6地址。可选项字段,包含了一些可选参数。第一个选项是目的链路层地址,在本例中是路由器RB的地址。由路由器RA向源主机A提供这个信息。另一个选项代码为4,把重定向的原IPv6分组的一部份字段内容设置在这里,以便源主机A利用这些信息各个字段的含义类型字段,其值为137。695.5.3替代ARP替代ARP使用邻节点请求、邻节点通告报文和被请求节点多播地址(ff02::1:ffxx:xxxx)的组合。5.5.3替代ARP替代ARP使用邻节点请求、邻节点通告报701、使用邻节点请求、邻节点通告报文和被请求节点多播地址,发现本地链路节点的链路层地址节点A本地链路ICMPv6(类型=135)邻节点请求报文源地址:FEC0::1:0:0:1:A目的地址:FF02::1:FF01:B(被请求节点多播地址)数据:00:50:3e:e4:4c:00(节点A的链路层地址)源链路层地址:00:50:3e:e4:4c:00目的链路层地址:33:33:ff:01:00:0b

(IPv6多播映射地址)节点B00:50:3e:e4:4c:00FEC0::1:0:0:1:AFEC0::1:0:0:1:B00:50:3e:e4:4b:01MAC链路层地址寻找节点BICMPv6(类型=136)邻节点通告报文源地址:FEC0::1:0:0:1:B目的地址:FEC0::1:0:0:1:A数据:00:50:3e:e4:4b:01(节点B的链路层地址)源链路层地址:00:50:3e:e4:4b:01目的链路层地址:00:50:3e:e4:4c:00源链路层地址选项目的链路层地址选项1、使用邻节点请求、邻节点通告报文和被请求节点多播地址,发现71由单播/任播地址形成被请求节点多播地址地址前缀接口标识符FF02:0000:0000:0000:0000:0001:FFXX:XXXX被请求节点多播地址24位104位单播/任播地址64位2001:410:0:1::1:AFF02::1:FF01:000A由单播/任播地址形成被请求节点多播地址地址前缀接口标识符FF72以太网上的多播映射FF02:0000:0000:0000:0000:0001:FF01:000B33:33:FF:01:00:0B多播以太网前缀128位IPv6被请求节点多播地址32位以太网MAC地址(48位)以太网上的多播映射FF02:0000:0000:0000:0732、邻节点请求和邻节点通告报文的其它应用验证邻节点可达性:邻节点请求报文使用单播地址,而不使用被请求节点多播地址。如果请求报文的发送者收到了目的主机回送的通告报文,它认为目的主机是可达的。否则它认为目的主机不能到达。更新邻节点缓存:当一个节点改变链路层地址后,使用所有节点多播地址FF02::1,主动发送“邻节点通告”报文,通告自己的链路层地址信息。本地链路上节点的邻节点缓存用新的链路层地址更新。2、邻节点请求和邻节点通告报文的其它应用验证邻节点可达性:邻745.5.4无状态地址自动配置根据路由器在本地链路上通告的前缀信息,本地链路上的节点配置单播IPv6地址。无状态自动配置原理:根据物理地址,节点计算出自己的InterfaceID;确定IPv6网络前缀地址:向最近的路由器询问(路由器请求报文)网络前缀。5.5.4无状态地址自动配置根据路由器在本地链路上通告的前751、IPv6的无状态地址自动配置步骤RFC2462定义了无状态自动配置的实现过程。⑴生成临时本地链路地址。主机根据本地链路的64比特网络前缀(FE80::/64),与EUI-64本地接口地址标识生成临时本地链路地址。⑵验证本地链路地址在本地链路上的唯一性。发送邻节点请求报文和被请求节点多播地址进行重复地址探测。如果接收到邻节点通告报文,表明已经有节点在使用该临时本地链路地址,则地址自动配置停止;如果没有收到邻节点通告报文,表明临时本地链路地址是唯一的,可以使用该本地链路地址。1、IPv6的无状态地址自动配置步骤RFC2462定义了76⑶获得需要配置的信息。主机节点发送路由器请求报文,请求路由器送路由器通告报文。路由器通告报文包括主机节点配置需要的一些信息,例如链路前缀、链路MTU、默认路由、是否使用地址自动配置,以及由地址字段配置协议所创建地址的有效期与优先级等。默认情况下,最多能发送3个路由器请求报文。⑶获得需要配置的信息。主机节点发送路由器请求报文,请求路由77⑷配置。当主机接收到路由器通告报文时,主机根据报文内容来设置跳数限制字段、可到达时间、重传定时器和MTU。如果存在前缀可选项,则进行下列处理:若“在链路”L标志为1,将报文中的前缀添加到前缀列表中;若“自治地址”A标志为1,则用前缀和修改的EUI-64接口标识生成一个临时地址,通过重复地址检测来确定地址的唯一性。如果路由器通告报文的“受管理的地址配置”M标志置1,则用有状态地址字段配置协议获取其它地址。如果路由器通告报文的“其它有状态配置”O标志置1,则用有状态地址自动配置协议获取其它的配置参数。⑷配置。当主机接收到路由器通告报文时,主机根据报文内容来设782、前缀通告前缀通告是无状态自动配置中的初始机制。前缀通告机制中,IPv6路由器使用所有节点多播地址ff02::1/128,在本地链路上周期性(5分钟)地发送路由器通告报文(134)。只有IPv6路由器能在本地链路上通告前缀,禁止主机通告前缀。2、前缀通告前缀通告是无状态自动配置中的初始机制。79前缀通告工作机制节点A路由器A本地链路ICMPv6(类型=134)路由通告报文源地址:本地链路地址(路由器A)目的地址:所有节点多播地址(FF02::1/128)前缀:2001:410:0:1::/64生存期:无限期(有效/首选)节点BFE80::250:3EFF:FEE4:4C00前缀为2001:410:0:1::/64路由器A周期性地发送路由通告报文节点A和B可以配置它们的IPv6地址前缀通告工作机制节点A路由器A本地链路ICMPv6(类型=180主机向本地链路上的所有路由器(多播地址ff02::2/128)发送一条路由请求报文(133),要求路由器通告本地链路上的路由器接收到这个路由器请求报文后,使用路由器通告报文(134),携带”所有节点多播地址”ff02::1进行应答。主机向本地链路上的所有路由器(多播地址ff02::2/1281路由器请求通告工作机制节点A路由器A本地链路ICMPv6(类型=133)路由请求报文源地址:节点A的本地链路地址(FE80::/10)目的地址:所有路由器多播地址(FF02::2)ICMPv6(类型=134)路由通告报文源地址:路由器A的本地链路地址目的地址:所有节点多播地址(FF02::1)前缀:2001:410:0:1::/64生存期:无限期前缀为2001:410:0:1::/64FE80::250:3EFF:FEE4:4C00路由器请求通告工作机制节点A路由器A本地链路ICMPv6(类823.重复地址探测DADDAD是无状态自动配置和节点启动时的一个NDP机制。在节点可以用无状态自动配置机制配置它的IPv6单播地址之前,必须在本地链路上验证要使用的临时地址是唯一的,并且未被使用。DAD使用邻节点请求报文和被请求节点多播地址进行重复地址探测。若一个节点回答这个请求,说明这个临时单播IPv6地址已经被另外一个节点使用。若没有应答,则认为这个临时单播地址在本地链路上是唯一的,可以分配给它的接口。3.重复地址探测DADDAD是无状态自动配置和节点启动时的83重复地址探测过程节点A节点X本地链路ICMPv6(类型=135)邻节点请求报文源地址:未指定地址(::)目的地址:FF02::1:FF01:000A(被请求节点多播地址)节点B临时单播地址=2001:410:0:1::1:A重复地址探测过程节点A节点X本地链路ICMPv6(类型=1384为什么要进行重复地址探测链路上的节点IP地址不全是无状态地址配置的。有可能会有有状态地址配置的节点存在。所以地址可能会重复。还有一种情况会发生地址重复,当子网前缀很长,后面加的MAC地址不需要48位时,而只需获取MAC地址的一部分(如只截取了产品序列号),可能会发生重复地址,这种情况应该很少发生。为什么要进行重复地址探测链路上的节点IP地址不全是无状态地址855.5.5前缀重新编址因为IPv6协议的严格路由聚合,当一个组织改变ISP时,它必须进行前缀重新编址,使用新前缀。前缀重新编地址可以从旧网络前缀,平稳过渡到新网络前缀。这种平稳过渡对用户应该是透明的。要实现透明重新编址,则所有节点需要使用无状态自动配置。5.5.5前缀重新编址因为IPv6协议的严格路由聚合,当86前缀重新编址过程前缀重新编址机制类似于前缀通告机制,使用相同的ICMPv6报文和多播地址。前缀重新编址过程:首先,站点中的路由器继续通告当前的前缀,但是有效生存期和首选生存期被减小到接近于0的值然后,路由器开始在本地链路上通告新的前缀。这时,在本地链路上至少有新旧两个前缀。节点收到这些路由器通告报文后,发现当前前缀有小的生存期,从而被废止使用,但它得到了新的前缀。前缀重新编址过程前缀重新编址机制类似于前缀通告机制,使用相同87在新旧前缀转换期间,所有节点使用这两个单播地址:旧单播地址:基于旧前缀,使用旧地址的当前连接仍被处理。新单播地址:新连接使用新地址来建立。当旧前缀被完全废止时(生存期已经过期为0时),路由器通告报文仅包括新的前缀。在新旧前缀转换期间,所有节点使用这两个单播地址:885.5.6路由器重定向重定向:类似于IPv4中的ICMP的重定向消息。主机有可能选错下一跳。接收到写错地址的数据包的路由器会把数据包重新发送给正确的下一跳。这个过程叫做重定向。重定向报文:在重定向一个数据包到其正确的目的站点后,路由器就可以向错发数据的主机发送一个重定向报文,报告正确的下一跳地址。当主机收到一个重定向报文时,它应更新本地路由表中的纪录,使用建议的下一跳地址。5.5.6路由器重定向重定向:类似于IPv4中的ICMP895.5.7NDP总结NDP机制是IPv6协议的基础组成部分,已经介绍的内容:用邻节点请求和邻节点通告消息取代ARP;无状态自动配置使用前缀通告、DAD和前缀重新编址机制;路由器重定向与IPv4的重定向相似。5.5.7NDP总结NDP机制是IPv6协议的基础组成部90所有NDP机制使用的ICMPv6消息、多播和其它地址机制ICMPv6消息多播地址替代ARP类型135(邻节点请求)类型136(邻节点通告)所有节点的多播(ff02::1)被请求节点的多播(ff02::1:ffxx:xxxx)前缀通告类型135(邻节点请求)类型136(邻节点通告)所有节点的多播(ff02::1)所有路由器的多播(ff02::2)DAD类型135(邻节点请求)被请求节点的多播(ff02::1:ffxx:xxxx)前缀重新编址类型135(邻节点请求)类型136(邻节点通告)所有节点的多播(ff02::1)所有路由器的多播(ff02::2)路由器重定向类型135(邻节点请求)-所有NDP机制使用的ICMPv6消息、多播和其它地址机制IC91Anyquestions?Thanks!Anyquestions?Thanks!92李向丽郑州大学信息工程学院下一代互联网协议IPv6李向丽郑州大学信息工程学院下一代互联网协议IPv693第一部分

IPv6技术第2章 IPv6概述第3章 IPv6编址技术第4章 IPv6分组及协议机制第5章 ICMPv6及应用第6章 IPv6过渡机制第一部分

IPv6技术第2章 IPv6概述945.1ICMPv6概述5.2ICMPv6报文基本格式5.3ICMPv6差错报告报文5.4ICMPv6信息报文5.5邻节点探测协议(NDP)5.6ICMPv6多播组成员报文第5章ICMPv6及应用5.1ICMPv6概述第5章ICMPv6及应用955.1ICMPv6概述在RFC2463中定义InternetControlMessageProtocolVersion6(ICMPv6协议)。在IPv6中,ICMPv6实现IPv4中ICMP、ARP和IGMP的功能。ICMPv6协议功能:向源节点报告关于目的地址传输IPv6包的错误和信息,具有差错报告、网络诊断、邻节点发现和多播实现等功能。5.1ICMPv6概述在RFC2463中定义Interne96ICMPv6报文的封装ICMPv6报文封装在IPv6中IPv6基本首部扩展首部……扩展首部NICMPv6报文首部ICMPv6报文体具有扩展首部的IPv6,封装ICMPv6报文ICMPv6报文的封装ICMPv6报文封装在IPv6中IPv97载荷长度跳数限制源地址目的地址下一首部IP首部流标识封装在IPv6分组中的ICMPv6报文载荷长度跳数限制源地址目的地址下一首部IP首部流标识封装在I98ICMP:是在TCP/IP网络中传递网络控制信息的主要手段,同时,ICMP还提供了差错报告的功能。IPv6的定义中,对IPv4的ICMP进行了修订。删除了一些极少使用的ICMP报文,更完整地加入了ICMP的多播控制功能,对其他原有的ICMP报文做了针对IPv6的修改。经过修改,ICMPv6与原有的ICMP已经不再兼容。ICMP:是在TCP/IP网络中传递网络控制信息的主要手段,99已定义的ICMPv6报文类型差错报文(0-127)信息报文(128-255)类型消息含义类型消息含义1目的不可达128回声请求2数据包报文过大129回声应答3超时130组成员查询4参数错误131组成员报告132组成员退出133路由器请求134路由器通告135邻节点请求136邻节点通告137重定向138路由器重编号139节点信息查询140节点信息应答已定义的ICMPv6报文类型差错报文(0-127)信息报文(1005.2ICMPv6报文的基本格式5.2.1ICMPv6报文校验和的计算5.2.2封装ICMPv6报文的IPv6分组的源地址5.2.3ICMPv6报文的处理规则5.2ICMPv6报文的基本格式5.2.1ICMPv6报1015.2ICMPv6报文的基本格式类型:标识ICMPv6报文类型,它的值根据报文的内容来确定。代码:用于确定ICMPv6进一步的信息,对同一类型的报文进行了更详细的分类。校验和:用于检测ICMPv6的报文是否正确传送。报文体:用于返回出错的参数和记录出错报文的片段,帮助源节点判断错误的原因。或是其它参数。类型(1字节)代码(1字节)校验和(2字节)ICMP报文体(可变长)5.2ICMPv6报文的基本格式类型:标识ICMPv6报1025.2.1ICMPv6报文校验和的计算校验和16bit,计算范围包括两部分。ICMPv6报文IPv6伪首部(伪首部中下一首部字段的值为58)。计算方法:校验和字段被设置为0ICMPv6对校验范围内的数据以16比特为单位,做1的补码的加法运算。在ICMPv6首部校验和字段中,置入此16比特的和。5.2.1ICMPv6报文校验和的计算校验和16bit,计1030(3字节)源地址(16字节)目的地址(16字节)有效载荷长度(4字节)下一首部(=58,1字节)ICMPv6校验和的校验范围类型(1字节)代码(1字节)校验和(2字节)ICMPv6报文体(可变长)IPv6的伪首部ICMPv6报文0(3字节)源地址(16字节)1045.2.2封装ICMPv6报文的IPv6分组的源地址源地址帮助IPv6分组的源节点判断分组在何处出错。一个发送ICMPv6报文的节点在计算校验和以前,要在IPv6首部中谨慎填写源地址和目的IPv6地址。选择ICMPv6报文源地址的主要原则有四个:前二个规则是针对ICMPv6信息报文制定的。第一个规则:若原IPv6分组是单播分组,ICMPv6应答报文的源地址应该设置为原IPv6分组中的目的地址。第二个规则:若是多播Multi-castgroup或任播any-castgroup报文,则ICMPv6应答报文必须将收到该IPv6分组的接口的IP地址作为源地址。5.2.2封装ICMPv6报文的IPv6分组的源地址源地址105第三个规则:适用于ICMP差错报告报文。在许多情况下,生成差错报文的并非是目的节点。因此差错报文不能将原报文中的目的地址作为ICMP差错报文的源地址使用,而应将报告IPv6分组出错信息的节点地址作为源地址。例如,若是分组过大ICMPv6差错报文时,该源地址应该是不能接纳原IPv6分组的路由器的某个接口的IPv6地址。第四个规则:主动发送的ICMPv6报文及不适用上述规则的ICMP报文,发送ICMPv6报文的节点必须查看自己的路由表,判断哪一个网络接口将被用于发送ICMPv6报文,则将该接口的一个单播地址作为源地址。第三个规则:适用于ICMP差错报告报文。1065.2.3ICMPv6报文的处理规则当接收到ICMPv6差错报告报文时,如果无法识别具体的类型,必须将它交给上层协议模块进行处理。当接收到ICMPv6信息报文时,如果无法识别具体的类型,必须将它丢弃。所有的ICMPv6差错报告报文,都应该在IPv6所要求的最小MTU允许范围内,尽可能多地包括引发该ICMPv6差错报文的IPv6分组片段,以便给IPv6分组的源节点提供尽可能多的诊断信息。5.2.3ICMPv6报文的处理规则当接收到ICMPv6差107ICMPv6报文的处理规则(续1)在需要将ICMPv6报文上传给其上层协议模块处理的情况下,上层协议的具体类型,应该从封装该ICMPv6报文的IPv6分组的下一首部字段中获取。但是,如果该IPv6分组携带有很多扩展首部,则可能会导致有关上层协议类型的信息没有被包含在ICMPv6报文中。这时,只能将该差错报告报文在IP层处理完后丢弃掉。不能产生ICMPv6差错报告报文的发送情况:一个ICMPv6差错报告报文。这主要是为了避免无休止地产生ICMPv6报文而引起网络拥塞。ICMPv6报文的处理规则(续1)在需要将ICMPv6报文上108ICMPv6报文的处理规则(续2)一个发往多播地址的IPv6分组。但有两个例外:当使用IPv6多播地址进行路径MTU探测时,可以发送“报文过长”差错报告报文;允许使用参数错误报文报告:存在不可识别的TLV可选项。链路层的多播报文。对这类报文也具有与上面第二类情况相同的例外。链路层的广播报文。对这类报文也具有与上面第二类情况相同的例外。IPv6分组的源地址无法唯一确定一个单独节点时,这种情况也不能够引起ICMPv6差错报告报文的发送。例如,IPv6不明确地址等。ICMPv6报文的处理规则(续2)一个发往多播地址的IPv6109ICMPv6报文的处理规则(续3)最后,为了限制在发送ICMPv6差错报告报文时对网络带宽和转发处理的消耗,一个IPv6节点必须限制其发送ICMPv6差错报告报文的速率。但是,这样可能会导致一个差错报告报文的源节点因为没有及时收到报文出错的报告而不断地重发该错误报文。目前有几种提供限制ICMPv6速率的方法,例如:基于计时器的方法。例如,将发往某个源节点或所有源节点的ICMPv6差错报告报文的速率,限制在每T时间段内只发送一个差错报告报文之内。基于带宽的方法。例如,将某个网络接口发送的ICMPv6差错报告报文所占用的带宽限制在这个接口所在链路带宽的某个比例F上。ICMPv6报文的处理规则(续3)最后,为了限制在发送ICM1105.3ICMPv6差错报告报文5.3.1目的不可达ICMPv6报文5.3.2分组过大ICMPv6报文5.3.3超时ICMPv6报文5.3.4参数错误ICMPv6报文5.3ICMPv6差错报告报文5.3.1目的不可达ICM111ICMPv6报文分成两大类:ICMPv6差错报告报文:一个IPv6节点在处理一个接收到的报文时,如果有错误出现,则需要向源节点发送ICMPv6差错报告报文。目前ICMPv6共定义了四种类型的差错报告报文:目的不可到达、报文过长、超时、参数差错报告报文。ICMPv6信息报文:传递用于控制的请求和应答信息。比如用于实现Ping功能的回声请求报文和回声应答报文,以及对多播组控制的ICMPv6信息报文。ICMPv6报文分成两大类:112071531类型(1B)引发本报文的原IPv6分组片段(在不超过最小IPv6MTU的情况下,尽可能多地包括引起出错的分组的信息)校验和(1B)代码(1B)参数ICMPv6差错报文基本格式5.3ICMPv6差错报告报文07113ICMPv6差错报文基本格式ICMPv6差错报告报文中的类型字段、代码字段及校验和字段的内容,根据差错报告报文类型的不同而不同。ICMPv6报文体分为两个部分,前4字节是参数字段,剩余部分是引起该ICMPv6报文产生的出错IPv6分组片段。在整个ICMPv6报文的长度不超过IPv6对路径传输单元的最低限制(1280字节)的条件下,应该包含尽可能多的出错IPv6分组信息。这样可以使出错IPv6分组的源节点获得尽可能多的信息来诊断出错原因。ICMPv6差错报文基本格式ICMPv6差错报告报文中的类型114ICMPv6字段:类型值为1代码0-没有到目的的路由1-与目的的通信由于管理被禁止,e.g.防火墙2-(没有定义)3-目的地址不可达,e.g.不能转换为MAC地址4-端口不可达,e.g.端口没有开放参数字段:未用,发送者设置为0,接收者忽略。描述:该报文应该由路由器或节点的IPv6层产生,作为对除拥塞以外的原因使得包不能传送到目的地址的回应。5.3.1目的不可达报文一个节点在收到该报文后,必须通知上层协议进行相应处理。ICMPv6字段:类型值为15.3.1目的不可达报文一个节115ICMPv6字段:类型值为2代码:未用,发送者设置为0,接收者忽略。参数字段:记录在出现包过大错误时链路的MTU。描述:包过大报文必须由路由器发出,当路由器发现包太大,超过了出口链路的MTU而不能转发时,丢弃该包,并向源节点发送ICMPv6报文。可以用于IPv6路径MTU发现(PMTUD)。在RFC1981中定义,IPv6的PMTU使用ICMPv6类型2报文,即分组过大ICMPv6报文。5.3.2分组过大报文一个节点在收到该报文后,必须通知上层协议进行相应处理。ICMPv6字段:5.3.2分组过大报文一个节点在收到116使用ICMPv6路径MTU发现(PMTUD)探测路径MTU的过程。源路由器路由器目的MTU=1500MTU=1400MTU=1300①报文(MTU=1500)②ICMPv6(类型=2),使用MTU=1400③报文(MTU=1400)④ICMPv6(类型=2),使用MTU=1300⑤报文(MTU=1300)⑥收到报文用IPv6PMTUD发现的MTU值被源节点缓存使用ICMPv6路径MTU发现(PMTUD)探测路径MTU的117ICMPv6字段:类型值为3代码:0-跳数限制为01-分片重组超时参数字段:未用,发送者初始化为0,接收者忽略。描述:如果路由器收到跳数限制为0的包,或是它将跳数限制减去1后变为0,该路由器必须丢弃这个包,并发一个代码为0的超时报文给源站点。若在收到第1个分片后60秒内,还没有收到全部分片,则丢弃所有分片,并发送代码为1的超时报文给源站点。

一个节点在收到该报文后,必须通知上层协议处理。5.3.3超时ICMPv6报文ICMPv6字段:类型值为35.3.3超时ICMPv6118超过跳数限制超过跳数限制119回送ICMPv6差错报文回送ICMPv6差错报文120ICMPv6字段:类型值为4代码:0-错误的首部字段1-不可识别的下一首部类型2-不可识别的IPv6的TLV可选项参数字段:称为指针,指出了在引起出错的包中错误出现地方的偏移量。5.3.4参数错误ICMPv6报文一个节点在收到该报文后,必须通知上层协议进行相应处理。ICMPv6字段:5.3.4参数错误ICMPv6报文一个121参数错误报告报文描述:如果节点发现了IPv6首部或扩展首部中某个字段有问题,它必须丢弃这个包,并发送一个ICMPv6参数错误报文,指出出错的地方和出错的类型。指针字段指出检测出错误的地方相对于原IPv6分组首部的偏移量,以字节为单位。比如,一个类型为4、代码为1、指针字段值为40的ICMPv6报文,说明原分组中紧跟在IPv6基本首部后的扩展首部中的下一首部字段有一个不被识别的值。

IPv6基本首部……下一首部扩展首部1……(报文的其余部分)指针字段=40参数错误报告报文描述:如果节点发现了IPv6首部或扩展首部中122先介绍ICMPv6回声请求和回声应答报文格式。其它报文将在相关机制中介绍。071531类型(1B)数据校验和(2B)代码(1B)标识符序列号5.4ICMPv6信息报文先介绍ICMPv6回声请求和回声应答报文格式。其它报文将在123ICMPv6字段:类型值为128(回声请求)、129(回声应答)代码:0。标识符:用于请求和应答的匹配,也可能是0。序列号:用于请求和应答的匹配,也可能是0。数据:为0或任意字节的数据。描述:每一个节点必须能够完成ICMPv6回声应答功能,即在收到ICMPv6回声请求时发出相应的ICMPv6回声应答报文。ICMPv6回声请求和回声应答报文ICMPv6字段:ICMPv6回声请求和回声应答报文1245.5邻节点探测协议NDP5.5.1邻节点探测协议NDP概述5.5.2邻节点探测协议定义的ICMPv6报文5.5.3替代ARP5.5.4无状态地址自动配置5.5.5重复地址探测DAD5.5.6前缀重新编址5.5.7路由器重定向5.5.8NDP总结5.5邻节点探测协议NDP5.5.1邻节点探测协议NDP1255.5邻节点探测协议NDP

(NeighborDiscoveryProtocol,NDP)IPv4的缺点之一:主机换网必须换地址,配置麻烦。IPv4的解决办法:启动协议(BOOTP)动态主机配置协议(DHCP)允许节点从BOOTP服务器或DHCP服务器获取配置信息。但是这些协议支持所谓的“状态自动配置”,即服务器必须保持每个节点的状态信息,并管理这些保存的信息。5.5邻节点探测协议NDP

(NeighborDis126IPv6的最重要目标之一是支持“即插即用”——不需要任何人工干预,就能将一个节点插入IPv6网络,并在网络中启动。IPv6使用两种不同机制来支持即插即用。1、有状态地址自动配置:BOOTP和DHCP;2、无状态地址自动配置。在这种方式下,需要配置地址的节点,使用邻节点探测机制获得一个IPv6地址。IPv6的最重要目标之一是支持“即插即用”——不需要任何人工1275.5.1NDP概述NDP是IPv6的一个重要组成部分,它不是一个全新的协议,而是由IPv4中的地址解析协议ARP、ICMP路由探测协议RDISC、ICMP报文重定向等协议综合而成的。5.5.1NDP概述NDP是IPv6的一个重要组成部分,128ARP的替代协议路由器重定向前缀通告重复地址检测前缀重新编址邻节点探测协议NDP无状态地址自动配置1、邻节点探测协议的应用ARP的替代协议路由器重定向前缀通告重复地址检测129ICMPv6类型报文类型133路由器请求(RS)134路由器通告(RA)135邻节点请求(NS)136邻节点通告(NA)137重定向2、为NDP定义的ICMPv6报文ICMPv6类型报文类型133路由器请求(RS)134路由器130类型替代ARP前缀通告前缀重新编址重复地址探测路由器重定向路由器请求133√√路由器通告134√√邻节点请求135√√邻节点通告136√重定向137√3、NDP机制使用的ICMPv6报文类型替代ARP前缀通告前缀重新编址重复地址探测路由器重定向路1315.5.2邻节点探测协议定义的ICMPv6报文在本节中,我们介绍一下为NDP定义的五个ICMPv6报文:邻节点请求邻节点通告路由器请求路由器通告重定向报文5.5.2邻节点探测协议定义的ICMPv6报文在本节中,我1321.邻节点请求报文和邻节点通告报文邻节点请求/通告报文可以完成ARP功能,还可以用来测试目的主机的连通性。用于ARP功能时,邻节点请求报文一般以多播的形式发送,主机一旦收到邻节点请求报文,它们将检查ICMP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论