ICMPv6与DHCPv6之网络工程师软考中级

ICMPv6概述

ICMPv6是IPv6的基础协议之一。
在IPv6报文头部中,Next Header字段值为58则对应为ICMPv6报文。
ICMPv6报文用于通告相关信息或错误。
ICMPv6报文被广泛应用于其它协议中,包括NDP、Path MTU发现机制等
ICMPv6控制着IPv6中的地址自动配置、地址解析(通过NS报文)、地址冲突检测(也是用NS)、路由选择、以及差错控制等关键环节。
自动配置有两种,一种是无状态,还有一种是有状态(DHCPv6)

ICMPv6报文格式

在这里插入图片描述
特别注意Echo Request和Echo Reply

差错报文(Error Messages),也称为差错消息,Type字段最高bit为0,也就是ICMPv6 Type=[0,127]差错消息用于报告在转发IPv6数据包过程中出现的错误,如常见的目的不可达、超时
等等。
信息报文(Information Messages也称为信息消息,Type字段最高bit为1,也就是ICMPv6 Type=[128,255]信息报文可以用来实现同一链路上节点间的通信和子网内的组播成员管理等,

ICMPv6差错报文的应用-Path MTU发现

在IPv6中,中间转发设备不对IPv6报文进行分片,报文的分片将在源节点进行。
PMTU(Path MTU)就是路径上的最小接口MTU。
PMTUD(Path MTU发现机制)的主要目的是发现路径上的MTU,当数据包被从源转发到目的地的过程中避免分段。
依赖PMTUD,数据的发送方可以使用所发现到的最优PMTU与目的地节点进行通信,这样可以避免数据包在从源传输到目的的过程之中,被中途的路由器分片而导致性能的下降。
在这里插入图片描述

ICMPv6信息报文的应用-Ping

Ping基于ICMPv6信息报文实现
Echo Request:用于发送到目标节点,以使目标节点立即发回一个Echo Reply应答报文。Echo Request报文的Type字段值为128,Code字段的值为0。
Echo Reply:当收到一个Echo Request报文时,ICMPV6会用Echo Reply报文响应,Echo Reply报文的Type字段的值为129,Code字段的值为0。
在这里插入图片描述

NDP概述

RFC2461定义了IPv6邻居发现协议NDP。NDP是IPv6中非常核心的组件。其主要功能如下:
在这里插入图片描述
NDP报文类型及功能
NDP使用以下几种ICMPv6报文
RS(Router Solicitation):路由器请求报文。RA(RouterAdvertisement):路由器通告报文
NS(Neighbor Solicitation):邻居请求报文NA(NeighborAdvertisement):邻居通告报文
在这里插入图片描述

路由器发现

路由器发现是指主机发现本地链路上路由器和确定其配置信息的过程。路由器发现可以同时实现以下三个功能:
路由器发现(Router Discovery):主机定位邻居路由器以及选择哪一个路由器作为缺省网关的过程。
前缀发现(Prefix Discovery):主机发现本地链路上的一组IPv6前缀的过程,用于主机的地址自动配置。
参数发现 (Parameter Discovery):主机发现相关操作参数的过程,如输出报文的缺省跳数限制、地址配置方式等信息。
使用报文:
-RS 路由器请求
-RA路由器通告
协议交互主要有两种情况:
-主机发送RS触发路由器回应RA
-路由器周期发送RA
在这里插入图片描述

地址解析

IPv6地址解析通过ICMPv6(NS和NA报文)来实现。
·在三层完成地址解析,主要带来以下几个好处:
·地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议。
·可以使用三层的安全机制避免地址解析攻击。
·使用组播方式发送请求报文,减少了二层网络的性能压力
在这里插入图片描述

跟踪邻居状态

通过邻居或到达邻居的通信,会因各种原因而中断,包括硬件故障、接口卡的热插入等。如果目的地失效,则恢复是不可能的,通信失败:如果路径失效,则恢复是可能的。因此节点需要维护一张邻居表,每个邻居都有相应的状态,状态之间可以迁移。RFC2461中定义了5种邻居状态,分别是:未完成(Incomplete)、可达(Reachable)、陈旧(Stale)、延迟(Delay)、探查(Probe)。

在这里插入图片描述

重复地址检测

重复地址检测DAD(Duplicate Address Detect)是在接口使用某个IPv6单播地址之前进行的,主要是为了探测是否有其它的节点使用了该地址。尤其是在地址自动配置的时候,进行DAD检测是很必要的。一个IPv6单播地址在分配给一个接口之后且通过重复地址检测之前称为试验地址(Tentative Address)。IPv6重复地址检测技术和IPv4中的免费ARP类似:节点向试验地址所对应的Solicited-Node组播组发送NS报文。NS报文中目标地址即为该试验地址。如果收到某个其他站点回应的NA报文,就证明该地址已被网络上使用,节点将不能使用该试验地址通讯。

重定向

重定向是指网关设备发现报文从其它网关设备转发更优,它就会发送重定向报文告知报文的发送者让报文发送者选择另一个网关设备。重定向报文也承载在ICMPv6报文中,其Type字段值为137。
在这里插入图片描述
1.PC1希望发送报文到服务器,于是根据配置的默认网关地址向网关R2发送报文,
2.网关R2收到报文后,检查报文信息,发现报文应该转发到与PC1在同一网段的另一个网关设备R1,此转发路径是更优的路径,于是R2会向PC1发送一个重定向消息,通知PC1去往服务器的报文应直接发给R1。
3.PC1收到重定向消息后,会向R1发送报文,R1再将该报文转发至服务器。

IPv6地址配置方式

IPv6地址配置的方式可以分为静态配置和动态配置。其中,动态地址配置又可以分为无状态地址自动配置(Stateless Address Autoconfiguration,SLAAC)和有状态地址自动配置(Stateful AddressAutoconfiguration)。
在这里插入图片描述
有状态又可以分为两种,一种叫做DHCP的有状态,一种叫做DHCP的无状态

在这里插入图片描述

IPv6地址无状态自动配置过程

1.PC1根据本地的接口ID自动生成链路本地地址,
2.PC1对该链路本地地址进行DAD检测,如果该地址无冲突则可启用,此时PC1具备IPv6连接能力,
3.PC1发送RS报文,尝试在链路上发现IPv6路由器
4.R1发送RA报文(携带可用于无状态地址自动配置的IPv6地址前缀。路由器在没有收到RS报文时也能够主动发出RA报文):
PC1解析路由器发送的RA报文,获得IPv6地址前缀使用该前缀加上本地的接口ID生成IPv6单播地址。
PC1对生成的IPv6单播地址进行DAD检测,如果没有检测到冲突,则启用该地址。

在这里插入图片描述

IPv6地址无状态自动配置示例

IPv6无状态地址配置通过交互RS和RA报文完成。

在这里插入图片描述

RA报文中的Flages字段

在这里插入图片描述

DHCPv6概述

·DHCPv6针对IPv6编址方案设计,支持对客户端分配IPv6前缀、IPv6地址和其他网络配置参数,并记录这些信息,便于网络管理。
·DHCPv6又分为如下三种:
1.DHCPv6有状态自动配置:DHCPV6服务器自动配置IPv6地址/前缀及其他网络配置参数(DNSNIS、SNTP服务器地址等参数)。
2.DHCPv6无状态自动配置:主机IPv6地址仍然通过路由通告方式自动生成,DHCP6服务器只分配除IPv6地址以外的配置参数,包括DNS服务器等参数。
3.DHCPv6 PD(Prefix Delegation,前缀代理)自动配置:下层网络路由器不需要再手工指定用户侧链路的IPv6地址前缀,它只需要向上层网络路由器提出前缀分配申请,上层网络路由器便可以分配合适的地址前缀给下层路由器,下层路由器把获得的前缀(前缀一般长度小于64)进一步自动细分成64位前缀长度的子网网段,把细分的地址前再通过路由通告(RA)至与IPv6主机直连的用户链路上,实现主机的地址自动配置,从而完成整个IPv6网络的层次化布局。

DHCPv6中的常用概念

在这里插入图片描述

DHCPv6有状态自动配置-四步交互

四步交互是指DHCPv6客户端与服务器交互四次来完成前缀/地址等参数获取的过程。
1.DHCPV6客户端发送Solicit消息,请求DHCPv6服务器为其分配IPv6地址/前缀和网络配置参数。
2.DHCPV6服务器回复Advertise消息,通知客户端可以为其分配的地址/前缀和网络配置参数。
如果DHCPV6客户端接收到多个服务器回复的Advertise消息则根据消息接收的先后顺序、服务器优先级等,选择其中一台服务器,并向该服务器发送Request消息,请求服务器确认为其分配地址/前缀和网络配置参数。
4.DHCPV6服务器回复Reply消息,确认将地址/前缀和网络配置参数分配给客户端使用。
在这里插入图片描述

DHCPv6有状态自动配置-两次交互

DHCPv6客户端可以在发送的Solicit消息中携带Rapid Commit选项,标识客户端希望服务器能够快速为其分配地址/前缀和网络配置参数。
在这里插入图片描述
1.DHCPV6客户端发送Solicit报文,携带Rapid Commit选项。
2.DHCPV6服务器接收到Solicit报文后,将会判断,如果DHCPv6服务器支持快速分配,则直接返回Reply报文,为客户端分配IPv6地址/前缀和其他网络配置参数。如果DHCPV6服务器不支持快速分配,则将采用四步交互方式。

DHCPv6无状态自动配置

DHCPV6服务器为已经具有IPv6地址/前缀的客户端分配除地址/前缀以外的其他网络配置参数,该过程称为DHCPv6无状态自动配置。
在这里插入图片描述
1.DHCPv6客户端以组播的方式向DHCPv6服务器发送Information-request报文,该报文中携带OptionRequest选项,指定客户端需要从服务器获取的配置参数。
2.服务器收到该报文后,为客户端分配网络配置参数并单播发送Reply报文将网络配置参数返回给客户端:客户端检查Reply报文中提供的信息,如果与Information-request报文中请求的配置参数相符,则按照Reply报文中提供的参数进行网络配置;否则,忽略该参数。

DHCPv6报文总结

在这里插入图片描述

地址自动配置比较

在这里插入图片描述

IPV6地址配置举例 -静态配置

在这里插入图片描述
ipv6后面不需要加enable
ipv6 address auto link-local表示链路地址自动去生成

IPv6地址配置距离-无状态自动配置

在这里插入图片描述

IPv6地址配置举例-DHCPv6

在这里插入图片描述

本文章为个人学习记录/笔记,如有错误请指出,如有雷同纯属巧合!!!

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

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

相关文章

tarojs项目启动篇

TaroJS 是一个开放式跨端开发解决方案,使用 React 语法规范来开发多端应用(包括小程序、H5、React Native 等)。它可以帮助开发者高效地构建出在不同端上运行一致的应用。以下是启动 TaroJS 项目(本来就有的旧项目)的步…

OTA远程升级语音芯片”在线更新语音内容的方式有哪几种?分别如何使用及有什么优势?

一:【在板更新】在PCBA上预留语音芯片烧录口,通过配套下载器更新语音芯片中的语音文件。 如何使用,有什么优势? 1.研发设计阶段、调试阶段可以使用下载器更换PCBA上面的语音文件,无需重新购买IC,大大缩短项目周期。 2.产品一样,但是需要出口到不同国…

request编码方式Content-Type以及params和data传参

编码x-www-form-urlencoded Content-Type: application/x-www-form-urlencoded 是一种HTTP头部信息,用于指定请求或响应正文的内容类型。 具体来说: Content-Type 是HTTP头部字段,它指示了随后发送或接收的实体正文的媒体类型。 applicati…

Mybatis框架基础知识

Mybatis 1.1什么是Mybatis 1.MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。 2.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。 3.MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO…

redis的使用场景-热点数据缓存

1.什么是缓存? 把一些经常访问的数据放入缓存中,减少访问数据库的频率,减少数据库的压力,从而提高程序的性能。【内存中存储】 2.缓存的原理 通过上图可以看出程序首先访问缓存,如果缓存中有访问的数据会直接方会给客…

shell-awk文本处理工具

1、awk概述 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描、过滤、统计汇总工作 数据可以来自标准输入也可以是管道或文件 在 linux 上常用的是 gawk,awk …

NSS [NSSRound#18 Basic]easy_rw

NSS [NSSRound#18 Basic]easy_rw 题目描述:弱口令就完事了 入口:/dolphinscheduler 靶机启动需要1分钟。 这题有两种做法。CVE-2023-48796、CVE-2024-23320 先说CVE-2023-48796 Apache DolphinScheduler是一个分布式、易扩展、可视化的工作流任务调度…

【redis】一致性hash算法和hash槽

普通hash取模 直接hash(key)%N , N为机器的数量,但不利于集器扩容或者缩容 一致性hash算法和hash槽 一致性hash算法是在redis 分片中使用,hash槽在redis cluster(集群)中使用 Redis一致性hash:Redis一致性hash是为…

Netdevops入门之Telnetlib语法案例

1、Telnetlib模块: 支持telnet/ssh远程访问的模块很多,常见的有telnetlib、ciscolib、paramiko、netmiko、pexpect,其中telnetlib和ciscolib对应telnet协议,后面3个对应SSH协议。 ①-通过ENSP环境搭建实验环境 ②-基础语法-telnetlib案例1&…

16现代循环神经网络—深度循环与双向循环

目录 1.深度循环神经网络回顾:循环神经网络总结简洁代码实现2.双向循环神经网络隐马尔可夫模型中的动态规划双向模型模型的计算代价及其应用总结代码实现1.深度循环神经网络 回顾:循环神经网络 如何将循环神经网络变深,以获得更多的非线性? 通过添加多个隐藏层的方式来实现…

解决git每次push代码到github都需要输入用户名以及密码

产生原因: 出现以上情况的主要原因在于采用的是 https 方式提交代码, 如果采用的是 ssh 方式只需要在版本库中添加用户的 sha 的key就可以实现提交时无需输入用户名和密码。 解决方法 在终端中使用以下命令删除原先已经建立的http的链接方式&#xff0c…

git实践汇总【配置+日常使用+问题解决】

**最初配置步骤:** git config --global user.name "yournemae" git config --global user.email "yourmail" git config -l ssh-keygen -t rsa -C “xxx.xxxx.EXTcccc.com” git config --global ssh.variant ssh $ git clone git仓库路径 git…

洗地机哪家好?四款洗地机好洗地机的品牌推荐

随着“懒人经济”的兴起,洗地机作为家居清洁领域的革新者,正逐步融入越来越多家庭的生活之中。面对市场上繁多的洗地机品牌与型号,消费者往往感到难以抉择:“洗地机哪个牌子最佳?”为了解答这一疑问,本文精…

KubeSphere介绍及一键安装k8s

KubeSphere介绍 官网地址:https://kubesphere.io/zh/ KubeSphere愿景是打造一个以 Kubernetes 为内核的云原生分布式操作系统,它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用(plug-and-play)的集成&#xff0…

C++ | Leetcode C++题解之第284题窥视迭代器

题目&#xff1a; 题解&#xff1a; template <class T> class PeekingIterator : public Iterator<T> { public:PeekingIterator(const vector<T>& nums) : Iterator<T>(nums) {flag Iterator<T>::hasNext();if (flag) {nextElement Ite…

【MyBatis】基础操作

准备工作 准备数据库表创建 springboot工程&#xff0c;选择引入对应的起步依赖&#xff08;mybatis、mysql驱动、lombok&#xff09;application.properties中引入数据库连接信息创建对应的实体类 Emp&#xff08;实体类属性采用驼峰命名&#xff09;准备Mapper接口 EmpMappe…

【C语言】队列的实现(数据结构)

前言&#xff1a; 相信大家在生活中经常排队买东西&#xff0c;今天学习的队列就跟排队买东西一样&#xff0c;先来买的人就买完先走&#xff0c;也就是先进先出。废话不多说&#xff0c;进入咱们今天的学习吧。 目录 前言&#xff1a; 队列的概念 队列的实现 队列的定义 …

DDR等长,到底长度差多少叫等长?

DDR4看这一篇就够了 - 知乎 (zhihu.com) 【全网首发】DDR4 PCB设计规范&设计要点PCB资源PCB联盟网 - Powered by Discuz! (pcbbar.com) 终于看到较为权威的DDR4等长要求了: !!!! 依据这个要求&#xff0c;H616项目的等长线不合格&#xff1a;

Vue的指令语法、双向绑定、el和data的另一种写法、MVVM模型

目录 1. 指令语法1.1 双向绑定 2. el和data的另一种写法3. MVVM模型 1. 指令语法 用于解析标签&#xff08;包括&#xff1a;标签属性、标签体内容、绑定事件…&#xff09;。Vue中有很多的指令&#xff0c;且形式都是&#xff1a;v-xxxx&#xff0c;此处我们只是拿v-bind举个…

C++第二十八弹---进一步理解模板:特化和分离编译

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1. 非类型模板参数 2. 模板的特化 2.1 概念 2.2 函数模板特化 2.3 类模板特化 2.3.1 全特化 2.3.2 偏特化 2.3.3 类模板特化应用示例 3. …