NDP-IPV6邻居发现协议-链路层地址解析
IPv6与IPv4的ARP不同,为了完成MAC地址和IPv6地址之间的映射,IPv6使用了邻居发现协议,称为NDP。
NDP利用特殊的ICMPv6数据包来执行各种功能。IPv6利用邻居请求(NS)和邻居广告(NA)消息来完成ARP请求和ARP回复所做的事情。

在IPv6上没有广播,IPv6利用组播地址来请求和发布信息。IPv6使用的这些多播地址被映射到以太网,以便在链路层传播NDP数据包。
包含IPv6多播映射的以太网帧以33:33:XX:XX:XX十六进制的前二个字节来识别。IPv4到以太网多播映射以太网帧以字节值01:00:5E:XX:XX:XX或01:80:C2:XX:XX:XX的前三个字节来识别。一些使用组播地址的协议都是IEEE及IANA所有的,这些值标识着这些机构。
当处在二层交换机管理的网络环境中时:
首先了解链接本地地址的概念,是客户端用于与直接连接的对等点交换信息的地址,因此称为“链接本地”。链接本地地址的子网范围为FE80::/10,/10就是fe80的前缀,fe80二进制是:1111 1110 1000 0000,从左向右数,十位二进制为1111 1110 10,这十位是固定的,后面的118位是可以变动的。
客户端的MAC地址用于以称为扩展唯一标识符EUI-64的格式构造链接本地地址。构造示例:
网卡MAC地址为:3C:2C:30:E8:00:01,添加FF:FE,构造为3C:2C:30:FF:FE:E8:00:01。将3C(二进制00111100),下标为0,从左向右数第6位翻转,变为3E(二进制00111110),构造变为3E:2C:30:FF:FE:E8:00:01,格式化为IPv6表达:3E2C:30FF:FEE8:0001,再加上链接本地前缀后,FE80::3E2C:30FF:FEE8:0001。
IPv6的几个重要的多播地址:

图中说明了在发送ICMPv6 echo请求(ping6)之前发生的情况。配置的地址为FD12::101:102 Linux2客户端发送NS消息,以获取IPv6地址为FD12::101:101 Linux1客户端的MAC地址。客户端Linux1侦听其请求的节点多播地址FF02::1:FF01:101,同样是全节点多播子网FF02::1加上客户端01:0101 IPv6地址的最后24位。

对特定主机MAC地址的查询而发送NS

对FD12::101:101的MAC查询的响应




