华为HCIE课堂笔记第十二章 ICMPv6和NDP协议

第十二章  ICMPv6和NDP

12.1 背景

ICMPv6协议用于IPV6协议的消息传递:地址解析、重复地址检测、无状态地址配置、NDP协议、路径MTU发现。

12.2 ICMPv6介绍

ICMPv6的头部字段包含Type字段、Code字段、校验和字段。

消息分为两种:

  1. 查错消息:Type字段(8bit),最高bit位为0的消息,即Type字段取值为0-127。主要的消息种类如下:
    1. 目的不可达,Type为1
    2. 数据包过长,Type为2,用于路径MTU发现
    3. 超时,Type为3
    4. 参数错误,Type 类型为4
  2. 信息消息:Type字段的最高bit位为1的消息,即Type字段取值范围是128-255。常见的消息类型如下:
    1. ICMPv6的请求消息,消息类型为128
    2. ICMPv6的应答消息,消息类型为129

邻居发现(RFC2461和RFC4861)如下:

    1. Type=133,路由器请求(Router Solicitation)
    2. Type=134,路由器公告(Router Advertisement)
    3. Type=135,邻居请求(Neighbor Solicitation)
    4. Type=136,邻居公告(Neighbor Advertisement)
    5. Type=137,重定向  (Redirect)

组播侦听者发现协议(RFC2710RFC3810),组播发现协议有两个版本MLDv1MLDv2,对应IGMPv2IGMPv3,原理相同,使用报文如下:

    1. Type=130,查询消息
    2. Type=131,报告消息
    3. Type=132,离开消息
    4. Type=143,MLDv2报告消息

12.3 ICMPv6报文的应用

12.3.1 Path-MTU发现(路径MTU发现)

IPV6的通信仅在源端进行报文的分片操作,路径中的设备不进行报文分片仅依据基本IPV6头部转发数据,提高转发效率。因此源端需要探测出源端到达目的端的最小MTU值。

原理:源端按照自己的MTU值发送数据给到目的端,沿途经过的设备如果出现报文的大小大于自己的MTU值时,则向源端发送Type类型为2的ICMPv6报文,表示数据包过大,并提供本地的MTU值,直到报文到达目的端,因此源端获取了整个路径上的最小MTU值,按照最小MTU值转发数据。

12.4 NDP协议邻居发现协议

12.4.1 路由器发现(RA和RS报文)

  1. 路由器发现:主机选择链路上的哪个路由器作为缺省网关,通过RA报文通告参数。
  2. 前缀发现:路由器通过RA报文通告自己的前缀,主机根据获取前缀配置IPv6地址。(无状态自动配置)
  3. 参数发现:路由器通过RA报文通告相应的参数:缺省跳数限制,地址配置方式。
  4. RA报文的发送方式:
    1. 周期发送,发送间隔默认200s-600s之间
    2. 触发发送,主机发送RS报文之后,路由器通过RA响应。
  5. 主机通过接收到RA报文之后,产生缺省路由,缺省路由下一跳指向路由器的该链路的链路本地地址。

12.4.2 地址解析

1、PC1访问PC2,首先进行MAC地址解析,发送NS报文(邻居请求报文),目的IP地址为PC2的接口的IPV6的地址对应的被请求节点组播组地址。

2、PC2收到后,确认目的IPv6组播地址是自己加入的组播组,因此相应ICMPv6的NA报文,单播将自己的MAC地址返回给PC1

12.4.3 邻居发现

存在5个状态:

  1. Incomplete(未完成):已经发送了NS报文,但是没有收到NA报文,本地的邻居表中不存在邻居的MAC地址,表项不完整
  2. Reachable状态(可达):收到邻居的NA报文,本地表项完整(包含MAC地址),在可达时间内(默认30s)
  3. Stale状态(陈旧):邻居表项闲置30s没有进行通信,则邻居状态从Reachable状态切换为Stale状态
  4. Delay状态(延迟):在Stale状态本地发送IPV6报文和NS报文给到邻居,进入到Delay状态等待回复。如果收到了NA回复,则再次进入到Reachable可达状态。如果规定时间没有收到NA回复,则进入到Probe状态。
  5. Probe状态(探测):在该状态连续3秒,每秒一次,发送三个NS报文进行邻居探测,如果规定时间有响应,则邻居状态切换为可达状态,如果没有响应,则删除表项。

12.4.5 重复地址检测

任何一个单播地址在使用前都需要进行重复地址检测,此时单播地址的状态是实验地址:

  1. PC1与PC2地址重复,PC1新配置,PC2早配置(PC2的地址已经经过了重复地址检测)
  2. PC1通过NS报文进行探测,NS报文中的源IPV6地址为::,目的IPv6地址为待检测的IPV6地址的被请求节点组播组地址。
  3. 如果存在地址冲突,PC2则会响应该NS报文,通过NA报文告知PC1,报文中源IPV6地址是重复地址(已通过检测的),目的地址所有节点组播地址。PC1收到后,确定接口的地址存在地址冲突
  4. 特殊情况:双方同时使用一个相同地址,两边的地址状态都是实验地址,一边先发发送NS报文,则另一边收到后不会发送NS报文,也不会发送NA,直接放弃使用该地址。(先后问题)

12.4.6 重定向功能

和IPV4情况相同

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

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

相关文章

Java 堆的设计,如何用堆进行排序

Java 学习面试指南:https://javaxiaobear.cn 1、堆的定义 堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。 1、堆的特性 它是完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层…

听GPT 讲Rust源代码--compiler(33)

File: rust/compiler/rustc_middle/src/macros.rs 在Rust源代码中,rust/compiler/rustc_middle/src/macros.rs文件的作用是定义了一些用于宏展开的辅助宏和宏规则。 首先,这个文件导入了许多其他相关的模块,这些模块定义了编译器内部所需要的…

2023年12 月电子学会Python等级考试试卷(三级)答案解析

青少年软件编程(Python)等级考试试卷(三级) 分数:100 题数:38 一、单选题(共25题,共50分) 1. 一个非零的二进制正整数,在其末尾添加两个“0”,则该新数将是原数的?( ) A. 10倍

详解Java中的原子操作

第1章:什么是原子操作 大家好,我是小黑,面试中一个经常被提起的话题就是“原子操作”。那么,到底什么是原子操作呢?在编程里,当咱们谈论“原子操作”时,其实是指那些在执行过程中不会被线程调度…

1329:【例8.2】细胞 广度优先搜索

1329:【例8.2】细胞 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 一矩形阵列由数字0 到9组成,数字1到9 代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。如: 4 10 0234500067 1034560500 2045600671 00000000…

Golang leetcode242有效字符异位词 哈希表map 排序

有效的字母异位词 leetcode242 普通的使用map表进行记录的方法 由于题目规定只有26个小写的英文字符,因此我们直接建立26容量的map func isAnagram(s string, t string) bool {//创建储存记录的map表sTable : make(map[int32]int, 26)tTable : make(map[int32]in…

最新-mybatis-plus 3.5分页插件配置

mybatis-plus 3.5分页插件配置 前提 1.项目不是springboot, 是以前的常规spring项目 2.mp 从3.2升级到3.5,升级后发现原本的分页竟然不起作用了,每次查询都是查出所有 前后配置对比 jar包对比 jsqlparser我这里单独引了包,因为版本太低…

数据结构入门到入土——链表(2)

目录 一,与链表相关的题目(2) 1.输入两个链表,找出它们的第一个公共节点 2.给定一个链表,判断链表中是否有环 3.给定一个链表,返回链表开始入环的第一个节点,若无则返回null 一,…

java字节码

1. 字节码 1.1 什么是字节码? Java之所以可以“一次编译,到处运行”,一是因为JVM针对各种操作系统、平台都进行了定制,二是因为无论在什么平台,都可以编译生成固定格式的字节码(.class文件)供…

机器学习模型可解释性的结果分析

模型的可解释性是机器学习领域的一个重要分支,随着 AI 应用范围的不断扩大,人们越来越不满足于模型的黑盒特性,与此同时,金融、自动驾驶等领域的法律法规也对模型的可解释性提出了更高的要求,在可解释 AI 一文中我们已…

调用三方的注意事项

三方包括什么 狭义上的三方:外部提供的rpc、http接口。广义上的三方:sdk、存储、消息队列、配置中心等外部团队维护的组件。 为什么要格外注意对三方依赖的处理 归属于外部团队甚至外部公司,相比自身更加不可控,容易出现&#…

Monkey:提升 Android 应用稳定性与性能的利器

Monkey 测试工具是一种用于自动化 Android 应用程序的随机事件生成器。它可以帮助开发人员发现应用程序中的错误和漏洞,提高应用程序的稳定性和可靠性。本文将介绍 Monkey 测试工具的基本概念、使用方法以及一些常见的应用场景。 一、Monkey 测试工具的基本概念 1…

案例介绍|钡铼助力2023年全国职业院校技能大赛工业网络智能控制与维护赛项

如今,越来越多的企业开始意识到数字制造和工业物联网已经成为工业自动化中大规模生产的核心驱动力。这其中,工业网络作为基础设施,是实现工厂设备联网与数据采集,建设数字工厂的基础和前提,甚至成为关乎数字工厂能否真…

leetcode47,leetcode491,leetcode40,leetcode90,系列问题包你懂!!!Trie树对于排列问题、组合等结果集去重的应用

leetcode47. 全排列 II,leetcode491. 非递减子序列,leetcode40. 组合总和 II,leetcode90. 子集 II 题目 不过多赘述 思路 实际上这几题是相同的,都是求一个结果集合,然后集合中的元素不能重复。并且每一个元素都满…

给您的应用添加弹窗

概述 在我们日常使用应用的时候,可能会进行一些敏感的操作,比如删除联系人,这时候我们给应用添加弹窗来提示用户是否需要执行该操作,如下图所示: 弹窗是一种模态窗口,通常用来展示用户当前需要的或用户必须…

thinkphp学习02-目录结构、控制器、路由、配置文件

目录结构 www WEB部署目录(或者子目录) ├─app 应用目录 │ ├─controller 控制器目录 │ ├─model 模型目录 │ ├─ ... 更多类库目录 │ │ │ ├─common.php 公共函数文件 │ └─event.ph…

鸿蒙OS:不止手机,是物联网应用开发

鸿蒙开发是华为自主研发的面向全场景的分布式操作系统,旨在将生活场景中各类终端进行整合,实现不同终端设备间的快速连接、资源共享、匹配合适设备、提供流畅的全场景体验。 鸿蒙开发具有以下特点: 面向全场景:鸿蒙系统能够覆盖…

循环平稳信号分析方法在旋转机械设备状态监测和故障诊断中的应用

旋转机械设备是现代社会中不可或缺的重要组成部分,广泛应用于航空航天、汽车制造、电力系统等领域。然而,由于旋转机械设备的复杂性和工作环境的恶劣性,其运行过程中可能出现各种故障,导致设备性能下降甚至发生事故。因此&#xf…

【51单片机】独立按键控制LED灯

不同于上篇文章只用代码控制,这次我们要再加上独立按键一同控制LED灯 目录 独立按键控制LED亮灭:代码实现: 独立按键控制LED状态:代码实现: 独立按键实现二进制LED显示:代码实现: 独立按键控制…

超声波模块的驱动(STM32、51单片机等)

一、前言 本文旨在分享单片机对超声波模块的驱动,测量距离和显示 二、超声波的驱动 1、超声波模块 2、模块性能 (1)TCT40-16T/R1 压电陶瓷超声传感器(通用型) 3、接口定义 Vcc、 Trig(控制端&#xff09…