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

NDP常用报文格式

时间:2023-04-17 23:32:54浏览次数:33  
标签:常用 报文格式 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/6196409

相关文章

  • 01-Object、常用API
    01-Object类、常用APIObject类概述在Java中,Object类是所有类的根类,它位于Java类继承体系的最顶层。所有的Java类都直接或间接地继承了Object类,因此Object类中包含了一些在Java编程中非常常用的方法。常用方法以下是一些Object类中常用的方法:equals(Objectobj)publicbool......
  • vue常用组件之confirm用法及说明
    vue常用组件之confirm用法及说明原文链接:https://www.jb51.net/article/263587.htm+目录vue组件之confirmvue自定义confirm弹窗(全局组件)全局组件方式vue组件之confirm一些自带的方法,比如alert,confirm等,往往由于浏览器不同而展现出不同的样式,为了统一,我们可以自己实现简单封装,......
  • mysql常用sql语句
    INSERTINTO`test`.`testdb`(`a`,`b`)VALUES(NULL,'2');INSERTINTO`test`.`testdb`(`b`)VALUES('2');imit是mysql的语法select*fromtablelimitm,n其中m是指记录开始的index,从0开始,表示第一条记录n是指从第m+1条开始,取n条。select*fromtablenamelimit2,4......
  • Linux常用命令大全
    Linux常用命令大全最近都在和Linux打交道,这方面基础比较薄弱的我只好买了本鸟哥的书看看,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。为了方便大家查找linux的相关命令,我就将我了解到的命令......
  • 【fastadmin】常用操作
    模型使用//可以直接通过model使用模型,不需要再引入$argc=model('admin/Users')->where('uid',1)->find();验证字段先引入Validate,usethink\Validate;$rule=['openid'=>'require|length:10,30'];$msg=['openid.requ......
  • Redis中的Hash类型常用命令
    一、hset命令作用:设置hash类型值;格式:hsetkeyfieldvalue案例:192.168.0.111:0>hsetproductname苹果"1"192.168.0.111:0>hsetproductprice5"1"二、hget命令作用:获取hash类型某个key下的某个field的值格式:hgetkeyfield案例:192.168.0.111:0>hgetproductname"苹果&qu......
  • Nginx常用模块及配置示例
    1.ngx_http_status_module作用记录Nginx客户端基本访问状态信息指令Syntax:stub_status;Default:—Context:server,location配置示例location/status{#访问url为http://主机/statusstub_statuson;#on开启状态记录,off关闭状态......
  • Git和VIM常用命令速记
    查看主机名称:gitremoteshow手动建立追踪关系:gitbranch--set-upstreammasterorigin/next//指定master分支追踪origin/next分支重新绑定追踪关系:gitremoteremoveorigin//如果本地代码,已经关联了远程分支,则需要先解除关联[email protected]:......
  • web前端tips:ES6部分常用新特性介绍
    ES6(ECMAScript6,也称为ES2015)是JavaScript的一个重要更新版本,于2015年发布。它引入了许多新的语言特性和改进,使得JavaScript变得更加现代化、易读、易维护和更适合大型应用程序的开发。ES6主要的新特性包括:1.块级作用域:ES6引入了let和const关键字,可以用来声明块级作用域的变量和......
  • k8s 工作原理以及常用基础
    k8s是什么☛可移植:支持公有云,私有云,混合云,多重云☛可扩展:模块化,插件化,可挂载,可组合☛自动化:自动部署,自动重启,自动复制,自动伸缩/扩展k8s核实组件1)主要组件●etcd:保存了整个集群的状态;●apiserver:提供了资源操作的唯一入口,并提供访问控制、API注册和发现等机制......