ICMPv6
IP节点需要一个特别的协议来交换报文以懂得与IP相干的情况。ICMP正好实用于这种需求。在IP v 4升级到IPv6的过程中,ICMP也经历了必定的修正。ICMPv6在RFC 1885 中定义。ICMP报文可以用来报告弊病和信息状态,以及类似于包的Internet探听( Ping )和跟踪路由的功效。
IGMP一开始就包含在ICMPv6规范中,并且在1 9 9 7年11月发表的RFC 2236 中得到更新,1 9 9 8年初秋,IGMP第3版也开始了讨论。IGMP可以用来支撑组播传输,它为主机供给了向本地路由器报告其属于某个组播组的方法。
ICMPv6报文
ICMP报文的产生起源于一些弊病情况。例如,如果一个路由器由于某些原因不能处理一个IP包,它就可能会产生某种类型的ICMP报文,并直接回送到包的源节点,然后源节点将采用一些措施来纠正所报告的弊病状态。例如,如果路由器无法处理一个IP包的原因是由于包太长而无法将其发送到网络链路上,则路由器将产生一个ICMP弊病报文来指出包太长,源节点在收到该报文后可以用它来断定一个更加合适的包长度,并通过一系列新的IP包来重新发送该数据。
RFC 1885中定义了以下报文类型(没有包含该文档中定义的有关组的报文):
• 目标地不可达。
• 包太长。
• 超时。
• 参数问题。
• 回声恳求。
• 回声应答。 下面将详细介绍这些报文。
1. 目标地不可达
这个报文由路由器或源主机在由于除业务流拥塞之外的原因而无法转发一个包的时候产生。这种弊病报文有五个代码,包含:
• 0:没有达到目标地的路由。这个报文在路由器没有定义IP包的目标地路由时产生,路由器将采用默认路由来发送无法利用路由器的路由表进行转发的包。
• 1:与目标地的通信被管理员禁止。当被禁止的某类业务流欲达到防火墙内部的一个主机时,包过滤防火墙将产生该报文。
• 2:不是邻居。当利用IPv6选路扩大头并严格限定路由时,将利用这个代码。当列表中的下一个目标地与当前正履行转发的节点不能共享一个网络链路时,将会产生该报文。
• 3:地址不可达。这个代码指出在把高层地址解析到链路层(网络)地址时遇到了一些问题,或者在目标地网络的链路层上去往其目标地时遇到了问题。
• 4:端口不可达。这种情况产生在高层协议(如D P )没有侦听包目标端口的业务量,且传输层协议又没有其他措施把这个问题通知源节点时。
2. 包太长
当吸收某包的路由器由于包长度大于将要转发到的链路的M T U,而无法对其进行转发时,将会产生包太长报文。该ICMPv6弊病报文中有一个字段指出导致该问题的链路的M T U值。在路径M T U创造过程中这是一个有用的弊病报文。
3. 超时
当路由器收到一个跳极限为1的包时,它必须在转发该包之前减小这个数值。如果在路由器减小该数值后,跳极限字段的值变为0 (或者是路由器收到一个跳限制字段为0的包),那么路由器必须丢弃该包,并向源节点发送ICMPv6超时报文。源节点在收到该报文后,可以认为最初的跳限制设置得太小(包的真实路由比源节点想象的要长),也可以认为有一个选路循环导致包无法交付。
在“跟踪路由”功效中这个报文非常有用。这个功效使得一个节点可以标识一个包在从源节点到目标节点的路径上的所有路由器。它的工作方法如下:首先,一个去往目标地的包的跳极限被设置为1。它所达到的第一个路由器将跳减少极限,并回送一个超时报文,这样一起源节点就标识了路径上的第一个路由器。然后如果该包必须经过第二个路由器的话,源节点会再发送一个跳极限为2的包,该路由器将把跳极限减小到0,并产生另一个超时报文。这将持续到包最终达到其目标地为止。同时源节点也获得了从每个中间路由器发来的超时报文。
4. 参数问题
当IPv6头或扩大头中的某些部分有问题时,路由器由于无法处理该包而会将其丢弃。路由器的实现中应当可以产生一个ICMP参数弊病报文来指出问题的类型(如弊病的头字段、无法辨认的下一个头类型或无法辨认的IPv6选项),并通过一个指针值指出在第几个字节遇到这种弊病情况。
5. ICMPv6回声功效
ICMPv6中包含了一个与弊病情况无关的功效。所有IPv6节点都需要支撑两种报文:回声恳求和回声应答。回声恳求报文可以向任何一个正确的IPv6地址发送,并在其中包含一个回声恳求标识符、一个次序号和一些数据。尽管二者都是可选项,但回声恳求标识符和次序号可以用来区分对应不同恳求的响应。回声恳求的数据也是一个选项,并可用于诊断。
当一个IPv6节点收到一个回声恳求报文后,它必须回送一个回声应答报文。在应答中包含雷同的恳求标识符、次序号和在最初的恳求报文中携带的数据。ICMP回声恳求/应答报文对是Ping功效的基础。Ping是一个重要的诊断功效,因为它供给了一种方法来决定一个特定的主机是否与其他一些主机连接在雷同的网络上。