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)。 主要体现在引用操作发生变化时的处理方式&…

分布式事务入门 一

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

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

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

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

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

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

前段时间看了一些 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、可以点浏…

【黑马头条】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;代码的运行结果也会直…

Unity功能模块一对话系统(4)实现个性文本标签

本期我们将了解如何在TMPro中自定义我们的标签样式&#xff0c;并实现两种有趣的效果。 一.需求描述 1.定义<float>格式的标签&#xff0c;实现标签处延迟打印功能 2.定义<r" "></r>格式的标签&#xff0c;实现标签区间内文本片段的注释显示功能…

微信流量主挑战:三天25用户!功能未完善?(新纪元4)

&#x1f389;【小程序上线第三天&#xff01;突破25用户大关&#xff01;】&#x1f389; 嘿&#xff0c;大家好&#xff01;今天是我们小程序上线的第三天&#xff0c;我们的用户量已经突破了25个&#xff01;昨天还是16个&#xff0c;今天一觉醒来竟然有25个&#xff01;这涨…

玩原神学编程-原神时钟

前言 最近喜欢玩原神这种开放世界探索的游戏&#xff08;还有黑神话、古墓丽影等&#xff09;&#xff0c;只能说纳塔版本的boss盾真的厚&#xff0c;萌新的我去打boss&#xff0c;从白天打到黑夜&#xff0c;黑夜再打到白天&#xff08;游戏里面的时间&#xff09;。 闲话结…

机器学习之PCA降维

主成分分析&#xff08;PCA&#xff0c;Principal Component Analysis&#xff09; 主成分分析&#xff08;PCA&#xff09;是一种常见的无监督学习技术&#xff0c;广泛应用于数据降维、数据可视化以及特征提取等任务。PCA的目标是通过线性变换将数据从高维空间映射到低维空间…

Mysql进阶SQL优化

SQL优化在开发场景中必不可少的技能之一&#xff0c;它能最大限度的提升SQL查询性能&#xff0c;如果随意使用也会出现不可预料的结局。 1、为什么要优化SQL 我们先说说不优化SQL造成什么现象。常见问题是响应时间长&#xff0c;用户体验感低。数据库频繁争抢锁&#xff0c;浪…

修改成清华镜像源解决Anaconda报The channel is not accessible源通道不可用问题

修改成清华镜像源解决Anaconda报The channel is not accessible源通道不可用问题 最近在通过pycharm开发python程序&#xff0c;引用anaconda环境建立虚拟环境时报错&#xff0c;报UnavailableInvalidChannel: The channel is not accessible or is invalid.应该是镜像源访问通…