资源预览内容
第1页 / 共89页
第2页 / 共89页
第3页 / 共89页
第4页 / 共89页
第5页 / 共89页
第6页 / 共89页
第7页 / 共89页
第8页 / 共89页
第9页 / 共89页
第10页 / 共89页
亲,该文档总共89页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
5.1 ICMPv6概述5.2 ICMPv6报文基本格式5.3 ICMPv6差错报告报文5.4 ICMPv6信息报文5.5 邻节点探测协议(NDP)5.6 ICMPv6多播组成员报文,第5章 ICMPv6及应用,5.1 ICMPv6概述,在RFC2463中定义Internet Control Message Protocol Version 6(ICMPv6协议)。在IPv6中,ICMPv6实现IPv4中ICMP、ARP和IGMP的功能。ICMPv6协议功能: 向源节点报告关于目的地址传输IPv6包的错误和信息,具有差错报告、网络诊断、邻节点发现和多播实现等功能。,ICMPv6报文的封装,ICMPv6报文封装在IPv6中,具有扩展首部的IPv6,封装ICMPv6报文,封装在IPv6分组中的ICMPv6报文,已定义的ICMPv6报文类型,ICMP:是在TCP/IP网络中传递网络控制信息的主要手段,同时,ICMP还提供了差错报告的功能。IPv6的定义中,对IPv4的ICMP进行了修订。删除了一些极少使用的ICMP报文,更完整地加入了ICMP的多播控制功能,对其他原有的ICMP报文做了针对IPv6的修改。经过修改,ICMPv6与原有的ICMP已经不再兼容。,5.2 ICMPv6报文的基本格式,5.2.1 ICMPv6报文校验和的计算5.2.2 封装ICMPv6报文的IPv6分组的源地址5.2.3 ICMPv6报文的处理规则,5.2 ICMPv6报文的基本格式,类型:标识ICMPv6报文类型,它的值根据报文的内容来确定。代码:用于确定ICMPv6进一步的信息,对同一类型的报文进行了更详细的分类。校验和:用于检测ICMPv6的报文是否正确传送。报文体:用于返回出错的参数和记录出错报文的片段,帮助源节点判断错误的原因。或是其它参数。,5.2.1 ICMPv6报文校验和的计算,校验和16bit,计算范围包括两部分。ICMPv6报文IPv6伪首部(伪首部中下一首部字段的值为58)。计算方法:校验和字段被设置为0 ICMPv6对校验范围内的数据以16比特为单位,做1的补码的加法运算。在ICMPv6首部校验和字段中,置入此16比特的和。,ICMPv6校验和的校验范围,IPv6的伪首部,ICMPv6报文,5.2.2 封装ICMPv6报文的IPv6分组的源地址,源地址帮助IPv6分组的源节点判断分组在何处出错。一个发送ICMPv6报文的节点在计算校验和以前,要在IPv6首部中谨慎填写源地址和目的 IPv6地址。选择ICMPv6报文源地址的主要原则有四个:前二个规则是针对ICMPv6信息报文制定的。第一个规则:若原IPv6分组是单播分组,ICMPv6应答报文的源地址应该设置为原IPv6分组中的目的地址。第二个规则:若是多播Multi-cast group或任播any-cast group报文,则ICMPv6应答报文必须将收到该IPv6分组的接口的IP地址作为源地址。,第三个规则:适用于ICMP差错报告报文。在许多情况下,生成差错报文的并非是目的节点。因此差错报文不能将原报文中的目的地址作为ICMP差错报文的源地址使用,而应将报告IPv6分组出错信息的节点地址作为源地址。例如,若是分组过大ICMPv6差错报文时,该源地址应该是不能接纳原IPv6分组的路由器的某个接口的IPv6地址。第四个规则:主动发送的ICMPv6报文及不适用上述规则的ICMP报文,发送ICMPv6报文的节点必须查看自己的路由表,判断哪一个网络接口将被用于发送ICMPv6报文,则将该接口的一个单播地址作为源地址。,5.2.3 ICMPv6报文的处理规则,当接收到ICMPv6差错报告报文时,如果无法识别具体的类型,必须将它交给上层协议模块进行处理。当接收到ICMPv6信息报文时,如果无法识别具体的类型,必须将它丢弃。所有的ICMPv6差错报告报文,都应该在IPv6所要求的最小MTU允许范围内,尽可能多地包括引发该ICMPv6差错报文的IPv6分组片段,以便给IPv6分组的源节点提供尽可能多的诊断信息。,ICMPv6报文的处理规则(续1),在需要将ICMPv6报文上传给其上层协议模块处理的情况下,上层协议的具体类型,应该从封装该ICMPv6报文的IPv6分组的下一首部字段中获取。但是,如果该IPv6分组携带有很多扩展首部,则可能会导致有关上层协议类型的信息没有被包含在ICMPv6报文中。这时,只能将该差错报告报文在IP层处理完后丢弃掉。不能产生ICMPv6差错报告报文的发送情况:一个ICMPv6差错报告报文。这主要是为了避免无休止地产生ICMPv6报文而引起网络拥塞。,ICMPv6报文的处理规则(续2),一个发往多播地址的IPv6分组。但有两个例外:当使用IPv6多播地址进行路径MTU探测时,可以发送“报文过长”差错报告报文;允许使用参数错误报文报告:存在不可识别的TLV可选项。链路层的多播报文。对这类报文也具有与上面第二类情况相同的例外。链路层的广播报文。对这类报文也具有与上面第二类情况相同的例外。IPv6分组的源地址无法唯一确定一个单独节点时,这种情况也不能够引起ICMPv6差错报告报文的发送。例如,IPv6不明确地址等。,ICMPv6报文的处理规则(续3),最后,为了限制在发送ICMPv6差错报告报文时对网络带宽和转发处理的消耗,一个IPv6节点必须限制其发送ICMPv6差错报告报文的速率。但是,这样可能会导致一个差错报告报文的源节点因为没有及时收到报文出错的报告而不断地重发该错误报文。目前有几种提供限制ICMPv6速率的方法,例如:基于计时器的方法。例如,将发往某个源节点或所有源节点的ICMPv6差错报告报文的速率,限制在每T时间段内只发送一个差错报告报文之内。基于带宽的方法。例如,将某个网络接口发送的ICMPv6差错报告报文所占用的带宽限制在这个接口所在链路带宽的某个比例F上。,5.3 ICMPv6差错报告报文,5.3.1 目的不可达ICMPv6报文5.3.2 分组过大ICMPv6报文5.3.3 超时ICMPv6报文5.3.4 参数错误ICMPv6报文,ICMPv6报文分成两大类:ICMPv6差错报告报文:一个IPv6节点在处理一个接收到的报文时,如果有错误出现,则需要向源节点发送ICMPv6差错报告报文。目前ICMPv6共定义了四种类型的差错报告报文:目的不可到达、报文过长、超时、参数差错报告报文。ICMPv6信息报文:传递用于控制的请求和应答信息。比如用于实现Ping功能的回声请求报文和回声应答报文,以及对多播组控制的ICMPv6信息报文。,ICMPv6差错报文基本格式,5.3 ICMPv6差错报告报文,ICMPv6差错报文基本格式,ICMPv6差错报告报文中的类型字段、代码字段及校验和字段的内容,根据差错报告报文类型的不同而不同。ICMPv6报文体分为两个部分,前4字节是参数字段,剩余部分是引起该ICMPv6报文产生的出错IPv6分组片段。在整个ICMPv6报文的长度不超过IPv6对路径传输单元的最低限制(1280字节)的条件下,应该包含尽可能多的出错IPv6分组信息。这样可以使出错IPv6分组的源节点获得尽可能多的信息来诊断出错原因。,ICMPv6字段:类型值为1代码 0-没有到目的的路由1-与目的的通信由于管理被禁止 ,e.g.防火墙2-(没有定义) 3-目的地址不可达,e.g.不能转换为MAC地址4-端口不可达,e.g.端口没有开放参数字段:未用,发送者设置为0,接收者忽略。描述:该报文应该由路由器或节点的IPv6层产生,作为对除拥塞以外的原因使得包不能传送到目的地址的回应。,5.3.1 目的不可达报文,一个节点在收到该报文后,必须通知上层协议进行相应处理。,ICMPv6字段: 类型值为2代码:未用,发送者设置为 0,接收者忽略。参数字段:记录在出现包过大错误时链路的MTU。 描述:包过大报文必须由路由器发出,当路由器发现包太大,超过了出口链路的MTU而不能转发时,丢弃该包,并向源节点发送ICMPv6报文。 可以用于IPv6路径MTU发现(PMTUD)。在RFC1981中定义,IPv6 的PMTU使用ICMPv6类型2报文,即分组过大ICMPv6报文。,5.3.2 分组过大报文,一个节点在收到该报文后,必须通知上层协议进行相应处理。,使用ICMPv6路径MTU发现(PMTUD)探测路径MTU的过程。,源,路由器,路由器,目的,MTU=1500,MTU=1400,MTU=1300,报文(MTU=1500),ICMPv6(类型=2),使用MTU=1400,报文(MTU=1400),ICMPv6(类型=2),使用MTU=1300,报文(MTU=1300),收到报文,用IPv6 PMTUD发现的MTU值被源节点缓存,ICMPv6字段:类型值为3代码: 0-跳数限制为01-分片重组超时参数字段:未用,发送者初始化为0,接收者忽略。描述:如果路由器收到跳数限制为0的包,或是它将跳数限制减去1后变为0,该路由器必须丢弃这个包,并发一个代码为0的超时报文给源站点。若在收到第1个分片后60秒内,还没有收到全部分片,则丢弃所有分片,并发送代码为1的超时报文给源站点。 一个节点在收到该报文后,必须通知上层协议处理。,5.3.3 超时ICMPv6报文,超过跳数限制,回送ICMPv6差错报文,ICMPv6字段: 类型值为4代码: 0-错误的首部字段 1-不可识别的下一首部类型2-不可识别的IPv6的TLV可选项参数字段:称为指针,指出了在引起出错的包中错误出现地方的偏移量。,5.3.4 参数错误ICMPv6报文,一个节点在收到该报文后,必须通知上层协议进行相应处理。,参数错误报告报文描述:如果节点发现了IPv6首部或扩展首部中某个字段有问题,它必须丢弃这个包,并发送一个ICMPv6参数错误报文,指出出错的地方和出错的类型。 指针字段指出检测出错误的地方相对于原IPv6分组首部的偏移量,以字节为单位。比如,一个类型为 4、代码为1、指针字段值为40的ICMPv6报文,说明原分组中紧跟在IPv6基本首部后的扩展首部中的下一首部字段有一个不被识别的值。,先介绍ICMPv6回声请求和回声应答报文格式。其它报文将在相关机制中介绍。,5.4 ICMPv6信息报文,ICMPv6字段: 类型值为128(回声请求)、129(回声应答)代码:0。标识符:用于请求和应答的匹配,也可能是0。 序列号:用于请求和应答的匹配,也可能是0。数据:为0或任意字节的数据。描述:每一个节点必须能够完成ICMPv6回声应答功能,即在收到ICMPv6回声请求时发出相应的ICMPv6回声应答报文。,ICMPv6回声请求和回声应答报文,5.5 邻节点探测协议NDP,5.5.1 邻节点探测协议NDP概述5.5.2 邻节点探测协议定义的ICMPv6报文5.5.3 替代ARP5.5.4 无状态地址自动配置5.5.5 重复地址探测DAD5.5.6 前缀重新编址5.5.7 路由器重定向5.5.8 NDP总结,5.5 邻节点探测协议NDP(Neighbor Discovery Protocol,NDP),5.5.1 NDP概述,NDP是IPv6的一个重要组成部分,它不是一个全新的协议,而是由IPv4中的地址解析协议ARP、ICMP路由探测协议RDISC、ICMP报文重定向等协议综合而成的。,1、 邻节点探测协议的应用,2、为NDP定义的ICMPv6报文,3、NDP机制使用的ICMPv6报文,5.5.2 邻节点探测协议定义的ICMPv6报文,在本节中,我们介绍一下为NDP定义的五个ICMPv6报文:邻节点请求邻节点通告路由器请求路由器通告重定向报文,1. 邻节点请求报文和邻节点通告报文,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号