计算机网络第5章-ICMPv6及应用课件

上传人:29 文档编号:242757119 上传时间:2024-09-02 格式:PPT 页数:92 大小:522.60KB
返回 下载 相关 举报
计算机网络第5章-ICMPv6及应用课件_第1页
第1页 / 共92页
计算机网络第5章-ICMPv6及应用课件_第2页
第2页 / 共92页
计算机网络第5章-ICMPv6及应用课件_第3页
第3页 / 共92页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,郑州大学信息工程学院 李向丽,92,李向丽,郑州大学信息工程学院,下一代互联网协议IPv6,李向丽郑州大学信息工程学院下一代互联网协议IPv6,1,第一部分IPv6技术,第2章IPv6概述,第3章IPv6编址技术,第4章IPv6分组及协议机制,第5章ICMPv6及应用,第6章IPv6过渡机制,第一部分IPv6技术第2章IPv6概述,2,5.1 ICMPv6概述,5.2 ICMPv6报文基本格式,5.3 ICMPv6差错报告报文,5.4 ICMPv6信息报文,5.5 邻节点探测协议(NDP),5.6 ICMPv6多播组成员报文,第5章 ICMPv6及应用,5.1 ICMPv6概述第5章 ICMPv6及应用,3,5.1 ICMPv6概述,在RFC2463中定义,Internet Control Message Protocol Version 6(ICMPv6协议)。,在IPv6中,ICMPv6实现IPv4中ICMP、ARP和IGMP的功能。,ICMPv6协议功能: 向源节点报告关于目的地址传输IPv6包的错误和信息,具有差错报告、网络诊断、邻节点发现和多播实现等功能。,5.1 ICMPv6概述在RFC2463中定义Interne,4,ICMPv6报文的封装,ICMPv6报文封装在IPv6中,IPv6,基本首部,扩展首部,扩展首部N,ICMPv6,报文首部,ICMPv6,报文体,具有扩展首部的IPv6,封装ICMPv6报文,ICMPv6报文的封装ICMPv6报文封装在IPv6中IPv,5,载荷长度,跳数限制,源地址,目的地址,下一首部,IP首部,流标识,封装在IPv6分组中的ICMPv6报文,载荷长度跳数限制源地址目的地址下一首部IP首部流标识封装在I,6,ICMP:是在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)信息报文(,8,5.2 ICMPv6报文的基本格式,5.2.1 ICMPv6报文校验和的计算,5.2.2 封装ICMPv6报文的IPv6分组的源地址,5.2.3 ICMPv6报文的处理规则,5.2 ICMPv6报文的基本格式5.2.1 ICMPv6报,9,5.2 ICMPv6报文的基本格式,类型:标识ICMPv6报文类型,它的值根据报文的内容来确定。,代码:用于确定ICMPv6进一步的信息,对同一类型的报文进行了更详细的分类。,校验和:用于检测ICMPv6的报文是否正确传送。,报文体:用于返回出错的参数和记录出错报文的片段,帮助源节点判断错误的原因。或是其它参数。,类型(1字节),代码(1字节),校验和(2字节),ICMP报文体(可变长),5.2 ICMPv6报文的基本格式类型:标识ICMPv6报,10,5.2.1 ICMPv6报文校验和的计算,校验和16bit,计算范围包括两部分。,ICMPv6报文,IPv6伪首部(伪首部中下一首部字段的值为58)。,计算方法:,校验和字段被设置为0,ICMPv6对校验范围内的数据以16比特为单位,做1的补码的加法运算。,在ICMPv6首部校验和字段中,置入此16比特的和。,5.2.1 ICMPv6报文校验和的计算校验和16bit,计,11,0(3字节),源地址(16字节),目的地址(16字节),有效载荷长度(4字节),下一首部 (=58,1字节),ICMPv6校验和的校验范围,类型(1字节),代码(1字节),校验和,(2字节),ICMPv6报文体(可变长),IPv6的伪首部,ICMPv6报文,0(3字节)源地址(16字节),12,5.2.2 封装ICMPv6报文的IPv6分组的源地址,源地址帮助IPv6分组的源节点判断分组在何处出错。一个发送ICMPv6报文的节点在计算校验和以前,要在IPv6首部中谨慎填写源地址和目的 IPv6地址。选择ICMPv6报文源地址的主要原则有四个:,前二个规则是针对,ICMPv6信息报文,制定的。,第一个规则:若原IPv6分组是单播分组,ICMPv6应答报文的源地址应该设置为原IPv6分组中的目的地址。,第二个规则:若是多播Multi-cast group或任播any-cast group报文,则ICMPv6应答报文必须将收到该IPv6分组的接口的IP地址作为源地址。,5.2.2 封装ICMPv6报文的IPv6分组的源地址源地址,13,第三个规则:适用于,ICMP差错报告报文,。,在许多情况下,生成差错报文的并非是目的节点。因此差错报文不能将原报文中的目的地址作为ICMP差错报文的源地址使用,而应,将报告IPv6分组出错信息的节点地址作为源地址,。,例如,若是分组过大ICMPv6差错报文时,该源地址应该是不能接纳原IPv6分组的路由器的某个接口的IPv6地址。,第四个规则:主动发送的ICMPv6报文及不适用上述规则的ICMP报文,发送ICMPv6报文的节点必须查看自己的路由表,判断哪一个网络接口将被用于发送ICMPv6报文,则将该接口的一个单播地址作为源地址。,第三个规则:适用于ICMP差错报告报文。,14,5.2.3 ICMPv6报文的处理规则,当接收到ICMPv6,差错报告报文,时,如果无法识别具体的类型,必须将它,交给上层,协议模块进行处理。,当接收到ICMPv6,信息报文,时,如果无法识别具体的类型,必须将它,丢弃,。,所有的ICMPv6差错报告报文,都应该在IPv6所要求的最小MTU允许范围内,,尽可能多地包括引发该ICMPv6差错报文的IPv6分组片段,,以便给IPv6分组的源节点提供尽可能多的诊断信息。,5.2.3 ICMPv6报文的处理规则当接收到ICMPv6差,15,ICMPv6报文的处理规则(续1),在需要将ICMPv6报文上传给其上层协议模块处理的情况下,上层协议的具体类型,应该从封装该ICMPv6报文的IPv6分组的下一首部字段中获取。但是,如果该IPv6分组携带有很多扩展首部,则可能会导致有关,上层协议类型的信息没有被包含在ICMPv6报文中,。这时,只能将该差错报告报文在IP层处理完后丢弃掉。,不能产生ICMPv6差错报告报文的发送情况:,一个ICMPv6,差错报告报文,。这主要是为了避免无休止地产生ICMPv6报文而引起网络拥塞。,ICMPv6报文的处理规则(续1)在需要将ICMPv6报文上,16,ICMPv6报文的处理规则(续2),一个发往,多播地址,的IPv6分组。但有两个例外:,当使用IPv6多播地址进行,路径MTU探测,时,可以发送“报文过长”差错报告报文;,允许使用,参数错误报文,报告:存在不可识别的TLV可选项。,链路层的多播报文,。对这类报文也具有与上面第二类情况相同的例外。,链路层的广播,报文。对这类报文也具有与上面第二类情况相同的例外。,IPv6分组的,源地址无法唯一确定一个单独节点,时,这种情况也不能够引起ICMPv6差错报告报文的发送。例如,IPv6不明确地址等。,ICMPv6报文的处理规则(续2)一个发往多播地址的IPv6,17,ICMPv6报文的处理规则(续3),最后,为了限制在发送ICMPv6差错报告报文时对网络带宽和转发处理的消耗,一个IPv6节点必须,限制其发送ICMPv6差错报告报文的速率,。但是,这样可能会导致一个差错报告报文的源节点因为没有及时收到报文出错的报告而不断地重发该错误报文。目前有几种提供限制ICMPv6速率的方法,例如:,基于,计时器,的方法。例如,将发往某个源节点或所有源节点的ICMPv6差错报告报文的速率,限制在每T时间段内只发送一个差错报告报文之内。,基于,带宽,的方法。例如,将某个网络接口发送的ICMPv6差错报告报文所占用的带宽限制在这个接口所在链路带宽的某个比例F上。,ICMPv6报文的处理规则(续3)最后,为了限制在发送ICM,18,5.3 ICMPv6差错报告报文,5.3.1 目的不可达ICMPv6报文,5.3.2 分组过大ICMPv6报文,5.3.3 超时ICMPv6报文,5.3.4 参数错误ICMPv6报文,5.3 ICMPv6差错报告报文5.3.1 目的不可达ICM,19,ICMPv6报文分成两大类:,ICMPv6差错报告报文,:一个IPv6节点在处理一个接收到的报文时,如果有错误出现,则需要向源节点发送ICMPv6差错报告报文。目前ICMPv6共定义了四种类型的差错报告报文:目的不可到达、报文过长、超时、参数差错报告报文。,ICMPv6信息报文,:传递用于控制的请求和应答信息。比如用于实现Ping功能的回声请求报文和回声应答报文,以及对多播组控制的ICMPv6信息报文。,ICMPv6报文分成两大类:,20,0 7 15 31,类型(1B),引发本报文的原IPv6分组片段,(在不超过最小IPv6 MTU的情况下,尽可能多地包括引起出错的分组的信息),校验和(1B),代码(1B),参数,ICMPv6差错报文基本格式,5.3,ICMPv6差错报告报文,0 7,21,ICMPv6差错报文基本格式,ICMPv6差错报告报文中的类型字段、代码字段及校验和字段的内容,根据差错报告报文类型的不同而不同。,ICMPv6报文体分为两个部分,前4字节是参数字段,剩余部分是引起该ICMPv6报文产生的出错IPv6分组片段。,在整个ICMPv6报文的长度不超过IPv6对路径传输单元的最低限制(1280字节)的条件下,应该包含尽可能多的出错IPv6分组信息。这样可以使出错IPv6分组的源节点获得尽可能多的信息来诊断出错原因。,ICMPv6差错报文基本格式ICMPv6差错报告报文中的类型,22,ICMPv6字段:类型值为1,代码,0-没有到目的的路由,1-与目的的通信由于管理被禁止 ,e.g.防火墙,2-(没有定义),3-目的地址不可达,e.g.不能转换为MAC地址,4-端口不可达,e.g.端口没有开放,参数字段:未用,发送者设置为0,接收者忽略。,描述:,该报文应该由路由器或节点的IPv6层产生,作为对除拥塞以外的原因使得包不能传送到目的地址的回应。,5.3.1 目的不可达报文,一个节点在收到该报文后,必须通知上层协议进行相应处理。,ICMPv6字段:类型值为15.3.1 目的不可达报文一个节,23,ICMPv6字段:,类型值为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=1500,MTU=1400,MTU=1300,报文(MTU=1500),ICMPv6(类型=2),使用MTU=1400,报文(MTU=1400),ICMPv6(类型=2),使用MTU=1300,报文(MTU=1300),收到报文,用IPv6 PMTUD发现的MTU值被源节点缓存,使用ICMPv6路径MTU发现(PMTUD)探测路径MTU的,25,ICMPv6字段:类型值为3,代码:,0-跳数限制为0,1-分片重组超时,参数字段:,未用,发送者初始化为0,接收者忽略。,描述:,如果路由器收到跳数限制为0的包,或是它将跳数限制减去1后变为0,该路由器必须丢弃这个包,并发一个代码为0的超时报文给源站点。,若在收到第1个分片后60秒内,还没有收到全部分片,则丢弃所有分片,并发送代码为1的超时报文给源站点。,一个节点在收到该报文后,必须通知上层协议处理。,5.3.3 超时ICMPv6报文,ICMPv6字段:类型值为35.3.3 超时ICMPv6,26,超过跳数限制,超过跳数限制,27,回送ICMPv6差错报文,回送ICMPv6差错报文,28,ICMPv6字段:,类型值为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回声请求和回声应答报文格式。其它报文将在相关机制中介绍。,0 7 15 31,类型(1B),数据,校验和(2B),代码(1B),标识符,序列号,5.4 ICMPv6信息报文,先介绍ICMPv6回声请求和回声应答报文格式。其它报文将在,31,ICMPv6字段:,类型值为128(回声请求)、129(回声应答),代码:0。,标识符:用于请求和应答的匹配,也可能是0。,序列号:用于请求和应答的匹配,也可能是0。,数据:为0或任意字节的数据。,描述:每一个节点必须能够完成ICMPv6回声应答功能,即在收到ICMPv6回声请求时发出相应的ICMPv6回声应答报文。,ICMPv6回声请求和回声应答报文,ICMPv6字段: ICMPv6回声请求和回声应答报文,32,5.5 邻节点探测协议NDP,5.5.1 邻节点探测协议NDP概述,5.5.2 邻节点探测协议定义的ICMPv6报文,5.5.3 替代ARP,5.5.4 无状态地址自动配置,5.5.5 重复地址探测DAD,5.5.6 前缀重新编址,5.5.7 路由器重定向,5.5.8 NDP总结,5.5 邻节点探测协议NDP5.5.1 邻节点探测协议NDP,33,5.5 邻节点探测协议NDP(Neighbor Discovery Protocol,NDP),IPv4的缺点之一:主机换网必须换地址,配置麻烦。,IPv4的解决办法:,启动协议( BOOTP ),动态主机配置协议( DHCP ),允许节点从BOOTP服务器或DHCP服务器获取配置信息。但是这些协议支持所谓的“状态自动配置”,即服务器必须保持每个节点的状态信息,并管理这些保存的信息。,5.5 邻节点探测协议NDP(Neighbor Dis,34,IPv6的最重要目标之一是支持“即插即用”不需要任何人工干预,就能将一个节点插入IPv6网络,并在网络中启动。,IPv6使用两种不同机制来支持即插即用。,1、有状态地址自动配置:BOOTP和 DHCP ;,2、无状态地址自动配置。在这种方式下,需要配置地址的节点,使用邻节点探测机制获得一个IPv6地址。,IPv6的最重要目标之一是支持“即插即用”不需要任何人工,35,5.5.1 NDP概述,NDP是IPv6的一个重要组成部分,它不是一个全新的协议,而是由IPv4中的地址解析协议ARP、ICMP路由探测协议RDISC、ICMP报文重定向等协议综合而成的。,5.5.1 NDP概述NDP是IPv6的一个重要组成部分,,36,ARP的 替代协议,路由器重定向,前缀通告,重复地址检测,前缀重新编址,邻节点探测协议NDP,无状态地址 自动配置,1、 邻节点探测协议的应用,ARP的 替代协议路由器重定向前缀通告重复地址检测,37,ICMPv6类型,报文类型,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前缀通告前缀重新编址重复地址探测路由器重定向路,39,5.5.2 邻节点探测协议定义的ICMPv6报文,在本节中,我们介绍一下为NDP定义的五个ICMPv6报文:,邻节点请求,邻节点通告,路由器请求,路由器通告,重定向报文,5.5.2 邻节点探测协议定义的ICMPv6报文在本节中,我,40,1. 邻节点请求报文和邻节点通告报文,邻节点请求/通告报文可以完成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,表示该ICMP,43,用于ICMPv6信息报文的可选项格式,类型 =1,源链路层地址(Source Link_layer Address),=2,目的链路层地址(Target Link_layer Address),=3,前缀信息(Prefix Information),=4,重定向首部(Redirected Head),=5,,最大传输单元(,MTU,),长度,以,8,字节为单位说明可选项长度,包括类型和长度,0 7 15 31,类型(Type),长度(Length),值(Value),用于ICMPv6信息报文的可选项格式 类型 =1,源链路层地,44,邻节点请求报文字段意义(续),邻节点请求报文必定包含源节点的,源链路层地址选项。,源链路层地址选项的选项代码值为1,选项长度因网络类型而异。,当此源节点得不到应答报文时,只能重复发送9次邻节点请求报文。在各请求之间至少间隔1秒。,封装邻节点请求报文的IPv6分组,优先级字段=15,跳数极限字段=255,源IPv6地址=发送该报文的网络接口的IPv6地址。,用于ARP时,目的地址=多播IPv6地址。,探测目的主机连通性,目的地址=目的主机的IPv6地址。,邻节点请求报文字段意义(续)邻节点请求报文必定包含源节点的源,45,邻节点通告报文,邻节点通告报文并不只是在,应答,邻节点请求报文时才发送,有时,主机,也主动使用邻节点通告报文,来通告自己的链路层地址更新等信息。,邻节点通告报文邻节点通告报文并不只是在应答邻节点请求报文时才,46,邻节点通告报文格式,类型(1字节),代码(1字节),校验和(2字节),R,S,O,保留,目的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邻节点请求报文 版本号=6,50,节点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,校验和,R,S,O,保留=0,目的IPv6地址(节点D的地址FE80:0000:C033:6382),选项代码=2,选项数据长度=1,可选项(目的节点D的链路层地址:02-07-01-33-D6-92),封装在IPv6分组中的ICMPv6邻节点通告报文 版本号=,52,2. 路由器请求报文和路由器通告报文,主机与远程系统进行通信时,必须找到路由器。,当多接口主机需要发送IPv6分组时,需要了解每个网络接口所连接的链路上的路由器的有关信息。,路由器每5分钟就发送一个路由器通告报文。,节点根据路由器通告报文更新路由器的信息。,主机可以主动向路由器发送路由器请求报文,路由器一旦收到路由器请求报文,将立即发送路由器通告报文。,2. 路由器请求报文和路由器通告报文主机与远程系统进行通信时,53,ICMPv6路由器请求报文格式,类型(1字节),代码(1字节),校验和(2字节),保留(4字节),选项代码=1,选项数据长度=1,可选项(源链路层地址),ICMPv6路由器请求报文格式 类型(1字节)代码(1字节),54,各个字段的内容和含义,类型字段,其值为133。,代码字段,必须置为0。,校验和字段,保存整个ICMPv6报文的检验和。,保留字段,保留不用,其值必须等于0。,可选项字段,包含了一些可选参数。,例如发送报文的源主机链路层地址。路由器从报文中可以得到主机的链路层地址。当路由器应答请求报文时,不需要使用多播地址,直接向提出请求的节点发送路由器通告报文。,各个字段的内容和含义 类型字段,其值为133。,55,ICMPv6路由器通告报文格式,类型(1字节),代码(1字节),校验和(2字节),最大跳数,M,O,保留,路由器生存时间,可到达时间已过,可到达的重发间隔,有效生存时间,推荐生存时间,保留,网络前缀,选项代码=5,选项数据长度=1,可选项(MTU大小),选项代码=1,选项数据长度=1,可选项(源链路层地址),保留,选项代码=3,选项数据长度=4,前缀长度,L,A,ICMPv6路由器通告报文格式类型(1字节)代码(1字节),56,路由器通告报文字段含义,类型字段,其值为134。,代码字段,必须置为0。,校验和字段,保存整个ICMPv6报文的检验和。,最大跳数(max hop)字段,路由器用来推荐本地网络主机填入Pv6分组首部中“跳数极限”字段的默认值。,M/O比特字段,决定主机的地址自动配置方法。,保留字段,保留不用,其值必须等于0。,M,如被置“1”,不准主机使用无状态地址自动配置,而应采用DHCP配置IP地址。,O,如被置“1”,主机可使用无状态地址自动配置,但对其他配置信息必须使用DHCP。,路由器通告报文字段含义类型字段,其值为134。M 如被置“1,57,路由器通告报文字段含义(续),路由器生存时间(router lifetime)字段,以秒为单位说明主机能够使用路由器的时间范围。只要超过了该字段所指定的值,主机就认为此路由器不能再使用。如果值为0xFFFF,则生存时间无限。,可到达时间已过(reach ability timeout)字段,是指在可到达的时间(Reachable Time)内,如果邻节点什么也没有发送,就认为该邻节点是不能到达的。这个时间参数以毫秒为单位。,可到达的重发间隔(reach ability retransmission interval)。设置邻节点请求报文的时间间隔,限制邻节点请求报文的发送频率。以毫秒为单位。,路由器通告报文字段含义(续)路由器生存时间(router l,58,可选项字段,包含可选参数,在第一个选项(代码为1)中包含有源链路层地址。,第二个选项(代码5)指出该链路的MTU的大小。,最后一个选项定义了该链路的网络前缀。链路可拥有多个前缀,所以可以包含多个这种类型的选项。路由器通告网络前缀有两个作用。,指示一个IP地址是否在接收方的本地链路上;,用于地址的自动配置。,链路网络前缀选项中包含一些子字段。,可选项字段,包含可选参数在第一个选项(代码为1)中包含有源链,59,链路网络前缀选项中包含的子字段,L比特,在链路(On-Link)标志位。L=1时,表示此前缀用于确定一个地址是否在接收方的链路上;L=0时,表示发送方没有就前缀是否可用于在链路确定发表意见。,A 比特,自治地址(Autonomous)配置标志。A=1时,说明该前缀可以用于IPv6地址自动配置,有效生存时间(Valid Lifetime),前缀的有效时间。等于0xFFFFFFFF时,有效生存时间是无限的。,推荐生存时间(Preferred Lifetime),仅用于地址自动配置。表示前缀过时之前的剩余秒数。过时的前缀虽然在有效生存时间的剩余时间里还可以使用,但主机应该逐渐不再使用它。等于0xFFFFFFFF时,推荐生存时间是无限的,链路网络前缀选项中包含的子字段L比特,在链路(On-Link,60,节点X发送路由器请求报文发现路由器,新连接了主机X,X立即发送路由器请求报文,主机就能够主动获取路由器通告报文。,节点A,节点D,节点B,节点X,路由器RA,节点C,你是能够使用的路由器?,X的IPv6地址为FE80:0260: 8C14:9252,X的链路层地址为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字节),最大跳数,M,O,保留,路由器生存时间,可到达时间已过,可到达的重发间隔,有效生存时间,推荐生存时间,保留,本地链路网络前缀: 4C00:1:0:0:0,选项代码=5,选项数据长度=1,可选项(MTU大小),选项代码=1,选项数据长度=1,可选项(源链路层地址,路由器的一个接口的链路层地址),选项代码=3,选项数据长度=4,前缀长度,L,A,封装在IPv6分组中的ICMPv6路由器通告报文 版本号=6,64,3. 重定向报文,对希望发送报文的主机来说,第一跳的选取是非常重要的。,为了正确选择第一跳,主机可以发送路由器请求报文,并接收路由器通告报文,然后根据获取的路由器信息来选取第一跳。,这种方式,主机用来发现下一跳的过程简单,主机虽然能够找到路由器,但不能保证这个路由器就是到达特定目的主机的最佳第一跳路由器。,3. 重定向报文对希望发送报文的主机来说,第一跳的选取是非,65,IPv6分组选中的路由器RA并非是最佳第一跳路由器,主机A,路由器RB,主机B,路由器RA,网络,IPv6分组选中的路由器RA并非是最佳第一跳路由器 主机A,66,路由器RA向主机A发送重定向报文,主机A,路由器RB,主机B,路由器RA,以后发往主机B的分组应该发送给路由器RB,网络,路由器RA向主机A发送重定向报文 主机A 路由器RB主机B,67,封装在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。,69,5.5.3 替代ARP,替代ARP使用邻节点请求、邻节点通告报文和被请求节点多播地址(ff02:1:ffxx:xxxx)的组合。,5.5.3 替代ARP替代ARP使用邻节点请求、邻节点通告报,70,1、使用邻节点请求、邻节点通告报文和被请求节点多播地址,发现本地链路节点的链路层地址,节点A,本地链路,ICMPv6(类型=135)邻节点请求报文,源地址: FEC0:1:0:0:1:A,目的地址:,FF02:1:FF,01:B,(,被请求节点多播地址,),数据: 00:50:3e:e4:4c:00(节点A的链路层地址),源链路层地址: 00:50:3e:e4:4c:00,目的链路层地址:33:33,:ff:01:00:0b,(IPv6多播映射地址),节点B,00:50:3e:e4:4c:00,FEC0:1:0:0:1:A,FEC0:1:0:0:1:B,00:50:3e:e4:4b:01,MAC链路层地址,寻找节点B,ICMPv6(类型=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:A,FF02:1:FF,01:000A,由单播/任播地址形成被请求节点多播地址地址前缀接口标识符FF,72,以太网上的多播映射,FF02:0000:0000:0000:0000:0001:FF01:000B,33:33 :FF:01:00:0B,多播以太网前缀,128位,IPv6被请求节点多播地址,32位,以太网MAC地址,(48位),以太网上的多播映射FF02:0000:0000:0000:0,73,2、邻节点请求和邻节点通告报文的其它应用,验证邻节点可达性,:邻节点请求报文使用单播地址,而不使用被请求节点多播地址。,如果请求报文的发送者收到了目的主机回送的通告报文,它认为目的主机是可达的。,否则它认为目的主机不能到达。,更新邻节点缓存,:当一个节点改变链路层地址后,使用所有节点多播地址FF02:1,主动发送“邻节点通告”报文,通告自己的链路层地址信息。本地链路上节点的邻节点缓存用新的链路层地址更新。,2、邻节点请求和邻节点通告报文的其它应用验证邻节点可达性:邻,74,5.5.4 无状态地址自动配置,根据路由器在本地链路上通告的前缀信息,本地链路上的节点配置单播IPv6地址。,无状态自动配置原理:,根据物理地址,节点计算出自己的Interface ID;,确定IPv6网络前缀地址:向最近的路由器询问(路由器请求报文)网络前缀。,5.5.4 无状态地址自动配置根据路由器在本地链路上通告的前,75,1、IPv6的无状态地址自动配置步骤,RFC 2462定义了无状态自动配置的实现过程。, 生成临时本地链路地址,。主机根据本地链路的64比特网络前缀(FE80:/64),与EUI-64本地接口地址标识生成临时本地链路地址。, 验证本地链路地址在本地链路上的唯一性,。发送邻节点请求报文和被请求节点多播地址进行重复地址探测。,如果接收到邻节点通告报文,表明已经有节点在使用该临时本地链路地址,则地址自动配置停止;,如果没有收到邻节点通告报文,表明临时本地链路地址是唯一的,可以使用该本地链路地址。,1、IPv6的无状态地址自动配置步骤 RFC 2462定义了,76, 获得需要配置的信息。,主机节点发送路由器请求报文,请求路由器送路由器通告报文。,路由器通告报文包括主机节点配置需要的一些信息,例如链路前缀、链路MTU、默认路由、是否使用地址自动配置,以及由地址字段配置协议所创建地址的有效期与优先级等。,默认情况下,最多能发送3个路由器请求报文。, 获得需要配置的信息。主机节点发送路由器请求报文,请求路由,77, 配置。,当主机接收到路由器通告报文时,主机根据报文内容来设置跳数限制字段、可到达时间、重传定时器和MTU。,如果存在前缀可选项,则进行下列处理:,若“在链路”L标志为1,将报文中的前缀添加到前缀列表中;,若“自治地址”A标志为1,则用前缀和修改的EUI-64接口标识生成一个临时地址,通过重复地址检测来确定地址的唯一性。,如果路由器通告报文的“受管理的地址配置” M标志置1,则用有状态地址字段配置协议获取其它地址。,如果路由器通告报文的“其它有状态配置”O标志置1,则用有状态地址自动配置协议获取其它的配置参数。, 配置。当主机接收到路由器通告报文时,主机根据报文内容来设,78,2、前缀通告,前缀通告是无状态自动配置中的初始机制。,前缀通告机制中, IPv6路由器使用,所有节点多播地址ff02:1/128,,在本地链路上周期性(5分钟)地发送,路由器通告报文(134),。,只有IPv6路由器能在本地链路上通告前缀,禁止主机通告前缀。,2、前缀通告前缀通告是无状态自动配置中的初始机制。,79,前缀通告工作机制,节点A,路由器A,本地链路,ICMPv6(类型=134)路由通告报文,源地址:本地链路地址(路由器A),目的地址:所有节点多播地址,(FF02:1/128),前缀:2001:410:0:1:/64,生存期:无限期(有效/首选),节点B,FE80:250:3EFF:FEE4:4C00,前缀为2001:410:0:1:/64,路由器A周期性地发送路由通告报文,节点A和B可以配置它们的IPv6地址,前缀通告工作机制节点A路由器A本地链路ICMPv6(类型=1,80,主机向本地链路上的所有路由器(多播地址ff02: 2/128) 发送一条路由请求报文(133),,要求路由器通告,本地链路上的路由器接收到这个路由器请求报文后,使用路由器通告报文(134),携带”所有节点多播地址”ff02:1进行应答。,主机向本地链路上的所有路由器(多播地址ff02: 2/12,81,路由器请求通告工作机制,节点A,路由器A,本地链路,ICMPv6(类型=133)路由请求报文,源地址:节点A的本地链路地址(FE80:/10),目的地址:所有路由器多播地址(FF02:2),ICMPv6(类型=134)路由通告报文,源地址:路由器A的本地链路地址,目的地址:所有节点多播地址(FF02:1),前缀:2001:410:0:1:/64,生存期:无限期,前缀为2001:410:0:1:/64,FE80:250:3EFF:FEE4:4C00,路由器请求通告工作机制节点A路由器A本地链路ICMPv6(类,82,3. 重复地址探测DAD,DAD是无状态自动配置和节点启动时的一个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(类型=13,84,为什么要进行重复地址探测,链路上的节点IP地址不全是无状态地址配置的。有可能会有有状态地址配置的节点存在。所以地址可能会重复。,还有一种情况会发生地址重复,当子网前缀很长,后面加的MAC地址不需要48位时,而只需获取MAC地址的一部分(如只截取了产品序列号),可能会发生重复地址,这种情况应该很少发生。,为什么要进行重复地址探测链路上的节点IP地址不全是无状态地址,85,5.5.5 前缀重新编址,因为IPv6协议的严格路由聚合,当一个组织改变ISP时,它必须进行前缀重新编址,使用新前缀。,前缀重新编地址可以从旧网络前缀,平稳过渡到新网络前缀。,这种平稳过渡对用户应该是透明的。要实现透明重新编址,则所有节点需要使用无状态自动配置。,5.5.5 前缀重新编址因为IPv6协议的严格路由聚合,当,86,前缀重新编址过程,前缀重新编址机制类似于前缀通告机制,使用相同的ICMPv6报文和多播地址。,前缀重新编址过程:,首先,站点中的路由器,继续通告当前的前缀,,但是有效生存期和首选生存期被减小到接近于0的值,然后,路由器开始在本地链路上,通告新的前缀,。,这时,在本地链路上至少有新旧两个前缀。,节点收到这些路由器通告报文后,发现当前前缀有小的生存期,从而被废止使用,但它得到了新的前缀。,前缀重新编址过程前缀重新编址机制类似于前缀通告机制,使用相同,87,在新旧前缀转换期间,所有节点使用这两个单播地址:,旧单播地址:基于旧前缀,使用旧地址的当前连接仍被处理。,新单播地址:新连接使用新地址来建立。,当旧前缀被完全废止时(生存期已经过期为0时),路由器通告报文仅包括新的前缀。,在新旧前缀转换期间,所有节点使用这两个单播地址:,88,5.5.6 路由器重定向,重定向,:类似于IPv4中的ICMP的重定向消息。主机有可能选错下一跳。接收到写错地址的数据包的路由器会把数据包重新发送给正确的下一跳。这个过程叫做重定向。,重定向报文,:在重定向一个数据包到其正确的目的站点后,路由器就可以向错发数据的主机发送一个重定向报文,报告正确的下一跳地址。,当主机收到一个重定向报文时,它应更新本地路由表中的纪录,使用建议的下一跳地址。,5.5.6 路由器重定向重定向:类似于IPv4中的ICMP,89,5.5.7 NDP总结,NDP机制是IPv6协议的基础组成部分,已经介绍的内容:,用邻节点请求和邻节点通告消息取代ARP;,无状态自动配置使用前缀通告、DAD和前缀重新编址机制;,路由器重定向与IPv4的重定向相似。,5.5.7 NDP总结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消息、多播和其它地址机制IC,91,Any questions?,Thanks!,Any questions?Thanks!,92,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!