当前位置: 首页 > news >正文

IPv6中的ARP“NDP协议详解“

一、概述

        在IPv4网络环境当中,我们想要与对端进行网络通信时,首先需要去解析对方的MAC地址这样我们才能封装二层数据帧,就算访问不同网络时也需要解析网关的MAC,这些都是需要我们的ARP协议来进行操作完成的,但是在我们的IPv6网络环境当中并没有ARP协议,而是通过NDP协议来完成类似的操作,此文章我们将详细与大家介绍NDP协议的报文结构,NDP的工作机制等,方便大家对IPv6协议的进一步了解。

二、ICMPv6

        因为我们的NDP协议是封装在ICMPv6之上的所以这里我们先介绍一下ICMPv6协议并比较ICMPv6与ICMPv4的区别,ICMPv4在IPv4网络当中并不算特别重要,少了ICMPv4协议也可以正常通信,但在IPv6当中要是没有了ICMPv6则无法正常通信了,所以ICMPv6在IPv6网络当中非常重要。 

        ICMPv6是IPv6的基础协议之一,用于向原节点传递报文转发的信息或错误。

        协议类型好(即IPv6 Next Header)为58。

        在IPv6当中,ICMPv6除了提供ICMPv4的对应功能之外,还有其他一些功能的基础,如邻居发现、无状态地址配置、重复地址检测、PMTU发现等。

三、NDP

1、NDP能够实现的功能

  • 地址解析-ARP的功能
  • DAD-地址冲突检测-免费ARP功能
  • NUD-邻居不可达检测
  • 路由器发现-生成前缀信息-网关

2、报文类型

        常见的NDP报文类型有四个分别为:

  • RS(Router Solicitation)路由器请求报文
  • RA(Router Advertisement)路由器通告报文
  • NS(Neighbor Solicitation)邻居请求报文
  • NA(Neighbor Advertisement)邻居通告报文

2、NS和NA

在讲NS之前,我们先回顾一下IPv4中ARP是如何去解析对方的地址的。

首先我们想要去解析对方的MAC首先得有对方的三层信息就是IP,发出一个ARP的Request广播报文来寻找对方,对方在接收到我们的请求报文之后就会将自己的MAC地址填进去回复一个Reply响应报文,当我们接收到对方的响应报文时就得到了对方的MAC地址就可以封装二层数据了。

要注意的一点是,在IPv4当中使用ARP去请求MAC时发送的是一个广播报文,但在IPv6当中并没有广播报文,那我们在发送请求报文时目的IP怎么填写呢?

这里就需要用到我们IPv6详解当中介绍的被请求节点组播地址了,我们NS在请求对方MAC的时候目的IP填写的就是我们通过计算得出的对方的被请求节点组播地址。

举个例子:

此时我们让AR1去请求AR2的MAC,那么就会发出这样的一个报文

AR2在接收到这个NS请求报文之后,拆包发现目的MAC为自己的被请求节点组播地址的MAC,就会继续往上层进行拆包,拆完后发现对方要请求我的MAC,AR2首先会将ICMPv6 Option当中的Link-layer address(AR1的MAC)与源IP做一个绑定形成一个邻居表,随后发送一个NA报文给对方告诉对方AR2我的MAC是多少。

AR1在收到AR2发送的NA邻居通告报文之后就会通过里面的MAC和IPv6地址做一个绑定形成邻居表。

3、DAD 

当我们在接口上配置好IPv6地址并UP之后,会发送一份NS报文,这个报文类似于IPv4网络当中的免费ARP。用来检测是否有地址冲突的,假如这个网络当中存在地址冲突,对方就会回复一个NA报文,本设备在接收到对方的NA报文之后就知道网络中已经有人使用了这个地址。

与IPv4不同的是,在IPv4网络当中如果存在地址冲突但双方还是可以正常使用该地址的只不过可能会将报文误发给对方,但IPv6网络当中如果发现存在地址冲突,本设备收到了对方的NA报文以后就会将该地址的状态置为DUPLICATE状态,不能使用该地址。

举个例子:

我们将AR2的接口IPv6地址配置与AR1一致,AR2的地址UP的时候就会发送一份NS用来做DAD地址冲突检测

AR1在收到AR2发送的NS报文之后就会回复一份NA,AR2在收到这份NA报文之后就知道该地址已经被人使用了,会将该地址置为DUPLICATE状态。

4、RS和RA

         在IPv6网络当中我们可以通过RS和RA报文来获取到前缀信息以及网关

举个例子:

我们让AR2去获取IPv6地址前缀,AR2会发出一份RS,当AR1收到这份RS时,就会将前缀放入到RA当中回复给AR2,AR2收到RA之后通过前缀+EUI64计算出一个IPv6地址进行使用。这就是我们所说的即插即用。

AR2的RS报文

AR1的RA报文

以上就是本章的全部内容了,感谢大家的浏览观看!文章若有错误或疑问可联系博主删除更改。

四、NDP案例

1、地址解析案例 

 

2、DAD案例

 3、无状态自动获取案例

http://www.lryc.cn/news/571082.html

相关文章:

  • Cesium快速入门到精通系列教程十:实现任意多个蜂巢似六边形组合
  • 内存泄漏到底是个什么东西?如何避免内存泄漏
  • 【企业容灾灾备系统规划】
  • 算法 学习 排序 2025年6月16日10:25:37
  • 用元框架思维,系统化构建你的专属AI助手Prompt
  • wpf 队列(Queue)在视觉树迭代查找中的作用分析
  • 记一次 .NET 某SaaS版CRM系统 崩溃分析
  • C#/.NET/.NET Core技术前沿周刊 | 第 42 期(2025年6.9-6.15)
  • 基于 C# 和 .NET 的 Spread.NET 数据处理实战
  • 深度学习入门指南:从基础概念到代码实践
  • vscode snippet 工程模板文件分享
  • CentOS 7 环境下 Visual Studio Code 安装与部署
  • 高防 IP 是如何帮助数藏行业防刷的
  • Objective-C与Swift混合编程
  • UDP访问DNS
  • Ubuntu 22.04离线安装Docker和NVIDIA Container Toolkit(使用gpu)
  • “智眸·家联“项目开发(一)
  • 【Java】抽象类与接口全解析
  • 【寻找Linux的奥秘】第十章:基础文件IO(上)
  • RGB解码:神经网络如何通过花瓣与叶片的数字基因解锁分类奥秘
  • 【云计算领域数学基础】组合数学优化
  • 基于nacos和gateway搭建微服务管理平台详细教程
  • elementui响应式数据类型变更情况
  • CVPR 2025最佳论文详解|VGGT:纯前馈Transformer架构,3D几何感知「大一统」模型来了!
  • FPGA基础 -- Verilog语言要素之值集合
  • Flutter - 原生交互 - 相机Camera - 曝光,缩放,录制视频
  • 【JSON-To-Video】AI智能体开发:为视频图片元素添加动效(滑入、旋转、滑出),附代码
  • 光谱相机的多模态成像技术详解
  • 数据仓库面试题合集⑥
  • 理解基本的RPC实现:从概念到实践