IPv6地址解析详解

本文详细介绍了IPv6的NDP(Neighbor Discovery Protocol)协议,包括NDP的基本功能、五种报文类型(RA、RS、NS、NA、Redirect)以及在地址解析中NS和NA报文的工作原理。NDP在IPv6中起到类似IPv4 ARP的角色,但使用了不同的机制,如基于组播的被请求节点组播地址。此外,文章还通过实例解析了NS和NA报文的封装过程,并提供了抓包验证的结果。
摘要由CSDN通过智能技术生成

我们都知道,为了实现数据包在数据链路层的封装,需要有一个机制来发现网络中IP地址和MAC地址的对应关系。在IPv4协议栈中,该机制为ARP协议,而在IPv6中,该机制的实现是基于NDP(Neighbor Discovery Protocol邻居发现)协议,今天,我就来给大家介绍一下IPv6的NDP协议。
本文涉及到一些IPv6的理论知识,要想读懂本文,您需要又一定的IPv6的基础,如果您对IPv6还不是很熟悉,欢迎查阅一下文章:IPv6报文格式讲解及其科学性探究IPv6地址简介IPv6各地址计算方式汇总

一、NDP协议简介

NDP,Neighbor Dicovery Protocol,邻居发现协议,是在ICMPv6版本定义的一种协议。在IPv4中,ICMP协议主要就是通过PING,检测网络的连通性。而在IPv6中,ICMPv6协议除了用来检测网络连通性外,还需要完成地址解析的任务。因此,如果没有ICMPv4协议,那么在IPv4中可能只是无法使用PING命令而已,但是对于IPv6,如果没有IPv6,可能无法完成网络的互联,因此,ICMPv6协议在IPv6协议栈中起到了越来越重要的作用。
在NDP协议中,一共定义了5种报文:
1、RA报文,即Router Advertisement,路由器公告报文,该报文主要是路由器用来周期性的发布自身的hop limit 、link MTU等消息。
2、RS报文,即Router Solicitation,路由器信息请求报文,该报文用于请求RA报文,当设备刚上线时,可能会使用该报文请求路由器发送RA报文,该报文可以使得路由器立即发送RA报文而不用等待RA周期。
3、NS报文,即Neighbor Solicitation,邻居请求报文,该报文用于请求地址解析。
4、NA报文,即Neighbor Advertisements,邻居公告报文,该报文用于答复NS报文,完成地址解析和报文刷新等功能。
5、Redirect报文,当路由器发现更好的报文转发路径时,会使用该报文通知其他设备。
而要完成IPv6的地址解析功能,所用到的就是NS和NA报文。在IPv6实现地址解析,与IPv4有两点很大的不同:
①IPv4的ARP协议是链路层封装协议,没有涉及到IP地址的概念,而IPv6实现的地址解析是网络层协议,在发送NS和NA报文时,需要封装源IP地址和目的IP地址。
②IPv4中,ARP协议使用了广播的MAC地址,而在IPv6中,因为没有广播的定义,因此在IPv6中在进行地址解析的时候,所有的广播功能实现都是基于组播,而使用的组播报文,就是在下面介绍的被请求节点组播报文。

二、被请求节点组播地址简介

被请求节点组播地址是IPv6中组播地址的一种。该中形式的组播在scope字段为2,因此该组播地址前面都是一样的,为:
ff02::1:ff
该种形式的组播只有后24bit不同。并且后面的24bit的具体数值,就是该地址所对应的IPv6单播地址的后24bit。有关该地址的计算详情请见IPv6各地址计算方式汇总
在IPv6实现地址解析的时候,都是先由被解析一方的IPv6单播地址,计算出该地址对应的被请求节点组播地址,然后再由该地址计算出组播MAC地址,最后完成封装的。

三、NS、NA报文详解

尽管IPv6的地址解析实现与IPv4有很多的不同,但是其基本原理都是一样的,他们的目的都是询问一个IP地址所对应的MAC地址。在本节,我将从NS和NA报文的细节入手,还原IPv6地址解析的全过程:
对于发送NS报文的一方,必然是要向同网段的IPv6地址尝试发数据包的一方,如果该设备不知道目的IPv6地址所对应的MAC地址,就无法完成数据包在数据链路层的封装,因此在发送数据包之前,他就必须先发送NS数据包,来询问该IPv6地址所对应的MAC地址。
在NS报文中,完成上述功能最重要的是target字段和option字段,这就类似于IPv4中ARP的源目MAC地址和源目IP地址相似。target字段就是要解析的IP地址,而option字段就是发送方的MAC地址。NS和NA报文,就是通过这两个字段,以及源目IP地址,来实现的地址解析功能,下面的讲解就着重介绍一下NS和NA报文中这两个字段的封装。
假设网络拓扑如下所示:
在这里插入图片描述
假设R1要PING R2
NS报文:
对于R1发送给的NS报文来说,源IP地址肯定是自己的IP地址,即2000::1,而目的IP地址则要填写R2的IPv6地址对应的被请求节点组播地址,很容易计算得到该地址为ff02::1:ff00:2。在ICMPv6报文中,target字段为R2 的IPv6地址,即2000::2,而option字段为R1的MAC地址。
因此,最后得到的NS报文为:

源MAC:R1的MAC地址
目的MAC:3333:ff00:2
	源IP:2000::1
	目的IP:ff02::1:ff00:2
	ICMP:
		target:2000::2
		option:R1的MAC地址

NA报文:
对于R2给R1回复的NA报文,源IP地址是R2自己的IPv6地址,目的IP地址是R1的IP地址,即2000::1,target还是R2的IPv6地址——2000::2,option为R2的MAC地址。
因此,最后的NA报文为:

源MAC:R2的MAC地址
目的MAC:R1的MAC地址
	源IP:2000::2
	目的IP:2000::1
	ICMP:
		target:2000::2
		option:R2的MAC地址

四、抓包验证

最后,我采用一个小的实验,实现了NS和NA报文完成地址解析的功能,在实验过程中,抓取数据包如下:
NS、NA数据包如下:
在这里插入图片描述
在NS报文中target和option字段如下:
在这里插入图片描述
在NA报文中target和option字段如下:
在这里插入图片描述
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200/article/details/118652282

中文高清 PDF 格式 目 录 译者序 前言 第一部分 IP基础知识 第1章 为何要升级IP 1 1.1 IP的影响 1 1.1.1 什么是IP 2 1.1.2 IP应用在哪些地方 3 1.1.3 有多少人在使用IP 3 1.1.4 当IP发生变化时会产生哪些影响 4 1.2 IPv4的局限性及其缺点 4 1.2.1 IP地址空间危机 5 1.2.2 IP性能议题 5 1.2.3 IP安全性议题 6 1.2.4 自动配置 6 1.3 紧迫感 7 第2章 TCP/IP网络互联简介 8 2.1 网络互联问题 8 2.2 分层网络互联模型 9 2.2.1 OSI模型 10 2.2.2 Internet模型 10 2.2.3 封装 11 2.3 IP 12 2.3.1 IP寻址 13 2.3.2 IP头 15 2.3.3 数据报的转移 17 2.4 ICMP 18 2.5 选路、传输和应用协议 18 2.5.1 选路协议 19 2.5.2 传输协议 19 2.5.3 应用协议 19 第3章 IPv4的问题 20 3.1 修改还是替换 20 3.2 过渡还是不过渡 26 第4章 通向IPng之路 27 4.1 概念的诞生 27 4.1.1 对Internet将来的估计 27 4.1.2 Internet发展中需要考虑的领域 28 4.2 第一回合 29 4.3 拾遗 31 4.4 IPv6,第一回合 32 4.5 IPv6,第二回合 32 第二部分 IPv6细节 第5章 IPv6的成型 33 5.1 IPv6 33 5.1.1 变化概述 33 5.1.2 包头结构 35 5.1.3 IPv4与IPv6的比较 36 5.1.4 流标签 37 5.1.5 业务流类别 37 5.1.6 分段 38 5.1.7 扩展头 39 5.2 ICMPv6 40 第6章 IPv6寻址 43 6.1 地址 43 6.1.1 地址表达方式 43 6.1.2 寻址模型 44 6.1.3 地址空间 45 6.2 地址类型 46 6.2.1 广播路在何方 46 6.2.2 单播 46 6.2.3 单播地址格式 47 6.2.4 组播 51 6.2.5 泛播 53 第7章 IPv6扩展头 54 7.1 扩展头 54 7.2 扩展头的用法 54 7.2.1 扩展头的标识 55 7.2.2 扩展头的顺序 56 7.2.3 建立新的选项 56 7.2.4 选项扩展头 56 7.2.5 选项 57 7.3 逐跳选项 58 7.4 选路头 59 7.5 分段头 59 7.6 目的地选项 60 第8章 IPv6选路 62 8.1 地址对IP网络的影响 62 8.1.1 标识符和定位符 62 8.1.2 地址分配、无缝互操作和网络 拓扑 64 8.2 选路问题 65 第9章 IPv6身份验证和安全性 69 9.1 为IP增加安全性 69 9.1.1 安全性目标 69 9.1.2 RFC 1825及建议的更新 70 9.2 IPsec 70 9.2.1 加密和身份验证算法 71 9.2.2 安全性关联 73 9.2.3 密钥管理 74 9.2.4 实现IPsec 74 9.2.5 隧道模式与透明模式 75 9.3 IPv6安全性头 76 9.3.1 身份验证头 76 9.3.2 封装安全性净荷头 78 第10章 相关的下一代协议 80 10.1 协议的层次 80 10.1.1 应用层 80 10.1.2 传输层 80 10.1.3 链路层 81 10.2 IPv6域名系统扩展 81 10.3 地址解析协议和邻居发现 82 第11章 自动配置和移动IP 84 11.1 IPv6的即插即用 84 11.1.1 状态自动配置与无状态自动 配置 84 11.1.2 IPv6无状态自动配置 85 11.1.3 BOOTP和DHCP 86 11.1.4 DHCPv6 86 11.2 移动网络技术 86 11.2.1 IPv4中的移动IP 87 11.2.2 IPv6中的移动IP 87 第三部分 IP过渡和应用 第12章 IP过渡策略 89 12.1 IPv6协议隧道方法 89 12.1.1 与IPv4兼容的IPv6地址 90 12.1.2 配置隧道和自动隧道 90 12.1.3 IPv6隧道类型 90 12.2 IPv4/IPv6双栈方法 91 12.3 IPv6地址分配 92 12.4 6BONE 93 第13章 IPv6解决方案 94 13.1 需要支持IPv6的产品 94 13.2 正在开发IPv6产品的公司 94 13.3 对IPv6的期待 95 附录A 与IPv6有关的RFC索引 97 附录B RFC精选 100
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

永远是少年啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值