IPV6邻居发现报文学习算法
IPv6的邻节点发现协议的全部功能都由如下报文来完成:ide
l 路由器请求报文;学习
l 路由器公告报文;spa
l 邻节点请求报文;orm
l 邻节点公告报文;接口
l 重定向报文。路由
请求报文分为2类:get
1. 地址冲突检测(DAD)类邻节点请求报文。it
2. 邻居可达性检测(NUD)类邻节点请求报文。table
DAD NS报文 |
|
以太层 |
|
源MAC |
目的MAC |
发送方网卡的MAC |
与目标的请求节点地址相对应的以太网MAC地址(组播MAC) |
IP层 |
|
源IP |
目的IP |
:: |
目标的请求节点地址(组播IP) |
DAD类NS报文以太层,IP层参数值的说明:
报文例子是DAD NS报文
源MAC:发出该NS报文的网卡的MAC,例如报文示例的00:0C:29:ED:92:F2
目的MAC:与目标的请求节点地址相对应的以太网MAC地址(组播MAC),例如报文示例的33:33:FF:BC:DE:F1,它是目标的请求节点地址1234:5678:90AB:CDEF:2345:6789:A0BC:DEF1对应的以太网MAC地址。有一个对应算法,补充介绍。
源IP:发送NS报文的源IP。例如报文示例的 ::。其中::为DAD报文发送NS报文专用。
目的IP:发送到哪一个IP上,这里是目标的请求节点地址。例如报文示例的FF02::1:FFBC:DEF1。有一个对应的算法,补充介绍。
Target Address:请求的IP地址。例如报文示例的1234:5678:90AB:CDEF:2345:6789:A0BC:DEF1。
NUD NS报文 |
|
以太层 |
|
源MAC |
目的MAC |
发送方网卡的MAC |
邻节点的单播MAC地址 |
IP层 |
|
源IP |
目的IP |
发送方接口的单播IPv6地址 |
目标的单播地址 |
邻居可达性检测类请求报文中,由于邻居的信息已是肯定的,因此对应的目的MAC,目的IP都是肯定的单播。内容相对简单。
邻节点请求报文通用参数:
报文类型:135
源链路层地址选项:该选项非DAD请求报文中打开。报文中带着本身自己的MAC。
地址解析NS报文 |
|
以太层 |
|
源MAC |
目的MAC |
发送方网卡的MAC |
与目标的请求节点地址相对应的以太网MAC地址(组播MAC) |
IP层 |
|
源IP |
目的IP |
发送方接口的单播IPv6地址 |
目标的请求节点地址(组播IP) |
公告报文分为2类:
1. 回复邻节点请求的公告报文。
2. 自动发送类公告报文。
回复NUD请求的NA报文/回复地址解析
回复NUD请求的NA报文/回复地址解析 |
|
以太层 |
|
源MAC |
目的MAC |
发送方网卡的MAC |
NS请求的最初发送者的单播MAC地址(即NS报文中源MAC) |
IP层 |
|
源IP |
目的IP |
发送方接口的单播IPv6地址 |
NS请求的最初发送者的单播IP地址(即NS报文中的源IP) |
回复DAD请求的NA报文
回复DAD请求的NA报文 |
|
以太层 |
|
源MAC |
目的MAC |
发送方网卡的MAC |
NS请求的最初发送者的单播MAC地址(即NS报文中源MAC) |
IP层 |
|
源IP |
目的IP |
发送方接口的单播IPv6地址 |
FF02::1 |
节点会主动发送NA报文,公告本身的信息。免费ARP?
自发发送NA报文 |
|
以太层 |
|
源MAC |
目的MAC |
发送方网卡的MAC |
33:33:00:00:00:01 |
IP层 |
|
源IP |
目的IP |
发送方接口的单播IPv6地址 |
FF02::1 |
特殊MAC:33:33:00:00:00:01,这是与链路本地范围全部节点多播地址相对应的以太网MAC地址。
特殊IP:FF02::1,这是链路本地范围全部节点多播地址。
邻节点公告报文通用参数:
报文类型:136
分为2种,一种是接口未得到linklocal地址,另外一种是接口已经得到linklocal地址。
未得到linklocal地址 |
|
以太层 |
|
源MAC |
目的MAC |
发送方网卡的MAC |
33:33:00:00:00:02 |
IP层 |
|
源IP |
目的IP |
:: |
链路本地范围全部路由器多播地址FF02::2 |
已经得到linklocal地址 |
|
以太层 |
|
源MAC |
目的MAC |
发送方网卡的MAC |
33:33:00:00:00:02 |
IP层 |
|
源IP |
目的IP |
发送方接口的链路本地IPv6地址 |
链路本地范围全部路由器多播地址FF02::2 |
路由请求报文通用参数:
报文类型:133
源链路层地址选项
路由器通告报文分为2种,一种是单播RA,另外一种是组播RA。
RA单播报文 |
|
以太层 |
|
源MAC |
目的MAC |
发送方网卡的MAC |
发送RS请求报文的主机的单播MAC地址 |
IP层 |
|
源IP |
目的IP |
发送方接口的链路本地IPv6地址 |
发送RS请求报文的主机的的单播IPv6地址 |
RA组播报文 |
|
以太层 |
|
源MAC |
目的MAC |
发送方网卡的MAC |
33:33:00:00:00:01 |
IP层 |
|
源IP |
目的IP |
发送方接口的链路本地IPv6地址 |
FF02::1 |
路由通告报文通用参数:
报文类型:134
当前条数限制:255
管理地址配置标志:当管理地址配置标志为1时,表示接收这个路由器公告报文的主机除了有可能从无状态地址自动配置协议得到地址外,还必须使用有状态地址配置协议(DHCPv6)来得到地址。
其余状态配置标志:当其它状态配置标志为1时,表示收到这个路由器通告报文的主机必须使用有状态地址配置协议(DHCPv6)来得到非地址配置的信息。
。。。
假设节点IP为1234:5678:90AB:CDEF:2345:6789:A0BC:DEF1,那么它对应的节点地址为FF02::1:FFBC:DEF1
IPv6地址对应节点IPv6地址(组播) |
|
IPv6地址 |
1234:5678:90AB:CDEF:2345:6789:A0BC:DEF1 |
对应节点IPv6地址(组播) |
FF02::1:FFBC:DEF1 |
算法内容:
IPv6地址对应的节点IPv6组播地址,有固定前缀FF02::1:FF,剩余部分为原地址的后24位。
将固定前缀与原地址的后24位组合在一块儿就计算出对应的节点地址。
假设节点地址为1234:5678:90AB:CDEF:2345:6789:A0BC:DEF1,那么它对应的MAC为33:33:FF:BC:DE:F1
IPv6地址对应组播MAC地址 |
|
IPv6地址 |
1234:5678:90AB:CDEF:2345:6789:A0BC:DEF1 |
对应节点IPv6地址(组播) |
FF02::1:FFBC:DEF1 |
对应组播MAC |
33:33:FF:BC:DE:F1 |
算法内容:
MAC都是48位,对应的组播MAC有固定前缀33:33,剩余部分为要发送的地址的后32位。
将固定前缀与对应节点IPv6地址的低32位组合在一块儿就计算出对应的以太MAC。