首页 > 其他分享 >NDP 常用报文格式

NDP 常用报文格式

时间:2023-05-19 23:01:05浏览次数:42  
标签:常用 报文格式 NA 报文 地址 邻居 IPv6 NDP 路由器

邻居发现协议(Neighbor Discovery Protocol,NDP)是IPv6协议体系中最重要的基础协议之一,很多IPv6功能都依赖NDP来实现。一般说来,NDP可以实现的功能包括:替代IPv4的ARP来形成邻居表;默认网关的自动获取;无状态地址自动配置;路由重定向等。

NDP定义了5类ICMPv6报文,即路由器请求(Router Solicitor,RS)报文、路由器通告(Router Advertisement,RA)报文、邻居请求(Neighbor Solicitor,NS)报文、邻居通告(Neighbor Advertisement,NA)报文和路由重定向报文。这5种类型的ICMPv6报文都是消息类型的报文,用来实现邻居链路层地址解析、网关发现、地址自动配置和路由重定向等功能。

1、RS报文

RS报文供IPv6主机用以查找本地链路上存在的路由器,主机发送RS报文后会触发同网段的路由器立即回复RA报文,以获取前缀信息、MTU信息等,而不用等待路由器周期性地发送RA报文。

2、RA报文

路由器会周期性(思科路由器默认是200秒)地发送RA报文,向邻居节点通告自己的存在。RA报文可以携带一些路由前缀、自身链路层等参数信息。

3、NS报文

NS报文用于查询邻居节点的链路层地址。NS报文中的目的地址字段存放的是想要解析成链路层地址的IPv6单播地址。选项字段可以携带自身的链路层地址。当NS报文用于邻居可达性检测时,目的地址是单播地址;当用于邻居解析时,目的地址是被请求节点的组播地址FF02::1:FF00:0/104加目的单播地址的最后24位。IPv6节点在检测IPv6地址冲突时,也会发送邻居请求报文,此时目的IPv6地址是被请求节点的组播地址FF02::1:FF00:0/104加自己IPv6地址的最后24位,若收不到回复则表示IPv6地址没有冲突,IPv6地址配置生效。在实际配置中发现,在为Windows计算机配置IPv6地址时若存在地址冲突,不会弹出提示信息,这一点与IPv4地址的配置不同(在地址冲突时会弹出提示信息)。因此只能在命令行模式下执行ipconfig命令来查看IPv6地址是否生效。若没有生效,则可能是地址配置存在冲突。

4、NA报文

IPv6节点通过使用NA报文来通告自己的存在,或者告诉邻居需要更新自己的链路层地址信息。当节点发送NA报文来回应NS报文时,目的地址使用单播地址,如果目的是告诉邻居需要更新自己的链路层地址信息,则使用组播地址FF02::1作为目的地址。需要注意的是,路由器除了发送RA报文,也会发送NA报文。NA报文中有3个标志位:当R位为1时表示此报文是由路由器发送的;当S位为1时表示这是NS报文的回复;当O位为1时则表示需要更改原先的邻居表条目。在S位为1的情况下,NA报文的源地址字段是对应的NS报文中的目的地址字段,如果S位为0,则NA报文的源地址就是自身需要更新链路层地址信息的接口IPv6地址。

5、路由重定向报文

当路由器收到一个报文时,若发现同网段有更好的下一跳,则向发送方发送重定向报文(这与IPv4类似)。

标签:常用,报文格式,NA,报文,地址,邻居,IPv6,NDP,路由器
From: https://blog.51cto.com/key3feng/6315820

相关文章

  • iOS视频播放常用重点知识
    iOS视频播放常见的重要知识点如下:视频格式:iOS支持的视频格式主要有H.264、MPEG-4、H.263、Sorenson等。它们根据不同的应用场景进行使用。视频编解码:视频编解码技术是视频播放的核心,它有两部分组成,1.将原始视频数据编码为压缩格式,2.将压缩格式的数据解码成原始视频数据。在iOS中......
  • 常用DOS命令
    路径中如果有空格,需要用双引号包含,建议所有路径都用双引号删除文件夹以及子文件夹内的所有文件,但不删除文件夹,不弹出询问对话框del/s/q"D:\Publish\GCH_QYNBZHGLPT\qynbzhglpt_web"删除文件夹以及所有内容,不弹出询问对话框rd/s/q"D:\Publish\GCH_QYNBZHGLPT\qynbzhgl......
  • QtCreator中常用快捷键总结
    F1                        查看帮助F2                        跳转到函数定义(和Ctrl+鼠标左键一样的效果)Shift+F2               声明和定义之间切换F4                       头文......
  • JAVA学习之常用类
    首先是八大Wrapper类Wrapper类包装类:1.针对八种基本数据类型相应的引用类型-包装类。2.有了类的特点,就可以调用类的方法了。除了char->Character和int->Integer,其他的包装类都是再基本数据类型的基础上把首字母大写得到的。包装类和基本数据类型的转换jdk5之后就实现了自......
  • 数组的常用方法
    <!--作者:zhangfan页面名称:数组的常用方法--><template><divclass="topCon"><el-buttontype="primary"@click="clickBtn">主要按钮</el-button></div></template><script>exportdefault......
  • vs code常用快捷键
    1.复制到下一行Alt+Shift+下键(上下左右的下);2.复制到上一行Alt+Shift+上键(上下左右的上);3.万能键(打开命令面板。在打开的输入框内,可以输入任何命令)Ctrl+Shift+P4.新建文件Ctrl+N5.文件之间切换Ctrl+Tab6.打开一个新的VSCode编辑器Ctrl+Shift+N7.关闭当前窗口Ctrl+W8.关闭当......
  • MySQL 常用管理方法与命令
    MySQL常用管理方法与命令原创 欢马劈雪 时代Java 2023-05-1907:40 发表于北京↑ 点击上面 “时代Java”关注我们,关注新技术,学习新知识!运行与关闭MySQL服务器首先检查MySQL服务器是否正在运行。可以使用下列命令来确认这一点:ps-ef|grepmysqld如果MySQ......
  • Lambda编程常用技巧
    遍历打印ListList<Integer>list=Arrays.asList(1,5,6,8,9,32,5,8,7,4,5);list.forEach(System.out::println);排序List<Integer>list=Arrays.asList(1,5,6,8,9,32,5,8,7,4,5);list.sort((o1,o2)->o1-o2);过滤List<Integer>list=Ar......
  • Lambda常用表达式
    1. forEachforEach方法是Java 8中新增的一个方法,它能够对集合中的每个元素进行操作。使用Lambda表达式作为参数,可以使代码更加简洁。例如,我们有一个List集合,里面存放了一些字符串:List list =Arrays.asList("apple","banana","orange");使用forEach方法遍历集合,输出每......
  • Shell常用命令
    Shell常用命令shell字符!:执行历史命令!!:执行上一条命令$:变量中取内容符+-*/%:对应数学运算加减乘除取余数&:后台执行;:分号可以在shell中一行执行多个命令,命令之......