IPv6基础3 地址解析

     NDP协议是IPv6体系中一个 重要的基础协议,它的实现基础是ICMPv6,通过使用ICMPv6中的功能,它完成了许多功能,如实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。

NDP所使用的所有报文都封装在ICMPv6的报文中。

NDP通过使用三层协议进行地址解析,可以使得使用不同数据链路层的协议进行通信,即下层不同没有关系,但是上层核心是基于TCP/IP即可。

同时三层的地址解析可以使得ARP的欺骗消失

使用组播的方式进行ARP解析,减少交换网络的负担。

1、ICMPv6地址解析

虽然上面说是NDP进行了地址解析,但是其核心还是使用ICMPv6进行地址解析,只不过是在ICMPv6报文的基础上添加新的结构。

ICMPv6地址解析的过程中总共使用了两种ICMPv6的报文

1、NS报文:type=135 code=0

 我们可以从中看到NS报文的格式是怎么样的,其实十分的显而易见,它不过是在ICMP的数据部分做了手脚,改成了ICMPv6的option,而这个option的字段总共分为三段,第一段是type类型,标识了源端的二层地址类别,然后就是长度,它的长度是8字节,然后就是源端的MAC地址

2、NA报文:type=136 code=0

我们现在看一下NA,也就是对于NS报文是如何回复的。

 我们可以看到大致都一样,但是NA在NS中的保留字段中填入了它的IP地址,同时它的option字段中的type字段的解释也不一样了,变为了target,而在NS中是source,这样就可以很清楚的分清楚请求和回应的对象是谁。Targer就是被请求的,Source就是请求的,然后其他的结构都是一样的。回应的主机在option字段中填入它的mac地址,回送给请求端。 

说到这里我们会发现,肯定有人会问,那请求者不知道被请求者的地址,那么它的目的IP和mac帧的目的mac是什么。这里就用到了一个组播地址,如果是arp的话就直接IP使用广播而mac地址是使用全f进行arp报文的转发,这样就使得二层交换流量增加,这边使用了组播,仅只有加入到这个组播组当中的主机才能对这个报文进行处理。

那么这个组播是啥呢,来个专业的定义:

  • 被请求节点组播地址

    被请求节点组播地址通过节点的单播或任播地址生成。当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。一个单播地址或任播地址对应一个被请求节点组播地址。该地址主要用于邻居发现机制和地址重复检测功能。

    IPv6中没有广播地址,也不使用ARP。但是仍然需要从IP地址解析到MAC地址的功能。在IPv6中,这个功能通过邻居请求NS(Neighbor Solicitation)报文完成。当一个节点需要解析某个IPv6地址对应的MAC地址时,会发送NS报文,该报文的目的IP就是需要解析的IPv6地址对应的被请求节点组播地址;只有具有该组播地址的节点会检查处理。

简单来说就是假如一个设备若拥有了一个单播或者任播地址,那么它就相当于加入到一个组播组当中,于是处于这个组播组当中的主机就必须对这个NS报文做出回应。

这个组播地址叫做被请求节点的组播地址,它的形成也是很有特点,它的地址格式是:

  • FF02::1:FF00:0/104

这个地址仅仅使用了104位,还有24为使用单播地址的最后24位,组播地址就与IP地址扯上了关系,因此就可以进一步缩小组播组的范围,同时还减少了各个接受设备的处理量,因为只有检查到第二层之后,如果发现后面24位不会对应,于是就丢弃。

但是这个仅仅是三层的目的IP,那目的mac是多少呢。mac地址使用使用这样的格式:

3333+单播地址后32位,于是目的mac和目的IP都形成了,而且目的IP和目的mac都与

被请求者的IP地址相关联,这就使得设备对这类报文的处理可以在低层进行判断是否接受。

最后我们再来总结一下NS报文的目的IP和目的MAC如何形成:

1、首先确定被请求节点的地址格式为:

FF02::1:FF00/104

2、将地址被请求者的单播IP地址的后24位填补在被请求节点地址的背后形成NS报文的目的IP地址

3、将3333+被请求节点地址的后32位形成NS报文的目的mac地址。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mllllk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值