本文介绍IPv6中一种重要协议——NDP协议。NDP协议是实现IPv6通信的重要协议之一,本文将详细介绍IPv6中NDP的协议实现过程和技术细节。
阅读本文,您需要又有一定的IPv6基础知识,您如果对此还存在困惑,欢迎查阅下列文章:IPv6报文格式讲解及其科学性探究、IPv6地址简介、IPv6各地址计算方式汇总。

一、NDP协议概述

NDP协议,即Neighbor Discovery Protocol,邻居发现协议,是IPv6中一种重要协议。NDP协议定义在ICMPv6中,属于ICMPv6的消息型报文。NDP协议由RFC2461定义,主要用于IPv6中的数据通信。

二、NDP协议定义报文

在NDP协议中,定义了5种报文:
1、RA报文,Type=134,即Router Advertisement,路由器公告报文,该报文主要是路由器用来周期性的发布自身的hop limit 、link MTU等消息。
2、RS报文,Type=133,即Router Solicitation,路由器信息请求报文,该报文用于请求RA报文,当设备刚上线时,可能会使用该报文请求路由器发送RA报文,该报文可以使得路由器立即发送RA报文而不用等待RA周期。
3、NS报文,Type=135,即Neighbor Solicitation,邻居请求报文,该报文用于请求地址解析。
4、NA报文,Type=136,即Neighbor Advertisements,邻居公告报文,该报文用于答复NS报文,完成地址解析和报文刷新等功能。
5、Redirect报文,Type=137,当路由器发现更好的报文转发路径时,会使用该报文通知其他设备。

三、NDP协议作用

NDP协议在IPv6中主要有以下作用:
1、地址解析
所谓地址解析功能,就是替代IPv4中的ARP协议,实现寻找指定IPv6地址对应的MAC地址,该功能主要使用了NS报文和NA报文。
有关该功能的实现原理及细节请见IPv6地址解析详解
2、地址冲突检测
所谓地址冲突检测,就是类似于IPv4中的免费ARP报文功能,主要用于在设备刚上线时查询网络中有无与自己接口IPv6地址相同的IP地址,该功能的实现使用了NS和NA报文。
该功能的实现与地址解析类似,只不过将地址解析中的NS报文源IP地址换成了要检测IPv6地址的被请求节点组播地址,把目的地址换成了ff02::1,该地址是所有运行IPv6协议栈的设备都会监听的一个组播地址,如果接受到了NA回应,说明网络中存在与自己相同的IPv6地址,因此IPv6会把该接口的IP地址设为不可用。如果没有收到NA报文,则说明网络中没有冲突,因此接口IP地址就可以正常使用了。
有关该功能的实现可以参考下列文章的最后一节:IPv6邻居状态与邻居检测机制
3、邻居不可达检测
所谓邻居不可达检测,是IPv6中独特的机制,不同于IPv4的ARP缓存表项,IPv6会维持一个邻居表,当长时间不与该邻居通信后,就会把该邻居的状态置为STALE(陈旧),这样状态的邻居不能够与其直接进行通信,必须要进行邻居不可达检测。该功能的实现依托于NS和NA报文。在华为中,邻居不可达检测又被称为邻居状态监测。
有关该功能的实现原理及细节请见:IPv6邻居状态与邻居检测机制
4、无状态地址配置
所谓无状态地址配置,简称SLAAC,是IPv6中独有的特性。可以实现IPv6设备的即插即用。(DHCP实现的地址配置又叫做有状态地址配置,这里的无状态地址配置与之功能上类似)也可以利用无状态地址配置实现类似VRRP的功能。IPv6无状态地址配置使用了RS和RA报文。
有关该功能的实现原理及细节请见:IPv6 SLAAC原理详解及配置
5、重定向
所谓重定向,是IPv6中与ICMPv4重定向报文类似的一种功能,主要应用于以下场合:

假设在上面的拓扑图中,R3上配置了一条默认路由指向R2,现在假设R3要访问R1上的Loopback地址,这时它把数据包发送给了R2,那么在R2看来,该数据包是从接口G0/0/0发送过来的,但是该数据包出接口也是G0/0/0,因此它意识到网络中存在次优路径。这时,尽管R2还会转发该访问数据包,但是同时会向R3发送一个重定向报文,以告知R3,发往该IP的数据包可以不要发送给我,而是发送给R1的G0/0/0口的IP地址。
尽管重定向机制设计的比较合理,但是在路由器看来,其数据包的转发都是基于路由表,因此此时尽管R3收到了该重定向报文,但是不会按照重定向报文的指示转发数据包。
此外,如果R3是一个主机,收到了重定向报文,考虑到安全性,微软系列的主机也不会更改转发的目的地址。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200/article/details/118712828

IPv6中NDP协议简介相关推荐

  1. BLE(低功耗蓝牙)中ATT协议简介

    BLE ATT(Attribute Protocol) BLE属性协议,它是处于L2CAP协议层与GATT之间的一层属性操作协议. ATT协议在BLE协议框架 在了解ATT前有必要先了解GATT,GA ...

  2. IPv6基础_邻居发现协议简介

    IPv6基础_邻居发现协议简介 一.NDP(NeighborDiscoveryProtocol,邻居发现协议)是IPv6的一个关键协议,它组合了IPv4中的ARP.ICMP路由器发现和ICMP重定向等 ...

  3. IPv6协议简介及与IPv4对比

    IPv6简介: 全称是"互联网协议第6版",即下一代的网际协议. IPv6地址的128位是以16位为一段共分为8段,每段的16位转换为一个4位的16进制数字,每段之间用冒号&quo ...

  4. IPV6邻居发现协议(NDP)

    概述 NDP(Neighbor Discovery Protocol,邻居发现协议)是IPv6的一个关键协议,它组合了IPv4中的ARP.ICMP路由器发现和ICMP重定向等协议,并对它们作了改进.作 ...

  5. IPV6 邻居发现协议(NDP)

    IPV6除了显著增加了地址空间外,另一个最显著的特征就是它的即插即用性. 邻居发现协议(Neighbor Discovery Protocol,NDP)就是使用以下的功能实现即插即用特性的协议: 路由 ...

  6. IPv6邻居发现协议--NDP详解

    一.ICMPv6 -Internet控制报文协议 ICMPv6是IPV6的基础协议之一,用于向源节点传递报文转发的信息或错误 协议类型号(即:IPv6Next Header)为58 icmpv6可以提 ...

  7. IPv6邻居发现协议NDP

    邻居发现协议NDP 邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议.邻居发现协议替代了IPv4的ARP(Address Resolu ...

  8. ipv6协议与网络服务器有关,IPv6与IPv4协议网络中的双工通信差异

    我们都知道IPv6与IPv4协议网络的本质区别.那么在进行双向会话通信过程中两者有什么差异呢?下面我们就来详细说一下这方面的内容.Ipv6和IPv4协议动态NAT一样,NAT-PT只能用于由IPv6网 ...

  9. 网络层协议简介之ICMP和ARP

    网络层协议简介之ICMP和ARP 一.网络层简介 1.网络层功能 2.网络层协议字段 二.ICMP与封装 三.ARP协议与ARP欺骗 1.ARP协议及常用命令 2.ARP欺骗 总结 一.网络层简介 1 ...

  10. 11.NDP协议分析与实践

    NDP 协议分析与实践 1. 概述 1.1 简介 Neighbor Discovery Protocol 基于 ICMPv6 实现,用于替代 IPv4 中的 ARP 和 ICMP 路由器发现 基于 I ...

最新文章

  1. Qt Creator创建项目
  2. 初识Maven POM
  3. 让自己的user能够看到S4 product master这个tile
  4. Array.sort排序
  5. 频繁使用花呗、借呗、微粒贷、京东白条会影响在银行的信用吗?
  6. IT职场人生系列之十三:技术?管理?业务?
  7. Windows下修改hosts文件
  8. 海康rtsp视频流媒体服务器搭建(去除flash插件):rtsp > nginx-rtmp > http-flv > flv.js
  9. 外观模式(Facade模式)详解
  10. 计算机类课题研究方法,课题研究方法
  11. Windows---diskpart命令的使用
  12. Spire pdf 操作pdf,页眉 页脚 水印 二维码
  13. java 线程与线程池详解
  14. NBA表格_数据分析NBA历史前十球星排名
  15. 计算机获取的系统时间是什么时间格式,【excle怎样获取当前日期格式】如何在EXCEL中显示当天的日期和时间?...
  16. Base64 混淆加密+迭代次数,Base64前后端加解密不一致、Base64 js加解密结果与java加解密结果不一致,Base64中文加密乱码
  17. 存储资源盘活助力网络强国
  18. python爬虫 模拟登录人人网过程解析
  19. 首届“云报·春晚”节目单
  20. uni showModeal

热门文章

  1. 机器学习算法基础7-计算范围内素数的五种算法
  2. pandas的拼接操作
  3. Python中 将txt文件转换为csv文件
  4. 吴恩达深度学习——循环神经网络
  5. 软件测试管理是什么?
  6. 《我也能做CTO之程序员职业规划》之四:直线定律
  7. python爬虫框架
  8. linux/windows双系统安装、启动顺序设置及重新设置
  9. mysql 查看表属性约束_mysql表属性、索引、约束
  10. eclipse java 源代码,java – 下载Eclipse源代码