IPv6 基础协议-NDP

IPv6 基础协议报文

何为基础协议?像v4中的icmp、arp、hdcp之类的
在v6中只需要NDP协议,他是通过ICMPv6报文完成的,她能够实现邻居发现、无状态地址检测、重复地址检测、PMTU等功能
在这里插入图片描述

RS(133)RA(134)NS(135)NA(136)重定向(137)
地址解析✔️✔️
前缀公告✔️✔️
前缀重编址✔️✔️
DAD✔️✔️
路由重定向✔️

如上四种报文很重要:
 RS(Router Solicitation):路由器请求报文
 RA(Router Advertisement):路由器通告报文
 NS(Neighbor Solicitation):邻居请求报文
 NA(Neighbor Advertisement):邻居通告报文

🐴1. 地址解析

 IPv6的地址解析不再使用ARP,也不再使用广播方式。
 地址解析在三层完成,针对不同的链路层协议可以采用相同的地址解析协议
 通过ICMPv6(类型135的NS及类型136的NA报文)来实现地址解析。
 NS报文发送使用组播的方式,报文的目的IPv6地址为被请求的IPv6地址对应的“被请求节点组播地址”,报文的目的MAC为组播MAC。
 采用组播的方式发送NS消息相比于广播的方式更加的高效,也减少了对其他节点的影响和对二层网络的性能压力。
 可以使用三层的安全机制(例如IPSec)避免地址解析攻击。

通信过程:

R1请求R2的mac地址
在这里插入图片描述

首先R1向R2发送NS报文↓
在这里插入图片描述

邻居请求(Neighbor Solicitation)(组播)
 Type=135,code=o
 Target Address 需要解析的IPv6地址


然后R2回复NA报文↓

邻居请求(Neighbor Advertisement)(单播)
 Type=136,code=o
 R标志(Router flag)表示发送者是否为路由器,如果1则表示是;
 S标志(Solicited fag)表示发送邻居通告是否是响应某个邻居请求如果1则表示是(0例如路由器或PC重启后主动发送NA邻居通告,就不是回应其他人的NS,类似免费ARP):
 O标志(Overide flag)表示邻居通告中的消息是否覆盖已有的条目信息,如果1则表示是;
 Target Address 所携带的链路层地址对应的IPv6地址
 最重要的MAC地址再Options中

组播报文这样封装的好处是
在这里插入图片描述

 目的mac是一个组播mac,目的ip也是一个组播IP,因为我们知道要请求的目标ip地址是多少,所以能够根据他的ip地址计算出组播mac和组播ip,目标设备由于配置了这个要访问的地址,所以是自动加入这个组播地址的,当其他计算机收到此报文后,由于并不在这个组播组中,所以当看到组播mac地址,而自己并不在组播组中,因此网卡直接丢弃不再往下看,节省设备计算资源。(如何生成组播mac与组播IP查看【2 IPv6的地址类型】)

附上两个实际的报文 ↓ 可对应上文查看
在这里插入图片描述

在这里插入图片描述

当拿到mac地址后IPv6不再像IPv4使用ARP表存储IP与MAC映射,而是维护一张IPv6邻居表

dis ipv6 neighbors  //查看邻居缓存表

在这里插入图片描述

 其中能够查看对方地址、状态、链接时间等。NDP还具有邻居状态跟踪功能,具体下一篇会介绍
相比v4 有和优势 ?
 V4 是用arp 广播实现地址解析和重复地址检测
  ① v6 是用组播形式 ,减轻设备性能压力
  ② v6 在三层完成地址解析,适用更多的链路层(介质独立性)
  ③ v6 在三层完成解析,可以使用自身ipsec安全认证机制提高安全性,避免类似v4中的arp欺骗

🐷2. 邻居状态跟踪

实际通讯中邻居表会存在中状态分别是:
INCOMPLETE 未完成,邻居请求已经发送到目标节点的请求组播地址,但没有收到邻居的通告;
REACHABLE 可达,收到确认,不续再发包确认;
STALE 陈旧,从收到上一次可达性确认后过了超过30s:
DELAY 延迟,在stale状态后发送过一个报文,并且5s内没有可达性确认
PROBE 探查,每隔1s重传邻居请求来主动请求可达性确认,直到收到确认。
在这里插入图片描述

绿色箭头标识正常流程
注意1:像ARP报文一样,业务报文并不能刷新邻居表项。邻居表项只能靠NDP(icmpv6报文)刷新。
注意2:即使一直通信,状态仍然会变迁到stale–delay,只是这个过程是短暂的。因为发送NS请求后,一旦对方回复了NA则状态又被刷新到Reachable。
注意3:如果一直通信,且双方链路正常,则会一直在Reachable—>Stale—>Delay 状态循环变迁。只是停留在Stale和Delay状态时间很短。
注意4:邻居状态是Reachable、Stale、Delay、Probe时,表项依然有效,依然可以按邻居表封包发包。Incomplete不可用

🐱3. 无状态自动配置

 IPv6获取地址的方式分为手动自动
 自动又分为有状态无状态自动配置,有状态就像DHCPv6,无状态自动配置就是今天要说到的一种方法(缩写SLAAC)

如何理解有状态、无状态?
 像DHCPv6,他有个服务器给下端设备分配地址,同时服务器还要维持地址表,比如给谁分配了哪个地址,租期多长是否续约,可以理解为要维持一个状态
而无状态,他是根据下发的前缀自动生成的,不需要别人维护

为了完成无状态配置,我们将会用到RA和RS报文:
 RA(Router Advertisement,路由器通告)报文:每台设备为了让二层网络上的主机和设备知道自己的存在,可以定时以组播方式发送RA报文,RA报文中会带有网络前缀信息,及其他一些标志位信息。RA报文的Type字段值为134。可以一次携带多个前缀
 RS(Router Solicitation,路由器请求)报文:很多情况下主机接入网络后希望尽快获取网络前缀进行通信,此时主机可以立刻发送RS报文,网络上的设备将回应RA报文RS报文的Type字段值为133。

在这里插入图片描述

 链路上的路由器会定期发送RA报文,收到RA报文的主机将加入默认路由表中,根据路由器RA中携带的前缀信息通过软件算法或EUI-64生成IPv6地址
在这里插入图片描述
在这里插入图片描述

 在前缀中又两个时间字段,优选时间(Preferred Lifetime)和可用时间(Valid lifetime)
 一般可用时间大于优选时间
 当地址处于优选时间内(优先阶段),地址可以任意使用
 当地址超过了优选时间但没超过有效时间(废弃阶段),这个地址虽然能用但不能再主动访问,只能被当作目的地址
 如果超过可用时间还没有续租,则进入不可用阶段,回收地址
 由于路由器会每隔250s(可选250s-650s)一个周期下发前缀,如果设备一直在线则会持续收到路由器的RA报文来刷新优选时间,只有长时间不通信或长时间关机才有可能进入废弃阶段及不可用

报文中常用的几个flags位

在这里插入图片描述
Managed address configuration:M位默认为0,为0时,收到该RA的主机使用RA中包含的IPv6前缀用于无状态地址自动配置。当为1时表示采用有状态配置,也就是DHCP
Other Configuration:Other-Config-Flag,默认为0,表示主机不使用DHCPv6 配置DNS、域名等其他参数。
Router Lifetime:单位是秒,主机将路由器视为缺省路由器的时间。主机使用路由器link-local地址作为网关,并生成缺省路由,缺省路由有效时间1800s。周期性的RA报文会刷新该时间。

 因为无状态配置只能配置地址不能指定DNS域名等其他参数,此时可以使用M=0,O=1的方法,也就是前缀获取地址,dhcp获取其他配置

ipv6 nd autoconfig managed-address-flag   //设置Managed address configuration的值ipv6 nd autoconfig other-fag   //设置Other Configuration的值

🐮4. 重复地址检测DAD

 所有单播地址都要做DAD检测 (包括link-local)
 会使用到NS与NA报文完成交互过程
 在IPv6中检测重复地址的思路和v4差不多,只不过v6是通过特殊的NS报文请求自己的地址,v4是通过arp报文请求自己地址
在这里插入图片描述
 和正常NS比这里的NS报文原地是::也就是未指定地址,把要检测的地址放在报文中

如果两个地址冲突,则会收到NA回包
在这里插入图片描述

再查看接口地址
在这里插入图片描述
会发现地址后面有一个Duplicate,表示地址冲突,处于不能用的状态

🦝5. 重定向

在这里插入图片描述

重定向有专用的重定向报文,类型是137
 Target Address是更好的路径下一跳地址。
 Destination Address是需要重定向转发的报文的目的地址,也就是最终想访问的目标的IP
在这里插入图片描述

🐹6. PMTU发现

 IPv6在转发过程中是不进行分片的,而是在源节点进行分片,在目的节点进行组装
所以我们需要探测出整个链路中最小MTU称为PMTU,在源端按照最小MTU进行切片
那又是如何探测最小的PMTU呢?
在这里插入图片描述

 R1先以自己 的MTU为大小发包,当R3收到报文时发现报文过大回复ICMP error报文告诉R1报文太大请发1300的包,R1重新发送1300大小的包,此包顺利到达终点,R3回复R1PMTU为1300
PMTU最小为1280bytes(IPv6要求链路层所支持的MTU最小为1280)

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

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

相关文章

MySQL外键类型与应用场景总结:优缺点一目了然

前言: MySQL的外键简介:在 MySQL 中,外键 (Foreign Key) 用于建立和强制表之间的关联,确保数据的一致性和完整性。外键的作用主要是限制和维护引用完整性 (Referential Integrity)。 主要体现在引用操作发生变化时的处理方式&…

MONI后台管理系统-敏感信息脱敏传输

本文章纯转载,如有侵权联系删除 SpringBoot如何优雅地实现返回数据脱敏 前言:数据脱敏是一种常见的数据安全保护技术,可以在保护数据隐私的同时,保持数据的有效性和可用性。在 Spring Boot 中,我们可以使用注解的方式实…

分布式事务入门 一

分布式事务入门 一 您好,我是今夜写代码,今天学习下分布式事务相关理论,以及常见的解决方案,为后续掌握Seata分布式事务框奠定基础。 为什么需要分布式事务? 分布式事务主要由于存储资源的分布性,通常涉及多个数据库。 分布式…

Goland:专为Go语言设计的高效IDE

本文还有配套的精品资源,点击获取 简介:Goland是JetBrains公司开发的集成开发环境(IDE),专为Go语言设计,提供了高效的代码编辑、强大的调试工具和丰富的项目管理功能。其智能代码补全、强大的调试与测试支…

uniapp 前端解决精度丢失的问题 (后端返回分布式id)

原因: 后端使用分布式id, id为19位数,导致精度丢失 ,前端解决方法 这个是通过浏览器请求回来的数据,这个时候id 数据已经丢失了,在数据库查询不到,在调获详情接口的时候会有问题 实际的: 解决…

Pandas07

Pandas01 Pandas02 Pandas03 Pandas04 Pandas05 Pandas06 文章目录 1 用户偏好分析 TGI1.1 TGI介绍1.2 TGI案例代码 2 用户评论文本分析2.1 用户评论文本分析简介 1 用户偏好分析 TGI 1.1 TGI介绍 TGI(Target Group Index,目标群体指数)用于…

spring cloud微服务-OpenFeign的使用

OpenFeign的使用 openFeign的作用是服务间的远程调用 ,比如通过OpenFeign可以实现调用远程服务。 已经有了LoadBalancer为什么还要用openFeign? 在微服务架构中,LoadBalancer和OpenFeign虽然都提供了服务间调用的能力,但它们的设计目的和…

使用PHP函数 “setcookie“ 设置cookie

在网站开发中,cookie是一种非常常用的技术,它用于在用户的浏览器中存储少量的数据,以便在不同页面之间传递信息。PHP提供了一个名为 "setcookie" 的函数,用于设置cookie的值和属性。在本文中,我们将学习如何…

读书笔记-《乡下人的悲歌》

前段时间看了一些 J.D. Vance 的采访视频,几乎都是记者带着刁难的问题先手进攻,而 Vance 面带微笑,提及对方的名字,条理清晰地从对方的攻击中切回主题形成后手反制,实在让人看得过瘾。 更不可思议的是,Van…

Datawhale-AI冬令营二期

目录 一、番茄时钟(1)输入Prompt(2)创建 HTML 文件解析1:HTML结构解析2:计时器内容解析3:按钮区域解析4:脚本引用 (3)使用JavaScript实现时钟功能解析1&#…

【Sentinel】流控效果与热点参数限流

目录 1.流控效果 1.1.warm up 2.2.排队等待 1.3.总结 2.热点参数限流 2.1.全局参数限流 2.2.热点参数限流 2.3.案例 1.流控效果 在流控的高级选项中,还有一个流控效果选项: 流控效果是指请求达到流控阈值时应该采取的措施,包括三种&…

我的Qt作品(20)使用Qt+OpenCV写一个旋转/抠图/mask生成工具

使用QtOpenCV写一个旋转/抠图/mask生成工具 1、旋转功能 void FormRotate::rotateImage(const cv::Mat &src, cv::Mat &dst, double degree) //旋转 {if (fabs(degree) < 0.001){dst src;return;}//center旋转的中心点坐标//degree旋转的角度,不是弧度,>0逆时针…

win11中win加方向键失效的原因

1、可能是你把win键锁了&#xff1a; 解决办法&#xff1a;先按Fn键&#xff0c;再按win键 2、可能是可能是 贴靠窗口设置 中将贴靠窗口关闭了&#xff0c;只需要将其打开就好了

MetaRename for Mac,适用于 Mac 的文件批量重命名工具

在处理大量文件时&#xff0c;为每个文件手动重命名既耗时又容易出错。对于摄影师、设计师、开发人员等需要频繁处理和整理文件的专业人士来说&#xff0c;找到一款能够简化这一过程的工具是至关重要的。MetaRename for Mac 就是这样一款旨在提高工作效率的应用程序&#xff0c…

JavaScript甘特图 dhtmlx-gantt

背景 需求是在后台中&#xff0c;需要用甘特图去展示管理任务相关视图&#xff0c;并且不用依赖vue&#xff0c;兼容JavaScript原生开发。最终使用dhtmlx-gantt&#xff0c;一个半开源的库&#xff0c;基础功能免费&#xff0c;更多功能付费。 甘特图需求如图&#xff1a; 调…

VSCode下载安装指南

VSCode下载 通过网盘分享的文件&#xff1a;VSCodeUserSetup-x64-1.96.2.exe 链接: https://pan.baidu.com/s/1l7fdxeALnyeuUe1a5l0aqQ?pwdb8y3 提取码: b8y3 –来自百度网盘超级会员v6的分享 VSCode安装 1、下载好之后双击下图 2、我同意&#xff0c;下一步 3、可以点浏…

多显卡服务器如何设置使用集成显卡输出信号?

要在IPMI中设置服务器的显示接口只使用集成显卡&#xff0c;而不使用插入的PCI显卡&#xff0c;您需要进入服务器的BIOS设置进行相应的配置。以下是一般步骤&#xff1a; • 重启服务器&#xff0c;在启动时按下相应的键&#xff08;通常是Del或F2&#xff09;进入BIOS设置。 …

【黑马头条】day20—xxl-job

目录 1 今日内容 1.1 需求分析 1.2 实现思路 1.3 定时计算 1.4 定时任务框架-xxljob 1.5 学习目录 2.分布式任务调度 2.1 什么是分布式任务调度 2.2 xxl-Job简介 2.3 XXL-Job-环境搭建 2.4 配置部署调度中心-docker安装 2.5 xxl-job入门案例编写 2.6 任务详解-执行…

人工智能基础软件-Jupyter Notebook

简介&#xff1a; Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算&#xff1a;开发、文档编写、运行代码和展示结果。 Jupyter Notebook是以网页的形式打开&#xff0c;可以在网页页面中直接编写代码和运行代码&#xff0c;代码的运行结果也会直…

Springboot配置嵌入式服务器

一.如何定制和修改Servlet容器的相关配置 修改和server有关的配置&#xff08;ServerProperties&#xff09;&#xff1b; server.port8081 server.context‐path/tx server.tomcat.uri‐encodingUTF‐8 在yml配置文件的写法&#xff1a; server:port: 8081servlet:context-pa…