HuaWei ❀ IPv6地址解析

IPv6地址解析

在IPv4中,当主机需要和目标主机通信时,必须先通过ARP协议获得目的主机的链路层地址,在IPv6中,同样需要从IP地址解析到链路层地址的功能,邻居发现协议实现了这个功能;
ARP报文是直接封装在以太网报文中,以太网协议类型为0x0806,ARP则认为为2.5层协议,ND本身基于ICMPv6实现,以太网协议类型为0x86DD,即IPv6报文,IPv6下一个报头字段值为58,表示ICMPv6报文,由于ND协议使用的所有报文均封装在ICMPv6报文中,一般来说,ND被看作是第三层协议,在三层完成地址解析,主要有以下好处:

  • 地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议;
  • 可以使用三层的安全机制避免地址解析攻击;
  • 使用组播方式发送请求报文,减少了二层网络的压力;
    HuaWei ❀ IPv6地址解析

地址解析过程中使用了两种ICMPv6报文:邻居请求报文NS、邻居通告报文NA

  • NS:Type字段为135,Code为0,在地址解析中的作用类似于IPv4中的ARP请求报文;
  • NA:Type字段为136,Code为0,在地址解析中的作用类似于IPv4中的ARP应答报文

Host A在向Host B发送报文之前它必须要解析出Host B的链路层地址,所以首先Host A会发送一个NS报文,其中源地址为Host A的IPv6地址,目的地址为Host B的被请求节点组播地址,需要解析的目标IP为Host B的IPv6地址,这就表示Host A想要知道Host B的链路层地址,同时需要指出的是,在NS报文的Options字段中还携带了Host A的链路层地址;
当Host B接收到了NS报文之后,就会回应NA报文,其中源地址为Host B的IPv6地址,目的地址为Host A的IPv6地址,Host B的链路层地址被放在Options字段中,这样就完成了一个地址解析的过程;