IPv6协议族的其它协议

摘自:《深入理解计算机网络》 王达著 机械工业出版社
相关知识链接
1. IPV4数据报头部格式
2. IPv6数据报头部格式
3. IPv4数据报的封装与解封装
4. IPv4数据报的分段与重组
5. ARP协议报文格式及ARP表
6. ARP地址解析原理
7. ICMP协议及报文格式

IPv6协议族中的其它协议

在讲IPv6数据报头部格式的时候已经讲了部分的IPv6协议了,在此补充一下IPv6其它的协议。在IPv6协议族中还包括ICMPv6、ND(邻居发现)和MLD(绝色播侦听器发现)协议。这些协议分别用来取代IPv4协议族中对应的协议。

  • ICMPv6取代ICMP。ICMPv6提供诊断功能,并可在IPv6数据报无法传送时报告错误。
  • MLD取代IGMP。MLD管理IPv6多组播成员身份。
  • ND取代ARPND管理相邻节点间的交互,包括自动配置地址和将下一跃点IPv6地址解析为MAC地址。

ICMPv6

ICMPv6与上节介绍的ICMP一样,用于报告传送或者转发中的错位并为疑难解答提供简单的回显服务。同事ICMPv6协议还为ND和MLD消息提供消息结构。下表定义了ICMPv6消息,并做说明。

ICMPv6消息 说明
回显请求 发送主机发送请求回显消息来检查与特点节点的IPv6连接
回显应答 节点发送回显应答答复相应ICMPv6请求回显消息
无法到达目标 路由器或目标主机发送“无法到达目标”消息,通知发送主机它们的数据报或有效负载无法传送
数据报太大 路由器发送“数据报太大”消息,通知发送主机它们的数据报因太大而无法转发
超时 路由器发送“超时”消息,通知发送主机IPv6数据报的跃点限制已经到期
参数问题 路由器在处理IPv6扩展标头时,如果遇到错误,便发送“参数问题”消息来通知发送主机

ICMPv6与IPv4协议族中ICMP协议一样,已包含了一系列已定义的“无法到达目标”消息,如下表:

无法到达目标消息 说明
找不到路由 路由器在其本地IPv6路由表中找不到指向目标IPv6地址的路由时,便发送此消息
管理策略禁止通信 当路由器上配置的某条策略禁止与目标进行通信时,路由器便发送此消息。例如,当防火墙丢弃数据报时,路由器便发送此类消息
无法到达目标地址 IPv6无法解析目标的MAC地址时便发送此消息
目标端口无法访问 当发往目标UDP端口的、包含UDP消息的IPv6数据报与正在侦听的应用程序不对应时,目标主机便发送此消息

ND(Neighbor Discovery)邻居发现

ND是一组IPMPv6消息和过程,用于确定相邻结点间的关系。ND取代IPv4中使用的ARP、ICMP路由器发现和ICMP重定向功能,提供了更丰富的功能。主机可以使用ND完成以下任务:

  • 发现相邻路由器。
  • 发现并自动配置地址和其他参数。

路由器可以使用ND完成以下任务:

  • 公布它们的存在、主机地址和其它配置参数。
  • 向主机提示更好的下一个跃点地址以帮助数据报转发到特定目标。

结点(包括主机和路由器)可以使用ND完成以下任务:

  • 解析IPv6数据报将被转发到的一个相邻结点的链路层地址(又称MAC地址)。
  • 动态公布MAC地址的更改。
  • 确定某个相邻结点是否仍然可以到达。

下表描述了ND过程

邻居发现过程 说明
路由器发现 主机通过该过程来发现它的相邻路由器
前缀发现 主机通过该过程来发现本地子网目标的网络前缀
地址自动配置 无论是否存在地址配置服务器(例如运行动态主机配置协议版本6(DHCPv6)的服务器),该过程都可以为借口配置IPv6地址
地址解析 结点通过该过程将邻居的IPv6地址解析为它的MAC地址。IPv6中的地址解析相当于IPv4中的ARP
下一跃点确定 结点根据目标地址通过该过程来确定数据报要转发到的下一跃点IPv6地址。下一跃点地址可能是目标地址,也可能是某个相邻路由器的地址
邻居不可访问性检测 结点通过该过程确定邻居的IPv6层是否能够发送或接受数据报
重发地址检测 结点通过该过程确定它打算使用的某个地址是否已被相邻节点占用
重定向功能 该过程提示主机更好的第一跃点IPv6地址来帮助数据报向目标传送

IPv6地址解析包括交换邻居请求和邻居公布消息,从而将下一个跃点IPv6地址解析为其对应的MAC地址。发送主机在适当的接口上发送一条多播邻居请求消息。邻居请求消息包括发送节点的MAC地址。
当目标节点接收到邻居请求消息后,将使用邻居请求消息中包含的源地址和MAX地址的条目更新其邻居缓存(相当于ARP缓存)。接着,目标节点向邻居请求消息的发送方发送一条包含它的MAC地址的单播邻居公布消息。
接收到来自目标的邻居公布之后,发送主机根据其中包含的MAC地址使用目标节点条目来更新它的邻居缓存。此时,发送主机和邻居请求的目标就可以发送单播IPv6通信量了。
主机通过路由器发现过程会尝试发现本地子网上路由器的路由集合,IPv6路由器发现过程如下:

  1. IPv6路由器定期在子网上发送多播路由器公布消息,以公布它们的路由器身份信息和其它配置参数(例如地址前缀和默认跃点限制)。
  2. 本地子网上的IPv6主机接受路由器公布信息,并使用其内容来配置地址、默认路由器和其它配置参数。
  3. 一个正在启动的主机发送多播路由器请求消息。收到路由器请求消息后,本地子网上的所有路由器都向发送路由器请求的主机发送一条单播路由器公布信息。该主机接受路由器公布消息并使用其内容来配置地址、默认路由器和其它配置参数。

MLD(Muticast Listener Discover)组播侦听发现

MLD是IPv4协议族中的IGMP更新版本,是由路由器和节点交换的一组ICMPv6消息,供路由器用来为各个连接的接口发现有侦听节点的IPv6多播地址的集合。与IGMP一样,MLD只能发现那些至少包含一个侦听器的多播地址,而不能发现各个多播地址的单个多播侦听列表。与IGMP不同的是,MLD使用ICMPv6消息而不是定义它自己的消息结构。MLD消息有三种类型:

  • 多播侦听器查询:路由器使用多播侦听器查询消息来查询子网上是否有多播侦听器。
  • 多播侦听报告:多播侦听器使用多播侦听器报告消息来报告它们有兴趣接收发网特定多播地址的多播通信量,或者使用这类消息来响应多播侦听器查询消息。
  • 多播侦听完成:多播侦听器使用多播侦听器完成消息来报告它们可能是子网上最后的多播组成员。

你可能感兴趣的:(计算机网络,ipv6,计算机网络,IPv6协议族)