NDP(Neighbor Discovery Protocol)简介

news2024/11/14 14:56:25
定义

邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议。邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由设备发现(Router Discovery),它定义了使用ICMPv6报文实现路由设备发现、重复地址检测、地址解析、邻居不可达检测NUD(Neighbor Unreachability Detection)等功能。

目的

在局域网中,当主机或其他网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IPv6地址)。但是仅有IPv6地址是不够的,因为IPv6数据报文必须封装成帧才能通过物理网络发送,因此发送方还必须有接收方的物理地址(MAC地址),所以需要一个从IPv6地址到物理地址的映射,保证数据报文的传送能够顺利进行。

ND原理描述

IPv6地址解析

在IPv4中,当主机需要和目标主机通信时,必须先通过ARP协议获得目的主机的链路层地址。在IPv6中,同样需要从IP地址解析到链路层地址的功能。邻居发现协议实现了这个功能。

ARP报文是直接封装在以太网报文中,以太网协议类型为0x0806,普遍观点认为ARP定位为第2.5层的协议。ND本身基于ICMPv6实现,以太网协议类型为0x86DD,即IPv6报文,IPv6下一个报头字段值为58,表示ICMPv6报文,由于ND协议使用的所有报文均封装在ICMPv6报文中,一般来说,ND被看作第3层的协议。在三层完成地址解析,主要带来以下几个好处:

  • 地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议。

  • 可以使用三层的安全机制避免地址解析攻击。

  • 使用组播方式发送请求报文,减少了二层网络的性能压力。

地址解析过程中使用了两种ICMPv6报文:邻居请求报文NS(Neighbor Solicitation)和邻居通告报文NA(Neighbor Advertisement)。

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

图1 IPv6地址解析过程示意图

Host A在向Host B发送报文之前它必须要解析出Host B的链路层地址,所以首先Host A会发送一个NS报文,其中源地址为Host A的IPv6地址,目的地址为Host B的被请求节点组播地址。同时需要指出的是,在NS报文的Options字段中还携带了Host A的链路层地址。

当Host B接收到了NS报文之后,就会回应NA报文,其中源地址为Host B的IPv6地址,目的地址为Host A的IPv6地址,Host B的链路层地址被放在Options字段中。这样就完成了一个地址解析的过程。

查看邻居状态

通过邻居或到达邻居的通信,会因各种原因而中断,包括硬件故障、接口卡的热插入等。如果目的地失效,则恢复是不可能的,通信失败;如果路径失效,则恢复是可能的。 因此节点需要维护一张邻居表,每个邻居都有相应的状态,状态之间可以迁移。

RFC中定义了5种邻居状态,分别是:未完成(Incomplete)、可达(Reachable)、陈旧(Stale)、延迟(Delay)、探查(Probe)。

图2 邻居状态迁移示例

下面以A、B两个邻居节点之间相互通信过程中A节点的邻居状态变化为例(假设A、B之前从未通信),说明邻居状态迁移的过程。

  1. A先发送NS报文,并生成缓存条目,此时,邻居状态为Incomplete。
  2. 若B回复NA报文,则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为Empty,即删除表项。
  3. 经过邻居可达时间,邻居状态由Reachable变为Stale,即不确定邻居节点的可达性。
  4. 如果在Reachable状态,A收到B的非请求NA报文,且报文中携带的B的链路层地址和表项中不同,则邻居状态马上变为Stale。
  5. 在STALE状态到达老化时间后进入Delay状态。
  6. 在经过一段固定时间(5秒)后,邻居状态由Delay变为Probe,其间若有NA应答,则邻居状态由Delay变为Reachable。
  7. 在Probe状态,A每隔一定时间间隔(1秒)发送单播NS,发送固定次数(3次)后,有应答则邻居状态变为Reachable,否则邻居状态变为Empty,即删除表项。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2043633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

萌啦数据插件使用情况分析,萌啦数据插件下载

在当今数字化时代,数据已成为企业决策与个人分析不可或缺的重要资源。随着数据分析工具的日益丰富,一款高效、易用的数据插件成为了众多用户的心头好。其中,“萌啦数据插件”凭借其独特的优势,在众多竞品中脱颖而出,成…

[数据集][图像分类]肾脏病变分类数据集识别囊肿肿瘤结石数据集11756张4类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):11756 分类类别数:4 类别名称:["cyst","normal&…

上海晋名室外危化品暂存柜助力燃料电池行业

近日又有一个SAVEST室外危化品暂存柜项目成功验收交付使用。 用户是一家致力于为燃料电池行业提供研发、创新解决方案和技术支持的科技型中小企业。 用户在日常经营活动中涉及到氢气实验过程中的安全问题, 4月初在网上看到上海晋名室外暂存柜系列很感兴趣&#xf…

[EC Final 2020] ICPC2020 东亚赛区决赛重现赛题解

比赛链接:EC Final 2020 和 cyx20110930 组的队,用他的号交的题。顺便帮助他橙名,好耶!(rk 25,我俩各写 2 道) Problem B: 这道是 cyx20110930 写的,顺便安利(copy)一下他的题解。 题目意思…

html+css网页制作 化妆品电商4个页面

htmlcss网页制作 化妆品电商4个页面 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#xff…

操作系统(Linux实战)-进程创建、同步与锁、通信、调度算法-学习笔记

1. 进程的基础概念 1.1 进程是什么? 定义: 进程是操作系统管理的一个程序实例。它包含程序代码及其当前活动的状态。每个进程有自己的内存地址空间,拥有独立的栈、堆、全局变量等。操作系统通过进程来分配资源(如 CPU 时间、内…

LabVIEW光纤管道泄漏检测系统

光纤管道泄漏定位系统利用干涉型光纤传感器和数据采集卡进行信号获取与处理,实现了高灵敏度的泄漏点定位。通过软件对泄漏信号进行实时降噪处理和数据库管理,提高了系统的自动化和智能化水平。 项目背景: 长输管道在石油、天然气等行业中发挥…

【C++第十二课-多态】多态概念、多态原理

目录 多态的概念概念多态形成的条件虚函数的重写虚函数重写的两个例外 多态的题目C11增加的关于多态的关键字finaloverride 多态原理虚函数表指针 vfptr多态的实现静态绑定和动态绑定打印虚函数表补充 抽象类概念接口继承和实现继承 多态的概念 概念 具体点就是去完成某个行为…

Centos安装Kafka

安装Kafka 安装Java,因为Kafka运行需要JDK运行环境 sudo yum install java-1.8.0-openjdk-devel.x86_64如果不知道JDK版本,可以使用下面命令查看可用的JDK版本 sudo yum search openjdk添加EPEL仓库 sudo yum install epel-release下载Kafka 先去查看…

nginx初步学习

Nginx 安装 官方源码包下载地址:nginx: download 配置一台虚拟机尽量给的配置高些这样速度快些。 下载文件并解压 加载对应模块 ./configure --prefix/usr/local/nginx \ --usernginx \ # 指定nginx运行用户 --groupnginx \ # 指定ng…

BUUCTF 极客大挑战2019 Upload 1

上传图片,然后抓包 我们可以看到回显 我们改一下content-type 这里我们可以改一下filename为100.phtml,也可以不改 然后我们通过该指令查看一下是否被解析 我们发现flag就在这里 我们cat一下,得到了flag

kubernetes集群下部署mysql 8.0.20单机数据库

一、背景: 因为业务需求,需要在kubernetes集群下部署一个mysql数据库 8.0.20版本的单机服务。 具体实施过程如下: 二、实施部署mysql数据库: mysql 8.0.20的镜像: dockerhub.jiang.com/jiang-public/mysql:8.0.20-stjh…

Windows有哪些免费好用的PDF编辑器推荐?

不是所有PDF编辑器都免费,但我推荐的这3个一定免费简单好用!! 1、转转大师PDF编辑器 点击直达链接>>pdftoword.55.la 转转大师PDF编辑器是一款专业的PDF编辑工具,功能丰富,操作简单,作为微软office…

ZYNQ—vitis—网口传输信号波形数据

ZYNQ—vitis—网口传输信号波形数据 工程功能:ADC采集信号,将波形数据通过BRAM传输到PS端,然后用UDP以太网发送。(附加:ILA观察信号,发送的数据包含帧头,) FPGA端——用BRAM将信号传…

如何在一个页面上定位多个关键词?

我应该针对多个关键词优化我的页面吗? 对于大多数网站来说,答案都是肯定的。 如果你制定的策略是仅针对一个关键字优化你的网页,这可能会导致一些问题。例如,如果一个网页只能使用一个关键字,那么他们可能会开发出非…

vue2利用html2canvas+jspdf动态生成多页PDF

业务需求中,前端把页面上的内容导出为图片,pdf,excel是常有的事。当然,这些工作后端也是能做。秉着前端是万能的理念,今天就站在前端的角度上,来实现将页面内容导出为pdf,实现指定div内容导出&a…

【数据结构篇】~复杂度

标题【数据结构篇】~复杂度 前言 C语言已经学完了,不知道大家的基础都打得怎么样了? 无论怎么说大家还是要保持持续学习的状态,来迎接接下来的挑战! 现在进入数据结构的学习了,希望大家还是和之前一样积极学习新知识…

ESP32人脸识别开发--人脸识别模型(六)

ESP-DL ESP-DL 为**神经网络推理**、**图像处理**、**数学运算**以及一些**深度学习模型**提供 API,通过 ESP-DL 能够快速便捷地将乐鑫各系列芯片产品用于人工智能应用 ESP-DL 无需借助任何外围设备,因此可作为一些项目的组件,例如可将其作…

使用Python制作贪吃蛇小游戏

引言 贪吃蛇游戏是一款经典的电子游戏,玩家通过控制一条不断增长的蛇在格子内移动,并吃掉随机出现的食物来获得分数。随着分数的增加,蛇的身体也会越来越长,游戏的难度也随之提升。在本文中,我们将详细介绍如何使用Py…

天途推出无人机软硬件定制服务

近年,随着低空经济高速发展,无人机已成为千行百业的生产和工作辅助工具,很多行业用户都有信息化数字化的软件需求,以及不同负载的集成设计需求。 天途拥有云平台开发、自主飞控系统、控制算法、无人机AI数据系统等核心技术研发团队…